我使用远程调用在目标地址空间中注入.NET SpyLib。我需要向该窗口的线程发送一条消息,该线程通过GetWindowThreadProcessId
创建该远程进程。
我正在使用Windows 7.不幸的是,它大部分时间都返回0。有时它会提供适当的线程ID(重启Windows后)。
为什么我会使用GetWindowThreadProcessId
获得这种奇怪的行为?
答案 0 :(得分:3)
GetWindowThreadProcessId的MSDN文档包含社区内容部分,其中DDeBen已经在您提出问题前两年回答了您的问题。 :)
GetWindowThreadProcessId返回0并且lpdwProcessId指向该变量 如果句柄hWnd无效,则不会修改。 GetLastError()返回87(ERROR_INVALID_PARAMETER)。
将来可能有助于记住GetLastError()
通常是当您遇到不确定的失败状态时需要在Win32 API中使用的功能。 MSDN通常会给它一个链接,但即使它没有,也可以查看它。 但,请注意托管代码GetLastError()
需要special treatment,否则您最终会出现虚假结果,最终会让您感到困惑。