델파이를 공부한지 얼마 되지 않았습니다.
그래도 지금까지 배운거 가지고 웹브라우져를 만들고 있는 중입니다. 웹브라우져는 프락시 리스트를 사용자가 입력을 해 놓으면 자동으로 그 프락시의 리스트를 변경하면서 서핑하는 형태입니다.
프락시 변경법에 대해서 여기 저기 찾아 다니면서 공부를 하여 어떻게 하는지는 알아냈습니다.
레지스트리에서 값을 써서 하는거요..소스는 아래와 같습니다.
procedure ChangeProxy();
var
WMReg : TRegistry;
RegPath, WMPATHStr : string;
begin
////////////////////프락시 사용을 위한 구문/////////////////////////////////////
WMReg := TRegistry.Create;
RegPath := '\Software\Microsoft\Windows\CurrentVersion\Internet Settings';
with WMReg do
begin
try
RootKey := HKEY_CURRENT_USER;
OpenKey(RegPath,false);
WMPATHStr := ReadString('proxyserver');
WMPATHInt := ReadInteger('ProxyEnable');
numOfProxy := memoProxyList.Lines.Count - 1;
WriteString('ProxyServer',memoProxyList.Lines.Strings[numOfProxy]); //numofproxy는 밑에서부터 위로 올라가면서 차례로 바쭤주기 위한 변수입니다.
WriteInteger('ProxyEnable',1);
WMPATHStr := ReadString('proxyserver');
memoStatusOfSend.Lines.Add(WMPATHStr);
numOfChangeProxy := 1;
finally
CloseKey;
Free;
end;
end;
/////////////////////////////
여기 까지가 소스인데요...여기서 마지막 부분에 제가 알기로는 프락시 변경후 그것을 적용하기 위해서 해당 웹브라우져의 셋팅 값 변경을 리프레쉬 해줘야 될거라 생각이 듭니다.
즉, 인터넷 옵션을 리프레쉬 해줘야 할거 같은데 어떻게 해야 하는지를 잘 모르겟습니다.
고수님들의 조언 부탁드립니다.
==> 안녕하세요 BaSTaD 입니다.
WinInet 함수중 있습니다.. 참고하시구요...
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winhttp/http/setting_wininet_proxy_configurations_in_winhttp.asp
요기 가보시구요..
프록시 설정 가져오는 함수 예제입니다. 설정도 다를거 없겠지요...
type
PWinHttpCurrentUserIeProxyConfig = ^TWinHttpCurrentUserIeProxyConfig;
TWinHttpCurrentUserIeProxyConfig = record
fAutoDetect : boolean;
lpszAutoConfigUrl : PWideChar;
lpszProxy : PWideChar;
lpszProxyBypass : PWideChar;
end;
TWinHttpGetIeProxyConfigForCurrentUser = function (pProxyConfig:
PWinHttpCurrentUserIeProxyConfig): Boolean; stdcall;
procedure TForm1.Button1Click(Sender: TObject);
var
H: THandle;
WinHttpGetIeProxyConfigForCurrentUser: TWinHttpGetIeProxyConfigForCurrentUser;
Px: TWinHttpCurrentUserIeProxyConfig;
begin
H := LoadLibrary('winhttp.dll');
if H <> 0 then
TRY
@WinHttpGetIeProxyConfigForCurrentUser := GetProcAddress(H,
'WinHttpGetIEProxyConfigForCurrentUser');
if @WinHttpGetIeProxyConfigForCurrentUser <> nil then
begin
if WinHttpGetIeProxyConfigForCurrentUser(@Px) then
begin
with Memo1.Lines do
begin
Add('AutoDetect=' + BoolToStr(Px.fAutoDetect));
Add('AutoConfigURL=' + Px.lpszAutoConfigUrl);
Add('Proxy=' + Px.lpszProxy);
Add('Proxy ByPass=' + Px.lpszProxyBypass);
end;
end
else begin
Memo1.Lines.Add('Fail to get IE proxy information');
end;
end;
FINALLY
FreeLibrary (H);
END;
end;
성공하시길...
by BaSTaD 만수 ㅔ ㅇ ㅣ