当有某进程的ID或此进程某窗口的句柄handle时,如何得到此进程的application的句柄handle?
我用FindWindow找到某个窗口的句柄,但是却无法得到此窗口的程序句柄“application.handle”。如何解决?谢谢 问题点数:100、回复次数:6Top
1 楼slwqw(四大名捕之追杀令)回复于 2002-06-13 22:51:32 得分 0
HINSTANCE hInst=GetWindowLong(WinHandle,GWL_HINSTANCE);
返回值就是Application->Handle.Top
2 楼webwalk(小雄)回复于 2002-06-13 23:19:16 得分 0
我用你的意思实现下面代码,并不成功。
showmessage('application.handle ' + IntToStr(application.Handle));
hInst:= GetWindowLong(handle,GWL_HINSTANCE); //**********//
showmessage('hInst ' + IntToStr(hInst));
谢谢你的好意。谁还能帮我?Top
3 楼slwqw(四大名捕之追杀令)回复于 2002-06-13 23:34:10 得分 0
对不起,上面只是个建议.
下面代码我已经测试过了.
HWND AppHandle;
AppHandle=GetWindow(Findhandle,GW_OWNER);
我试过了,跟Application.Handle完全一样.Top
4 楼slwqw(四大名捕之追杀令)回复于 2002-06-13 23:39:56 得分 100
另:我测试时是直接使用MainForm->Handle作测试的,而你是用FindWindow的返回值,因此可能必须通过循环才能得到最终的值
HWND AppHandle,Temp;
Temp=GetWindow(FindHandle,GW_OWNER);
while(Temp!=NULL)
{
AppHandle=Temp;
Temp=GetWindow(Temp,GW_OWNER);
}Top
5 楼webwalk(小雄)回复于 2002-06-14 00:06:36 得分 0
谢谢。真的可以。另外我想问问,你是如何知道那么多关于windows的API的,能说下吗?Top
6 楼slwqw(四大名捕之追杀令)回复于 2002-06-14 00:12:37 得分 0
经常翻一翻MSDN就熟悉了;
Top




