Dưới đây là phương pháp của tôi thử nghiệm với Windows XP và delphi 2010 nếu bạn đang sử dụng một phiên bản của delphi Mà không hỗ trợ unicode làm shure bạn chuyển đổi các chuỗi đọc cho 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.
tôi có thể liệt kê các biểu tượng trong systray Tôi có thể liệt kê các ứng dụng (xử lý, pid, đường dẫn) Tôi có thể kiểm soát vị trí của các biểu tượng. NHƯNG tôi không thể nhận được chú giải công cụ. Đó là những gì tôi muốn biết. –
Bạn có thể đã đề cập rằng trong câu hỏi: "Tôi có thể liệt kê các biểu tượng, nhưng tôi không thể nhận được các chú giải công cụ. Đây là mã tôi đang sử dụng. Xin vui lòng giúp điền vào chỗ trống." Bạn đã đọc liên kết thứ hai tôi đã cung cấp cho bạn chưa? –
Có, tôi đã đọc liên kết thứ hai. Tôi có thể kiểm soát các biểu tượng trong vùng thông báo. Nhưng nó là một câu chuyện khác. Sử dụng cùng một mã nhiều hơn hoặc ít hơn tôi có thể liệt kê các biểu tượng trong khay hệ thống. (bản dịch từ http://www.codeproject.com/KB/applications/ShellTrayInfo.aspx) Nhưng tôi không thể nhận được mẹo công cụ của họ. –