起動中のIEのプロキシ設定の変更

解決


ちひろ  2013-04-02 04:00:55  No: 44175

こんにちは、いつもお世話になります。

すでに起動しているIEについて、
プロキシのON/OFFの切り替えを行いたいです。

そこでレジストリの書き換え→WM_SETTINGCHANGEブロードキャストしたところ、
レジストリの書き換えは成功(レジストリエディタで確認)したものの、
起動中のIEのプロキシ設定は書き換わりませんでした。
(http://www.ugtop.com/spill.shtmlで確認)

そこで、一度、インターネットオプション画面を開いて閉じると、
反映される状況です。

ブロードキャストの仕方がまずいのでしょうか?
アドバイス頂けると助かります。よろしくお願いいたします。

開発環境:DelphiXE3 , Win7(64)
確認環境:Win7(64)-IE9 ,WinXp(32)-IE8
ターゲット:32ビット、64ビットとも。

//━━━プロキシON━━━
procedure TForm2.Button1Click(Sender: TObject);
var
  StrReg : String;
  reg    :  Tregistry;
begin
  StrReg := '\Software\Microsoft\Windows\CurrentVersion\Internet Settings';
  reg    :=   Tregistry.Create;
  reg.Rootkey  :=  HKEY_CURRENT_USER;
  if  reg.OpenKey(StrReg, false )then
  begin
    reg.WriteInteger('ProxyEnable',1);
    reg.WriteString('ProxyServer','123.123.123.132:8080');
    reg.WriteString('ProxyOverride','<local>');
    reg.CloseKey;
  end;
  reg.Free;
  SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, Integer(PChar(StrReg)));
end;

//━━━プロキシOFF━━━
procedure TForm2.Button2Click(Sender: TObject);
var
  StrReg : String;
  reg    :  Tregistry;
begin
  StrReg := '\Software\Microsoft\Windows\CurrentVersion\Internet Settings';
  reg    :=   Tregistry.Create;
  reg.Rootkey  :=  HKEY_CURRENT_USER;
  if  reg.OpenKey(StrReg, false )then
  begin
    Reg.WriteInteger('ProxyEnable',0);
    Reg.DeleteValue('ProxyServer');
    Reg.DeleteValue('ProxyOverride');
    reg.CloseKey;
  end;
  reg.Free;
  SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, Integer(PChar(StrReg)));
end;


ちひろ  2013-04-02 07:28:54  No: 44176

StrReg&#160;:=&#160;'Internet&#160;Settings';&#160;
とすべきなようですね。
しかし、変更は反映されませんでした。


ちひろ  2013-04-02 07:42:03  No: 44177

化けてしまいましたので訂正します。
StrReg := 'Internet Settings';
SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, Integer(PChar(StrReg)));
としても、起動中のIEに変更が反映されませんでした。

あと
>一度、インターネットオプション画面を開いて閉じると
の部分ですが、インターネットオプションを開き、
[接続]タブ→[LANの設定]→[OK]→[OK]としないと反映されません。

といった状況です。
引き続き、よろしくお願いいたします。


Nov  2013-04-02 10:15:03  No: 44178

試してませんが、

http://support.microsoft.com/kb/294989/ja

にWindowsCE向けの関連記事があります。機械翻訳ですが...
記載のAPI関数はWindows向けと同等の内容なので、試す価値はあるかも。


Nov  2013-04-02 10:19:25  No: 44179

影響があるかどうか分かりませんが...

http://support.microsoft.com/kb/176420/ja

こんな罠があるようなのでご注意ください。


DEKO  2013-04-02 13:55:24  No: 44180

そのものズバリなコードが以下にありました。

[change internet proxy (Delphi Pages)]
http://www.delphipages.com/forum/showthread.php?t=205516

整形してちょっとだけ読みやすいコードにしたものが以下にあります。

[IE のプロキシ設定をアプリケーションから設定する]
http://ht-deko.minim.ne.jp/ft1304.html#130402_01


ちひろ  2013-04-03 18:15:33  No: 44181

>Novさん
>SendNotifyMessage
残念ながら…同じ結果でした。
>InternetSetOption によるタイムアウト
これを詳しく調べてみようと思いましたが、
手付かずでした、すみません。

>DEKOさん
ズバリなコード、そして整形、
そしてそしてHPネタにまでして頂いて(^^ゞ
これで完璧に動いてくれました。

大変助かりました。
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加