我一直在使用this answer中的相同代码,并在每次搜索互联网时找到相同的代码,但我总是得到一个
类型不匹配
http://localhost:3000/myVideo.mp4
中的FindWindow
函数。还试过this,下载了示例并得到了同样的错误。任何想法为什么?我使用的是64位版本。谢谢。
答案 0 :(得分:3)
在64位版本FindWindow
中,返回LongPtr
而不是Long
(32位)。
Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, _
ByVal lpWindowName As String _
) As LongPtr '<-- FindWindow returns a LongPtr (for 64bit)
因此
hWnd = FindWindow(vbNullString, Me.Caption)
失败,因为hWnd
中的Long
被AddIcon()
声明为LongPtr
,但应该是#If VBA7 Then
Dim hWnd As LongPtr
#Else
Dim hWnd As Long
#End If
。
您可以使用
Long
根据WinAPI函数的声明,确保它适用于32位和64位版本。
注意:您可以检查声明为LongPtr
的其他变量是否也需要更改为Savon.client(
endpoint: "http://XXX.XXX.XXX.1:15043/enmac/SOAP",
namespace: '',
convert_request_keys_to: :camelcase,
env_namespace: 'SOAP-ENV',
namespace_identifier: nil,
log: true,
log_level: :info,
pretty_print_xml: true,
read_timeout: 90,
open_timeout: 90,
headers: {
"Accept-Encoding" => "gzip"
}
)
。因此,只需查看64位声明以及函数返回的内容。