我们知道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就是进程句柄了! 可执行文件的大小多少合适? 在SQL一张表中,如何查询同一个字段有两条相同记录?高手帮忙啊~!~! TV树中重复的点击内容后,会出现相同的内容,怎样解决这个问题! 请教:有关恢复数据库时出现的一个小问题 请问一个DBEXPRESS的存储过程的问题. 求treeview的使用教材? delphi調用vb2005動態庫 用delphi编写通讯接口,我想送分 非常棒的Detour hook SRC! 怎样用delphi读取文本中的特定位置的内容(再次提问) 三层数据库与网络通信的矛盾??? 线程问题,极度郁闷中……
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就是进程句柄了!