我正在查看Microsoft KB318804中的示例,但他们使用“当前”应用程序的 threadId !!!我有一些可用的 C++ 代码,但我们必须重写它,而且我更愿意在 C# 中重写它。它所做的一件事是像这样获取目标应用程序的 threadId:
uint lastId = GetWindowThreadProcessId(targetHandle, IntPtr.Zero);
不,GetCurrentThread 不是正确的调用,因为我正在获取远程应用程序的线程 ID,这是我们今天所做的以及我们想要做的。targetHandle 是该远程应用程序的句柄。
我将此 lastId 转换为 int 并尝试连接 C# 代码,但 SetWindowsHookEx 返回 0 并失败。只有 AppDomain.GetCurrentThreadId() 似乎有效(即使它已被弃用,替换虽然也不起作用)。
那我必须使用C++代码吗?或者有没有办法让它在 C# 中工作?
目前,我们在 C++ 中向其他应用程序注册了 hookhandler 并获取事件。