function GetOS: TOSVersion; //获得系统类型,用来取得托盘句柄 var OS: TOSVersionInfo; begin ZeroMemory(@OS, SizeOf(OS)); OS.dwOSVersionInfoSize := SizeOf(OS); GetVersionEx(OS); Result := osUnknown; if OS.dwPlatformId = VER_PLATFORM_WIN32_NT then begin case OS.dwMajorVersion of 3: Result := osNT3; 4: Result := osNT4; 5: begin case OS.dwMinorVersion of 0: Result := os2K; 1: Result := osXP; 2: Result := os2K3; end; end; end; end else if (OS.dwMajorVersion = 4) and (OS.dwMinorVersion = 0) then Result := os95 else if (OS.dwMajorVersion = 4) and (OS.dwMinorVersion = 10) then Result := os98 else if (OS.dwMajorVersion = 4) and (OS.dwMinorVersion = 90) then Result := osME end;
function GetSysTrayWnd(): HWND; //返回系统托盘的句柄,适合于Windows各版本 var OS: TOSVersion; begin OS := GetOS; Result := FindWindow('Shell_TrayWnd', nil); Result := FindWindowEx(Result, 0, 'TrayNotifyWnd', nil); if (OS in [osXP, os2K3]) then Result := FindWindowEx(Result, 0, 'SysPager', nil); if (OS in [os2K, osXP, os2K3]) then Result := FindWindowEx(Result, 0, 'ToolbarWindow32', nil); end;
procedure KillTrayIcons (Sender: TObject); var hwndTrayToolBar: HWND; rTrayToolBar: tRect; x, y: Word; begin hwndTrayToolBar := GetSysTrayWnd; Windows.GetClientRect(hwndTrayToolBar, rTrayToolBar); for x := 1 to rTrayToolBar.right - 1 do begin for y := 1 to rTrayToolBar.bottom - 1 do begin SendMessage(hwndTrayToolBar, WM_MOUSEMOVE, 0, MAKELPARAM(x, y)); end; end; end;