プロキシ設定を変更する簡単なプログラム、プロキシを有効/無効にするプログラムを作成しようとしています。ただし、設定を変更するのは初回のみです。
フォーラムとインターネットを検索しましたが、運がありません。
私はプログラムを 1 回動作させることができましたが、ToggleProxy() 関数を 2 回目に呼び出すと、最初にそれに応じてレジストリが変更され、次に wininet.dll が呼び出されて Internet Explorer の設定が更新されると、古い値は次のようになります。レジストリに戻します。
そのため、プロキシを変更して IE 設定を更新すると、すべて正常に動作しますが、2 回目を変更しようとすると、最初の呼び出しから設定が戻されます。
何かを閉じるかクリアする必要がありますか? アプリケーションを閉じて再度起動すると、もう一度機能します。
wininet.dll/InternetSetOption は何らかの形で最初の呼び出しを保存していますか?
以下の Dll 宣言と ToggleProxy() 関数を添付します。
'Refresh Internet Options for Webbrowsers
Public Declare Auto Function InternetSetOption Lib "wininet.dll" (hInternet As IntPtr, dwOption As Integer, lpBuffer As IntPtr, dwBufferLength As Integer) As Boolean
Public Const INTERNET_OPTION_SETTINGS_CHANGED = 39
Public Const INTERNET_OPTION_REFRESH = 37
'Toggle the Proxy On/Off
Public Sub ToggleProxy()
'Declare temp variable as Integer
Dim setValue As Integer
' If EnableProxy regkey is 1, set setvalue to 0, else set to 1.
If ProxyRegKey = "1" Then
setValue = "0"
Else
setValue = "1"
End If
' Change value in EnableProxy regkey to the value set in setValue
Dim autoshell = My.Computer.Registry.CurrentUser.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Internet Settings", True)
'Set Value fo EnableProxy according to setValue
autoshell.SetValue("ProxyEnable", setValue)
autoshell.Close()
MessageBox.Show("Value is:" & setValue)
'Re-read the proxy regkey.
ReadProxyRegKey()
'Refresh Internet Settings
InternetSetOption(IntPtr.Zero, INTERNET_OPTION_SETTINGS_CHANGED, IntPtr.Zero, 0)
InternetSetOption(IntPtr.Zero, INTERNET_OPTION_REFRESH, IntPtr.Zero, 0)
End Sub
すべての助けに感謝する、単純なことのように思えますが、私は夢中になります。よろしく ジョアキム