こんにちは、いつもお世話になります。
すでに起動している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;
StrReg := 'Internet Settings'; 
とすべきなようですね。
しかし、変更は反映されませんでした。
化けてしまいましたので訂正します。
StrReg := 'Internet Settings';
SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, Integer(PChar(StrReg)));
としても、起動中のIEに変更が反映されませんでした。
あと
>一度、インターネットオプション画面を開いて閉じると
の部分ですが、インターネットオプションを開き、
[接続]タブ→[LANの設定]→[OK]→[OK]としないと反映されません。
といった状況です。
引き続き、よろしくお願いいたします。
試してませんが、
http://support.microsoft.com/kb/294989/ja
にWindowsCE向けの関連記事があります。機械翻訳ですが...
記載のAPI関数はWindows向けと同等の内容なので、試す価値はあるかも。
影響があるかどうか分かりませんが...
http://support.microsoft.com/kb/176420/ja
こんな罠があるようなのでご注意ください。
そのものズバリなコードが以下にありました。
[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
>Novさん
>SendNotifyMessage
残念ながら…同じ結果でした。
>InternetSetOption によるタイムアウト
これを詳しく調べてみようと思いましたが、
手付かずでした、すみません。
>DEKOさん
ズバリなコード、そして整形、
そしてそしてHPネタにまでして頂いて(^^ゞ
これで完璧に動いてくれました。
大変助かりました。
ありがとうございました。
ツイート | ![]() |