2012-06-22 17 views
-2

我想知道是否有任何方式通过C#或C++发送虚假或以其他方式欺骗程序认为它有重点?我在想,你可以使用SendMessage/PostMessage发送给它的消息,这会让它陷入焦点。C#或C++ - 创建假焦点?

+3

你想解决什么问题? – peterchen

回答

3

有没有保证的方法欺骗它认为它有焦点,因为有多种方式可以检查它是否有焦点。例如,它可能会检查WM_SETFOCUS,然后在收到WM_KILLFOCUS时检查它是否失焦。因此,在这种情况下,您可以通过用窗口钩子截取所有WM_KILLFOCUS消息来欺骗它。

但是,它也可能是通过调用GetFocus来检查是否有焦点。因此,在这种情况下欺骗它,您将需要绕道GetFocus并假冒返回值。你可以尝试这两种方法,他们可能会工作,他们可能不会,但我不希望他们可靠地工作。

+0

+1用于指出可能出错的地方。此外,也许不太可能,但应用程序也可以使用GetGUIThreadInfo(它也返回当前活动/重点线程),GetForegroundWindow或任何几个返回当前,活动或重点HWND或线程的Windows API。 – BrendanMcK

+0

感谢您的信息,伙计们!我现在正在制作一个原型,尽管我不得不逐个测试每个原型以查看程序是否响应。再次感谢! – user1440308

0

我迷上了WM_NCACTIVATE让游戏知道它仍然是焦点。它在我工作的两场比赛中运行良好。