2017-03-17 9 views
1

Excel 2016 64bitのハンドルを取得する必要があります。32ビットと64ビットの両方のプラットフォームでは常にハンドルが32ビットですか?

ただし、Application.Hwndは、長時間を返します。Application.HwndPtrはありません。

それは信頼できるですか?

信頼性が高い場合、マイクロソフトでは、以前のApplication.HInstanceを64ビットプラットフォームで使用する代わりに、Application.HInstancePtrを追加する理由は何ですか?

ウィンドウハンドルが32ビットを超えることは可能ですか?

答えて

3

OSは、ウィンドウハンドルが32ビット値をオーバーフローさせないことを保証します。デスクトップに65535以上のウィンドウを持つことは決してできません。それはこの方法がWTypes.idl SDKファイルに表示あなたは、リモート可能ウィンドウハンドル用のCOM相互運用機能宣言で見ることができるものであり、動作すること:それはアウトプロセス呼び出しのためのlongですか

typedef union _RemotableHandle switch(long fContext) u 
{ 
    case WDT_INPROC_CALL: long hInproc; 
    case WDT_REMOTE_CALL: long hRemote; 
} RemotableHandle; 

typedef [unique] RemotableHandle * wireHWND; 
typedef [unique] RemotableHandle * wireHMENU; 
// etc.. 

注意、 32ビットの値。

HINSTANCEは、カーネルハンドルとはまったく異なる種類のハンドルであり、確かにボンネットの下では64ビット値です。モジュールのメモリ内のベースアドレスに等しいので、このプロパティを追加する必要がありました。

+0

[here](https://www.viva64.com/en/k/0005/)には、ハンドルの変換に使用できるヘルパー関数もいくつかあります。 –

関連する問題