WinHttpGetProxyForUrlの使用


cmm  2010-11-19 15:50:22  No: 102711  IP: [192.*.*.*]

VB6(SP6)でWinHttpGetProxyForUrlを使いたいのですが、パラメータエラーが出てしまいます。
いろいろ調べているのですが現状エラーを修正できません。
どのように修正すべきか御教授いただけますでしょうか

----------
Private Const WINHTTP_ACCESS_TYPE_DEFAULT_PROXY = 0
Private Const WINHTTP_NO_PROXY_NAME = 0
Private Const WINHTTP_NO_PROXY_BYPASS = 0
Private Const WINHTTP_FLAG_ASYNC = &H10000000
Private Const WINHTTP_AUTOPROXY_CONFIG_URL = &H2

Private Declare Function WinHttpOpen Lib "winhttp.dll" _
    (ByVal pwszUserAgent As String, _
     ByVal dwAccessType As Long, _
     ByVal pwszProxyName As String, _
     ByVal pwszProxyBypass As String, _
     ByVal dwFlags As Long) As Long

Private Type WINHTTP_AUTOPROXY_OPTIONS
    dwFlags                 As Long
    dwAutoDetectFlags       As Long
    lpszAutoConfigUrl       As String
    lpvReserved             As Long
    dwReserved              As Long
    fAutoLogonIfChallenged  As Long
End Type

Private Type WINHTTP_PROXY_INFO
    dwAccessType            As Long
    lpszProxy               As Long
    lpszProxyBypass         As Long
End Type

Private Declare Function WinHttpGetProxyForUrl Lib "winhttp.dll" _
    (ByVal hSession As Long, _
     ByVal lpcwszUrl As String, _
     ByRef autoproxyOptions As WINHTTP_AUTOPROXY_OPTIONS, _
     ByRef proxyInfo As WINHTTP_PROXY_INFO) As Boolean

Dim session As Long
session = WinHttpOpen(0, WINHTTP_ACCESS_TYPE_DEFAULT_PROXY, WINHTTP_NO_PROXY_NAME, WINHTTP_NO_PROXY_BYPASS, WINHTTP_FLAG_ASYNC)

Dim autoproxyOptions As WINHTTP_AUTOPROXY_OPTIONS
autoproxyOptions.dwFlags = WINHTTP_AUTOPROXY_CONFIG_URL
autoproxyOptions.dwAutoDetectFlags = 0
autoproxyOptions.lpszAutoConfigUrl = ""
autoproxyOptions.lpvReserved = 0
autoproxyOptions.dwReserved = 0
autoproxyOptions.fAutoLogonIfChallenged = 0

Dim proxyInfo As WINHTTP_PROXY_INFO
proxyInfo.dwAccessType = 0
proxyInfo.lpszProxy = 0
proxyInfo.lpszProxyBypass = 0

WinHttpGetProxyForUrl(session, "http://www.yahoo.co.jp/", autoproxyOptions, proxyInfo)
----------

WinHttpOpenはうまくいきますが、WinHttpGetProxyForUrlでは
Err.LastDllErrorの値が87で「パラメータが間違っています。」になります。
よろしくお願いします。

編集 削除
通りすがり  2011-03-25 23:53:32  No: 102712  IP: [192.*.*.*]

もう解決したかもしれませんが……
WinHttpOpen() の最後の引数は、WINHTTP_FLAG_ASYNCは必要なのですか?
必要であれば、WinHttpSetStatusCallback()にてコールバック関数の設定をしていないためにパラメタエラーになるのではないでしょうか。
また、WINHTTP_FLAG_ASYNCは特にいらないのであれば、0を指定すればいいのではないでしょうか。
間違っていたらごめんなさい。

編集 削除
cmm  2011-10-11 10:52:29  No: 102713  IP: [192.*.*.*]

ありがとうございます。
確かに最後の引数は0でした。

編集 削除