Joh*_*Doe -1 c c++ windows winapi multithreading
做一些dll注入,需要销毁某个窗口.但是,DestroyWindow仅在创建窗口的同一线程调用它时才有效.否则失败,错误5:拒绝访问.
我想也许我可以通过获取it(的线程id DWORD dwTid = GetWindowThreadProcessId)然后将当前线程的线程id设置为它来欺骗它以认为我是创建线程:__writefsdword(0x24, dwTid)但它仍然失败,错误5,拒绝访问.
经过一些谷歌搜索后,我还没有找到答案.
顺便说一句:我知道我可以发送WM_DESTROY,出于好奇和需要解决我想知道怎么做的问题DestroyWindow.
要调用DestroyWindow(),您必须注入在创建窗口的线程的上下文中运行的代码.使用GetWindowThreadProcessId()得到窗口的拥有线程ID,然后使用安装消息钩子成线SetWindowsHookEx(),最后邮寄/发送任何消息的窗口.当钩子回调接收到消息时,它将在窗口的线程的上下文中运行,因此可以调用DestroyWindow()窗口(HWND提供给钩子回调).
| 归档时间: |
|
| 查看次数: |
331 次 |
| 最近记录: |