怎么从线程中创建对话框中获得主线程的窗口句柄
我是用的键盘钩子注入dll,dll中有一个对话框资源,是在dll注入成功后在一个新线程中创建的一个非模态对话框.那么怎么在这个非模态对话框中获得其父窗口的HAND;举个例...
我是用的键盘钩子注入dll,dll中有一个对话框资源,是在dll注入成功后在一个新线程中创建的一个非模态对话框.
那么怎么在这个非模态对话框中获得其父窗口的HAND;
举个例子:
我把dll注入到NotePad.exe(记事本)中,然后在再按F10,在键盘过程中就会创建一个线程,在这个线程中创建一个非模态对话框.我就想在这个对话框中获得记事本的窗口句柄HWND.
用FindWindow,和EnumWindow不是我的初衷.
有没有其它方法. 展开
那么怎么在这个非模态对话框中获得其父窗口的HAND;
举个例子:
我把dll注入到NotePad.exe(记事本)中,然后在再按F10,在键盘过程中就会创建一个线程,在这个线程中创建一个非模态对话框.我就想在这个对话框中获得记事本的窗口句柄HWND.
用FindWindow,和EnumWindow不是我的初衷.
有没有其它方法. 展开
3个回答
展开全部
窗口句柄、进程句柄、主线程句柄是不同出概念。
但这些都可以通过枚举获得。如果是主线程句柄,你可以枚举系统中的进程,找到你所需要的进程句柄,然后通过进程句柄获得主线程句柄。
如果是窗口,可以通过枚举系统中所有的窗口,逐个比较,得到你所需要的窗口句柄。当然如果窗口特征很明显,还可以用FindWindow省去逐个枚举的麻烦
但这些都可以通过枚举获得。如果是主线程句柄,你可以枚举系统中的进程,找到你所需要的进程句柄,然后通过进程句柄获得主线程句柄。
如果是窗口,可以通过枚举系统中所有的窗口,逐个比较,得到你所需要的窗口句柄。当然如果窗口特征很明显,还可以用FindWindow省去逐个枚举的麻烦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在DllMain里可以记录进程或者线程的ID(GetCurrentProcessID),然后再枚举窗口(EnumWindows),找到相应的窗口。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询