2009-07-03 117 views
0

从Windows句柄中获取对象

如果您知道一个对象类型,并且拥有该对象的句柄(hwnd),是否有方法将它变成一个变量?

例如:

Set myObj = Magic(hwnd)

+0

“对象”没有hWnds,窗户可以。当然,一个对象可能有一个或多个窗口,例如“重”ActiveX控件有一个窗口。 – Bob77 2009-07-03 21:37:59

回答

0

HWNDs只是由操作系统映射到内部对象(它们可以并且可以回收)的数字。你不能真的把它变成任何东西。

你希望myObj在你的例子中做什么?所有用于处理windowss的Windows API都采用HWND。

+0

我真正想要做的是响应另一个应用程序中的控件中的事件。起初,我想我只是读了消息队列(这是什么使我开始在hwnd路上)。但后来我意识到我必须把它放在某种计时器中,并继续阅读队列。所以我想:“好吧,如果我能得到对象,我可以用事件来回应它的事件。” – Oorang 2009-07-03 02:48:01

0

您可能可以使用GetObject()用于COM,但它确实有局限性 - 您无法为其中一个指定特定的hWnd。

例如,您可以使用GetObject(“”,Excel.Application)获取正在运行的Excel实例,但是如果有多个运行实例,则不会知道哪个将返回并且无法指定。