Windows API:查找邮件发件人的进程(WM_COPYDATA)

时间:2013-11-28 01:34:06

标签: winapi ipc sendmessage wm-copydata

我创建了一个SSH代理(类似于PuTTY的pageant.exe),它具有预定义的协议,并且通过WM_COPYDATA将身份验证请求发送到代理窗口。

我现在想要显示哪个进程请求了身份验证。 为此,我需要知道哪个进程发送了WM_COPYDATA。

如上所述,我可以更改协议(例如,将进程ID与消息本身一起发送),因为它是预定义的。

1 个答案:

答案 0 :(得分:4)

您收到的wParam 打算发送邮件的窗口的窗口句柄。 (但请参阅下面的说明。)

由此,您可以使用GetWindowThreadProcessID获取进程ID,然后可以将其用作GetProcessImageFileName的输入以检索进程的名称。

注意:正如@RemyLeBeau在下面的评论中指出的那样,这当然基于wParam实际上是发送WM_COPYDATA消息的窗口所提供的WM_COPYDATA。发送{{1}}本身并不强制要求。

如果不是,那你就不走运了;我没有办法追溯到实际发送消息的过程,而不是这样。您最多可以使用IsWindow确认它是一个实际的窗口句柄,但它不会确认它实际上是发送消息的窗口。

相关问题