HWND несоответствие типов - PullRequest
1 голос
/ 06 января 2020

Я получаю ошибку 'Несоответствие типов' в строке HWNDSr c = obj IE .HWND ниже, но HWND - это свойство Long, а для HWNDSr c задано значение Long

Sub Test()
Dim objIE As InternetExplorer
Set objIE = New InternetExplorer
Dim HWNDSrc As Long
HWNDSrc = objIE.HWND
SetForegroundWindow HWNDSrc
End Sub

1 Ответ

2 голосов
/ 06 января 2020

SetForegroundWindow - это API-функция Windows, которая принимает и возвращает LongPtr в 64-разрядной версии Office и Long в 32-разрядной версии Office, поэтому необходимо учитывать это с помощью констант условной компиляции. См. этот для справки.

Option Explicit

#If VBA7 Then
    Public Declare PtrSafe Function SetForegroundWindow Lib "user32" (ByVal hwnd As LongPtr) As LongPtr

#Else
    Public Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
#End If


Sub Test()

    Dim objIE As InternetExplorer
    Set objIE = New InternetExplorer

#If VBA7 Then
    Dim HWNDSrc As LongPtr
#Else
    Dim HWNDSrc As Long
#End If

    HWNDSrc = objIE.hwnd

    SetForegroundWindow HWNDSrc

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...