Q&A

  • 웹브라우져의 옵션 변경 방법에 대해서 질문 좀 드리겠습니다.
델파이를 공부한지 얼마 되지 않았습니다.

그래도 지금까지 배운거 가지고 웹브라우져를 만들고 있는 중입니다. 웹브라우져는 프락시 리스트를 사용자가 입력을 해 놓으면 자동으로 그 프락시의 리스트를 변경하면서 서핑하는 형태입니다.

프락시 변경법에 대해서 여기 저기 찾아 다니면서 공부를 하여 어떻게 하는지는 알아냈습니다.

레지스트리에서 값을 써서 하는거요..소스는 아래와 같습니다.
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;
/////////////////////////////
여기 까지가 소스인데요...여기서 마지막 부분에 제가 알기로는 프락시 변경후 그것을 적용하기 위해서 해당 웹브라우져의 셋팅 값 변경을 리프레쉬 해줘야 될거라 생각이 듭니다.

즉, 인터넷 옵션을 리프레쉬 해줘야 할거 같은데 어떻게 해야 하는지를 잘 모르겟습니다.

고수님들의 조언 부탁드립니다.
1  COMMENTS
  • Profile
    KDDG_BaSTaD 2004.06.10 03:38

    ==> 안녕하세요 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 만수 ㅔ ㅇ ㅣ