Aquí se prueba mi método con Windows XP y Delphi 2010 si está utilizando una versión de Delphi wich no admite Unicode marca Shure convertir las cadenas de leer como ANSI
uses CommCtrl;
function TForm1.GetIconsCount: Integer;
begin
Result := SendMessage(FindTrayToolbar, TB_BUTTONCOUNT, 0, 0);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ListTips;
end;
function TForm1.FindTrayToolbar: HWND;
begin
Result := FindWindow('Shell_TrayWND', nil);
Result := FindWindowEx(Result, 0, 'TrayNotifyWnd', nil);
Result := FindWindowEx(Result, 0, 'SysPager', nil);
Result := FindWindowEx(Result, 0, 'ToolbarWindow32', nil);
end;
procedure TForm1.ListTips;
var
dwTray: DWORD;
wndTray: HWND;
hTray: THandle;
remoteTray: Pointer;
tdata: TTBBUTTON;
i: Integer;
btsread:DWORD;
str:Pchar;
begin
wndTray := FindTrayToolbar;
GetWindowThreadProcessId(wndTray, @dwTray);
hTray := OpenProcess(PROCESS_ALL_ACCESS, false, dwTray);
if hTray <> 0 then
begin
remoteTray := VirtualAllocEx(hTray, nil, Sizeof(tdata), MEM_COMMIT,
PAGE_READWRITE);
for i := 0 to GetIconsCount - 1 do
begin
SendMessage(FindTrayToolbar,TB_GETBUTTON,wparam(i),lparam(remotetray));
ReadProcessMemory(hTray,remotetray,@tdata,sizeof(tdata),btsread);
GetMem(str,255);
ReadProcessMemory(hTray,Ptr(tdata.iString),str,255,btsread);
ListBox1.Items.Add(str);
end;
end
else ShowMessage('Could not locate tray icons');
end;
end.
puedo enumerar los iconos de the systray Puedo enumerar la aplicación (handle, pid, path) Puedo controlar la posición de los íconos. PERO no puedo obtener la información sobre herramientas. Eso es lo que me gustaría saber. –
Podría haber mencionado eso en la pregunta: "Puedo enumerar los iconos, pero no puedo obtener la información sobre herramientas. Aquí está el código que estoy usando. Ayúdenme a completar los espacios en blanco". ¿Has leído el segundo enlace que te di? –
Sí, leí el segundo enlace. Puedo controlar los iconos en el área de notificación. Pero esa es otra historia. Usando el mismo código más o menos puedo enumerar los iconos en la bandeja del sistema. (una traducción de http://www.codeproject.com/KB/applications/ShellTrayInfo.aspx) Pero no puedo obtener su información sobre herramientas. –