我们知道windowfrompoint可以用来获得当前鼠标指向的控件的句柄,那么我如何…… 那么我如何通过这一句柄简单、快捷的得到该控件所在的程序(不一定获得焦点)的句柄呢?大家帮帮忙忙! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 //参考如下代码~~uses PsAPI;procedure TForm1.Button2Click(Sender: TObject);var vBuffer: array[0..MAX_PATH] of Char; vProcessId: DWORD; vProcess: THandle; vHandle: THandle;begin vHandle := WindowFromPoint(Mouse.CursorPos); GetWindowThreadProcessId(vHandle, @vProcessId); vProcess := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, False, vProcessId); try GetModuleFileNameEx(vProcess, 0, vBuffer, SizeOf(vBuffer)); finally CloseHandle(vProcess); end; Caption := vBuffer;end; 把鼠标放在这个程序的标题栏上,就用WindowFormPoint就可以了。 用GetParent取得他的父窗口的句柄了(或者使用EnumWindows,EnumChildWindows函数自己去判断了),然后使用getwindowtext获取应用程序的标题就行了,如你要知道这个程序在硬盘上的具体位置,可以参考2楼的代码 晕,我只要句柄!!比如有一个应用程序(可能没有焦点),上面有一个按钮。如果我们用WindowFormPoint指向那个按钮的时候,得到的是按钮的句柄而不是该应用程序的句柄!我的问题就是如何通过该按钮的句柄简单、快捷的得到该程序的句柄。 晕,我只要句柄!!比如有一个应用程序(可能没有焦点),上面有一个按钮。如果我们用WindowFormPoint指向那个按钮的时候,得到的是按钮的句柄而不是该应用程序的句柄!我的问题就是如何通过该按钮的句柄简单、快捷的得到该程序的句柄。===========================================================================zswang(伴水清清)(专家门诊清洁工) 的代码已经说得很清楚了,用WindowFromPoint得到窗口句柄,由GetWindowThreadProcessId得到窗口所属的PID,再OpenProcess就是进程句柄了! DataUtils不是delphi自带函数么··为什么我会提示找不到 WinHttp.WinHttpRequest获取中文乱码 record创建链表的问题 access这个数据库,如果用delphi-ado编写一个软件 在98下运行DOS命令该怎样运行呢? 求icon to any 注册码 再线等待,请求支援!!! 怎样用query返回一个数据库中的一个整数值并将它付给整形变量art???? 文件拷贝 窗体最下化时触发的事件是什么? 三层数据库与网络通信的矛盾??? 线程问题,极度郁闷中……
uses PsAPI;procedure TForm1.Button2Click(Sender: TObject);
var
vBuffer: array[0..MAX_PATH] of Char; vProcessId: DWORD;
vProcess: THandle;
vHandle: THandle;
begin
vHandle := WindowFromPoint(Mouse.CursorPos);
GetWindowThreadProcessId(vHandle, @vProcessId);
vProcess := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,
False, vProcessId);
try
GetModuleFileNameEx(vProcess, 0, vBuffer, SizeOf(vBuffer));
finally
CloseHandle(vProcess);
end;
Caption := vBuffer;
end;
zswang(伴水清清)(专家门诊清洁工) 的代码已经说得很清楚了,用WindowFromPoint得到窗口句柄,由GetWindowThreadProcessId得到窗口所属的PID,再OpenProcess就是进程句柄了!