オブジェクトタイプを知っていて、オブジェクトのハンドル(hwnd)を持っている場合は、それを変数に変換する方法はありますか?
例:
Set myObj = Magic(hwnd)
オブジェクトタイプを知っていて、オブジェクトのハンドル(hwnd)を持っている場合は、それを変数に変換する方法はありますか?
例:
Set myObj = Magic(hwnd)
のHWND OSによって内部オブジェクトにマッピングされている数字だけです(そして、彼らは、リサイクルのですかことができます)。あなたは本当にそれらを何かに変えることはできません。
myObjがあなたの例で何をすると思いますか?ウィンドウを操作するためのすべてのWindows APIはHWNDを使用します。
私が実際にやろうとしているのは、別のアプリケーションのコントロール内のイベントに応答することです。最初はメッセージキュー(これはhwndの道を私を始めたものです)を読んでいると思いました。しかし、私はそれを何らかのタイマーに入れて待ち行列を読まなければならないことに気付きました。だから私は「よく出来た物を私がそれに反応することができるかどうか」と思った。 – Oorang
別のウィンドウのメッセージを取得する場合は、ウィンドウprocをサブクラス化できます。 GWLP_WINDOWPROCでSetWindowLongPtr()を使用します。それはあなたのウィンドウprocを呼び出し、あなたが望むものを処理し、残りを古いウィンドウprocに渡します。参照してください:http://msdn.microsoft.com/en-us/library/ms633585%28VS.85%29.aspx VBから呼び出す方法を理解する必要があります。 –
COM用にGetObject()を使用できますが、制限があります。特定のhWndを指定することはできません。
たとえば、GetObject( ""、Excel.Application)を使用して実行中のExcelインスタンスを取得できますが、実行中のインスタンスが複数ある場合は、返されるインスタンスを特定できません。
"オブジェクト"にはhWndsはありません。もちろん、オブジェクトには1つ以上のウィンドウがある場合があります。たとえば、「重い」ActiveXコントロールにはウィンドウがあります。 – Bob77