gpt4 book ai didi

c++ - 如何从远程线程 DestroyWindow?

转载 作者:行者123 更新时间:2023-11-30 18:24:02 33 4
gpt4 key购买 nike

进行一些dll注入(inject)并需要销毁某个窗口。但是,DestroyWindow 仅当创建窗口的同一线程调用它时才起作用。否则,它将失败并显示错误 5:访问被拒绝。

我想也许我可以通过获取它的线程ID(DWORD dwTid = GetWindowThreadProcessId)来欺骗它认为我是创建线程,然后将当前线程的线程ID设置为它: __writefsdword(0x24, dwTid) 但它仍然失败,错误为 5,访问被拒绝。

经过一番谷歌搜索后,我还没有找到答案。

顺便说一句:我知道我可以发送WM_DESTROY,但是,出于好奇和解决问题的需要,我想知道如何使用DestroyWindow来做到这一点。

最佳答案

要调用DestroyWindow(),您必须注入(inject)在创建窗口的线程上下文中运行的代码。使用 GetWindowThreadProcessId() 获取窗口所属线程 ID,然后使用 SetWindowsHookEx() 将消息 Hook 安装到该线程中,最后将任何消息发布/发送到窗口。当钩子(Hook)回调收到消息时,它将在窗口线程的上下文中运行,因此可以在窗口上调用DestroyWindow()(HWND被提供给钩子(Hook)回调)。

关于c++ - 如何从远程线程 DestroyWindow?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45853173/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com