2009-11-19 122 views
2

我知道这可能是一个长镜头,所以请原谅我,因为我对COM没有太多了解。使用窗口句柄获取IUKOWN

基本上我想要做的是获取指向正在运行的应用程序的IUnknown接口的指针,问题是我知道的关于应用程序的唯一的事情是它的主窗口句柄。

这可能吗?

回答

3

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

1

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