2016-08-19 4 views
0

以下に示すVBAコードスニペットは、Win32を介して開いているすべてのウィンドウを列挙するのに最適です(Googleに感謝します)。私は簡潔にするためにEnumCallBack()関数を省略しました。Win32に渡すときのVBAおよび関数演算子

EnumWindows呼び出しで数値定数の後に&演算子が表示されるという質問があります。私はEnumWindowsが2番目の引数としてポインタを期待しているので、定数の後に&演算子がWin32に定数のアドレスを渡していると推測しています。私はウェブをちょっと調べたが、これに関する文書は見つけられなかった。ちょうど私の感情を確認したいと思った。 &はVBAカスタムType..End Typeのアドレスも渡すと思いますか?

Private Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Boolean 
Private ProcWinHandle As Long 
Private ProcessHandle As Long 

Public Function GetProcessWindowHandle(ProcID As Long) As Long 
    ProcessHandle = ProcID 
    ProcWinHandle = 0 
    Dim retval As Long 
    retval = EnumWindows(AddressOf EnumCallBack, 0&) 
    GetProcessWindowHandle = ProcWinHandle 
End Function 
+0

関連する混乱については、https://msdn.microsoft.com/en-us/library/ee478101(v=vs.84).aspxを参照してください。変数の文字サフィックスは次のとおりです。https ://msdn.microsoft.com/en-us/library/s9cz43ek.aspx – cyboashu

答えて

0

&Longタイプの短縮形です。 Dim Var as LongおよびDim var&は同等です。また、EnumWindows関数がLongを2番目のパラメータとして受け取ることがわかります。

一般的なタイプの略語のリストです。

+0

ありがとう!私はオフになっていた...ジェフ – jdrago

関連する問題