- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在使用远程调用在目标地址空间中注入(inject) .NET SpyLib。我需要向通过 GetWindowThreadProcessId
创建该远程进程的窗口线程发送消息。
我在 Windows 7 上工作。不幸的是,它大部分时间都返回 0。有时它会提供适当的线程 ID(在重新启动 Windows 之后)。
为什么我在使用 GetWindowThreadProcessId
时会出现这种奇怪的行为?
最佳答案
GetWindowThreadProcessId 的 MSDN 文档有一个社区内容部分,DDeBen 在您提出问题之前两年就已经在其中回答了您的问题。 :)
GetWindowThreadProcessId returns 0 and the variable pointed to by lpdwProcessId is not modifed if the handle hWnd is not valid. GetLastError() returns 87 (ERROR_INVALID_PARAMETER).
将来,当您不确定故障状态时,记住 GetLastError()
通常是您需要在 Win32 API 中使用的函数可能会有所帮助。 MSDN 通常会给出一个链接,但即使没有,也可以检查一下。 但是,请注意在托管代码中 GetLastError()
需要 special treatment否则您最终会得到虚假的结果,最终只会让您感到困惑。
关于.net - 为什么 GetWindowThreadProcessId 有时会返回 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5827954/
我正在使用远程调用在目标地址空间中注入(inject) .NET SpyLib。我需要向通过 GetWindowThreadProcessId 创建该远程进程的窗口线程发送消息。 我在 Windows
在控制台应用程序中使用以下类并至少运行一个记事本实例时,GetWindowThreadProcessId 会正确返回一个非零线程 ID。但是,如果 Windows 服务中包含相同的代码,GetWind
我正在上钩GetWindowThreadProcessId()使用以下代码成功。 现在我想检查dwProcessID参数是否对应于确定进程的ID,并且在肯定情况下阻止执行原始函数: Result :=
我有一个设置应用程序,如果用户两次单击相同的设置,他们会收到弹出消息“另一个设置实例已在运行”。单击该消息上的“确定”后,我想将焦点放回正在运行的现有安装窗口。我目前有以下代码: if("setup.
我正在尝试使用 ctypes.windll.user32.GetWindowThreadProcessId 获取 proccessId,但打印与任务管理器中看到的 PID 不匹配。这是代码 impor
我是一名优秀的程序员,十分优秀!