旧VB程序中WinHttp常量WINHTTP_NO_CLIENT_CERT_CONTEXT数值查询
解决VB中WinHttpSetOption常量替换问题
关键常量数值
- WINHTTP_NO_CLIENT_CERT_CONTEXT:该常量本质对应C语言中的
NULL,在VB中直接用数值0即可。它的作用是告知WinHTTP不要使用任何客户端证书上下文。 - WINHTTP_OPTION_CLIENT_CERT_CONTEXT:你找到的数值
47是正确的,该常量在WinHTTP官方头文件中定义为47。
修正VB函数声明
你当前的函数声明存在参数类型不匹配Win32 API规范的问题,建议调整为:
Declare Function WinHttpSetOption Lib "winhttp.dll" ( _ ByVal hInternet As Long, _ ByVal dwOption As Long, _ lpBuffer As Any, _ ByVal dwBufferLength As Long _ ) As Boolean
调整原因:
- 句柄
hInternet、选项值dwOption、缓冲区长度dwBufferLength都是32位整数,VB的Integer是16位类型,需改用Long避免溢出。 lpBuffer用As Any可以兼容任意类型参数,适配传入0的场景。
正确调用示例
Dim isSuccess As Boolean ' 替换常量为对应数值,实现禁用客户端证书上下文的设置 isSuccess = WinHttpSetOption(hRequest, 47, ByVal 0&, 0)
内容的提问来源于stack exchange,提问作者Martin Holland
相关产品推荐
相关产品推荐

