使用窗口句柄获取IUnkown

时间:2009-11-19 00:20:54

标签: c# .net com iunknown

我知道这可能是一个很长的镜头,请原谅我,因为我对COM的了解不多。

基本上我要做的是获取指向正在运行的应用程序的IUnknown接口的指针,问题是我对该应用程序唯一了解的是它的主窗口句柄。

这可能吗?

2 个答案:

答案 0 :(得分:3)

执行此操作的“标准”方法是使用AccessibleObjectFromWindow Win32 API。也就是说,实际上支持这一点并不多,所以你的里程可能会有所不同。您将PInvoke发送到AccessibleObjectFromWindow,传递HWND,然后在您返回的IntPtr上使用Marshal.GetObjectForIUnknown。

答案 1 :(得分:1)

有时是的,如果窗口在您的进程中(否则另一个进程中的指针对您来说毫无意义),并且窗口的编写器明确告诉您它正在等待消息并返回一个接口。大多数情况下,人们通常不会在没有必要的情况下编写黑客文件,并且发送编写者不知道的消息会产生不可预测的行为。