--- ---

The task bar is a top level window which has class name "Shell_TrayWnd". We can find it using the Windows FindWindow API function as follows:

    function TaskbarHandle: THandle;
    begin
      Result := FindWindow('Shell_TrayWnd', nil);
    end;

The system tray is a child window of the task bar which has class name "TrayNotifyWnd". Because it's a child window, we need to use the FindWindowEx Windows API function, passing the task bar's handle as the parent:

    function TrayHandle: THandle;
    begin
      Result := FindWindowEx(TaskbarHandle, 0, 'TrayNotifyWnd', nil);
    end;

You can find both these routines (TaskbarHandle & TrayHandle) in the DelphiDabbler Code Snippets Database.