2016-08-19 6 views
0

아래에 표시된 VBA 코드 스 니펫은 Win32를 통해 열려있는 모든 창을 열거하는 데 효과적입니다 (Google 덕분에). 간결함을 위해 EnumCallBack() 함수를 생략했습니다.Win32에 전달할 때 VBA 및 함수 연산자

내가 가진 질문은 & 연산자가 EnumWindows 호출에서 숫자 상수 뒤에 나타납니다. EnumWindows가 포인터를 두 번째 인수로 기대한다는 것을 알고 있으므로 상수 다음에 & 연산자가 상수의 주소를 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 LongDim var&은 동일합니다. EnumWindows 함수의 두 번째 매개 변수는 Long입니다.

다음은 약어와 함께 일반적인 유형 목록입니다. 주소와 관련된 혼란을

Public Sub WhichType() 
    Dim VarInteger% 
    Dim VarLong& 
    Dim VarSingle! 
    Dim VarDouble# 
    Dim [email protected] 
    Dim VarString$ 

    'Show the type 
    Debug.Print TypeName(VarInteger) 
    Debug.Print TypeName(VarLong) 
    Debug.Print TypeName(VarSingle) 
    Debug.Print TypeName(VarDouble) 
    Debug.Print TypeName(VarCurrency) 
    Debug.Print TypeName(VarString) 
End Sub 
+0

감사! 나는 벗어났다. .. Jeff – jdrago

관련 문제