2017-03-17 5 views
1

Ich muss den Griff von Excel 2016 64bit erhalten.Handle immer 32bit auf 32bit und 64bit Plattformen?

Aber Application.Hwnd gibt eine lange, und es gibt keine Application.HwndPtr.

Ist es zuverlässig?

Wenn es zuverlässig ist, warum Microsoft Application.HInstancePtr anstelle der alten Application.HInstance auf 64bit-Plattformen hinzufügen?

Ist es möglich, einen Fenstergriff größer als 32bit?

Antwort

3

Es ist in Ordnung, das OS stellt sicher, dass ein Fenster-Handle niemals einen 32-Bit-Wert überschreiten kann. Sie können nie mehr als 65535 Fenster auf einem Desktop haben, so dass es ziemlich einfach ist. Dass es so etwas funktioniert, wie Sie in COM-Interop-Deklaration für einen Remotable-Fenstergriff, sichtbar in der WTypes.idl SDK-Datei sehen:

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.. 

Beachten Sie, wie es long für einen Out-of-Process-Anruf ist, ein 32-Bit-Wert.

Ein HINSTANCE ist eine ganz andere Art von Griff, ein Kernel-Griff, es ist sicherlich 64-Bit-Wert unter der Haube. Entspricht der Basisadresse im Speicher des Moduls und musste diese Eigenschaft hinzufügen.

+0

Es gibt auch einige Hilfsfunktionen [hier] (https://www.viva64.com/de/k/0005/), die verwendet werden können, um Griffe zu konvertieren. –

Verwandte Themen