调用 "wininet.dll" InternetSetOptionA 设置代理不成功
本帖最后由 auto 于 2012-4-15 08:49 编辑参考VB设置代理的代码转成换AU3,总是失败。无法显示网页。
如修改注册设置代理却是可以的,不问题出在哪
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include<IE.au3>
Global $ProxyServer ='http=113.106.194.220:80'
Global Const $tagWINHTTP_PROXY_INFO = "DWORD dwAccessType;ptr lpszProxy;ptr lpszProxyBypass;"
Global Const $INTERNET_OPTION_PROXY = 38
Global Const $INTERNET_OPTION_SETTINGS_CHANGED = 39
Global Const $INTERNET_OPEN_TYPE_DIRECT = 1
Global Const $INTERNET_OPEN_TYPE_PROXY = 3
$xl = GUICreate("test", 1000, 500) ;
GUISetState(@SW_SHOW)
$ProxyInfo = ProxyInfoCreate($INTERNET_OPEN_TYPE_PROXY, $ProxyServer, "") ;
DllCall("wininet.dll", 'long', 'InternetSetOption', "long", 0, 'long', $INTERNET_OPTION_PROXY, 'ptr', DllStructGetPtr($ProxyInfo), 'int', DllStructGetSize($ProxyInfo))
DllCall("wininet.dll", 'long', 'InternetSetOption', 'long',0, 'long', $INTERNET_OPTION_SETTINGS_CHANGED, 'ptr',0, 'int', 0)
Sleep(1000)
$oIE = _IECreateEmbedded()
$GUIActiveX = GUICtrlCreateObj($oIE, 0, 0, 1100, 500)
$hOpen = GUICtrlGetHandle($GUIActiveX)
$R = _IENavigate ($oIE, "http://ip.chinaz.com",0)
Sleep(5000)
$R = _IENavigate ($oIE, "http://www.cz88.net/ip/viewip468.aspx",0)
While 1
Sleep(10)
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
Exit
Case $msg = $GUI_EVENT_MINIMIZE
Exit
Case $msg = $GUI_EVENT_MAXIMIZE
Exit
EndSelect
WEnd
Func ProxyInfoCreate($dwAccessType, $sProxy, $sProxyBypass)
Local $tWINHTTP_PROXY_INFO = ; wchar proxybypasschars[' & StringLen($sProxyBypass)+1 & ']')]
DllStructSetData($tWINHTTP_PROXY_INFO, "dwAccessType", $dwAccessType)
If StringLen($sProxy) Then DllStructSetData($tWINHTTP_PROXY_INFO, "lpszProxy", DllStructGetPtr($tWINHTTP_PROXY_INFO, 'proxychars'))
If StringLen($sProxyByPass) Then DllStructSetData($tWINHTTP_PROXY_INFO, "lpszProxyBypass", DllStructGetPtr($tWINHTTP_PROXY_INFO, 'proxybypasschars'))
DllStructSetData($tWINHTTP_PROXY_INFO, "proxychars", $sProxy)
DllStructSetData($tWINHTTP_PROXY_INFO, "proxybypasschars", $sProxyBypass)
Return $tWINHTTP_PROXY_INFO
EndFunc InternetSetOptionA能用wchar吗,不太清楚,貌似带A的api都是ansi的,wchar好像对应的是unicode吧 本帖最后由 auto 于 2012-4-15 08:49 编辑
回复 2# netegg
其实网上大部分代码是使用InternetSetOption来设置的,
InternetSetOptionA好像也可以吧,VB使用nternetSetOptionA是可以的
结构部分是参考其他的人写的,有个http也是这么写的,却可以单独使用代理
修改为InternetSetOption也不成功。 本帖最后由 auto 于 2012-4-15 09:10 编辑
其实嵌套结构也是借用其他人写的,想不到,AU3需要这样写才可以的,别的语言不需要
引用“
嵌套的数据结构(数据结构中包含数据结构)你必须重新定义嵌套的数据结构. 举个例子,一个数据结构包含两个指针数据结构("long;long") ,必须声明为 "long;long;long;long". 最前面的两个 long 值相当于第一个指针数据结构,后面的两个值相当于第二个数据结构.(thesnoW:比C更复杂了...)”
页:
[1]