delphi 如何通过托盘图标,获取进程PID
下面给出获取所有托盘图标的hint,但是要怎么样才可以通过这个获取到对应的进程PID呢,高手请帮忙 ,小弟感激不尽!
function TrayHWnd: HWND;
var
h,hTmp: HWND;
begin
h := FindWindow('Shell_TrayWnd', nil);
h := FindWindowEx(h, 0, 'TrayNotifyWnd', nil);
hTmp := FindWindowEx(h, 0, 'SysPager', nil);
if hTmp <> 0 then h := hTmp;
hTmp := FindWindowEx(h, 0, 'ToolbarWindow32', nil);
if hTmp <> 0 then h := hTmp;
Result := h;
end;
{提取列表}
procedure TForm1.Button1Click(Sender: TObject);
var
h: HWND;
count,size,num: Cardinal;
pid, ph: Cardinal;
p: Pointer;
icoBtn: TTBButton;
buf: array[0..255] of WideChar;
i: Integer;
item: TListItem;
begin
h := TrayHWnd;
count := SendMessage(h, TB_BUTTONCOUNT, 0, 0);
size := SizeOf(TTBButton);
GetWindowThreadProcessId(h, pid);
ph := OpenProcess(PROCESS_VM_READ, False, pid);
for i := 0 to count - 1 do
begin
SendMessage(h, TB_GETBUTTON, i, DWORD(p));
ReadProcessMemory(ph, p, @icoBtn, size, num);
ReadProcessMemory(ph, Pointer(icoBtn.iString), @buf, Length(buf)*SizeOf(buf[0]), num);
item := ListView1.Items.Add;
item.Caption := buf;
end;
CloseHandle(ph);
Button2.Enabled := True;
Button3.Enabled := True;
end;
...全文
相关推荐
delphi 实现进程自动监控、重启,非控件实现托盘程序
delphi 实现进程自动监控、重启,非控件实现托盘程序,在winXp、Win2000,win7中测试通过。
delphi获取windows右下角任务栏图标信息
今天在群里,看有人问怎么获取windows右下角任务栏图标信息。win7 x64 测试通过。
任务管理器杀不了的系统进程如何关闭
详细讲解了任务管理器杀不了的系统进程如何关闭
政府科技管理者如何高效评估科技成果的市场转化潜力?.docx
科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。
产业园区运营负责人如何实现园区内创新资源的智能配置?.docx
科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。


Windows SDK/API
