应该是用VB来操作注册表来实现吧?
1 应该修改注册表中哪几个键值呢?
2 VB要调用什么DLL呢?然后怎么用程序实现呢?(最好哪位能给我类似代码,必高分相送啊,实在不行给些例子) [email protected]请尽量详细些,小弟是新手~~~

解决方案 »

  1.   

    HEK_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
    ProxyServer = "代理服务器的IP地址"
      

  2.   

    应该需要刷新系统,调用一下
    Sendmessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0);
      

  3.   

    谢谢楼上的,这个在以前帖子中也看到过。不过,小弟用的是win2000 server,没有ProxyServer 这个键值啊~~~只有ProxyEnable 和 ProxyHttp1.1
      

  4.   

    Option Explicit
    Public Enum REG_TOPLEVEL_KEYS
     HKEY_CLASSES_ROOT = &H80000000
     HKEY_CURRENT_CONFIG = &H80000005
     HKEY_CURRENT_USER = &H80000001
     HKEY_DYN_DATA = &H80000006
     HKEY_LOCAL_MACHINE = &H80000002
     HKEY_PERFORMANCE_DATA = &H80000004
     HKEY_USERS = &H80000003
    End Enum
    Private Declare Function RegCreateKey Lib _
       "advapi32.dll" Alias "RegCreateKeyA" _
       (ByVal Hkey As Long, ByVal lpSubKey As _
       String, phkResult As Long) As Long
    Private Declare Function RegCloseKey Lib _
       "advapi32.dll" (ByVal Hkey As Long) As Long
    Private Declare Function RegSetValueEx Lib _
       "advapi32.dll" Alias "RegSetValueExA" _
       (ByVal Hkey As Long, ByVal _
       lpValueName As String, ByVal _
       Reserved As Long, ByVal dwType _
       As Long, lpData As Any, ByVal _
       cbData As Long) As Long
    Private Const REG_SZ = 1Private Function WriteStringToRegistry(Hkey As _
      REG_TOPLEVEL_KEYS, strPath As String, strValue As String, _
      strdata As String) As Boolean
    Dim bAns As Boolean
    On Error GoTo ErrorHandler
       Dim keyhand As Long
       Dim r As Long
       r = RegCreateKey(Hkey, strPath, keyhand)
       If r = 0 Then
            r = RegSetValueEx(keyhand, strValue, 0, _
               REG_SZ, ByVal strdata, Len(strdata))
            r = RegCloseKey(keyhand)
        End If
        
       WriteStringToRegistry = (r = 0)
    Exit Function
    ErrorHandler:
        WriteStringToRegistry = False
        Exit Function
        
    End Function'把长整型数值写入注册表
    Private Function WriteLongToRegistry(Hkey As REG_TOPLEVEL_KEYS, _
        strPath As String, strValue As String, longdata As Long) As Boolean
    Dim bAns As Boolean
    On Error GoTo ErrorHandler
       Dim keyhand As Long
       Dim r As Long
       '建立键
       r = RegCreateKey(Hkey, strPath, keyhand)
       If r = 0 Then
       '成功
       '设置键值
            r = RegSetValueEx(keyhand, strValue, 0, REG_SZ, ByVal longdata, 4)
            '关闭键
            r = RegCloseKey(keyhand)
        End If
        
       WriteLongToRegistry = (r = 0)
    Exit Function
    ErrorHandler:
        WriteLongToRegistry = False
        Exit Function
        
    End FunctionPrivate Sub Command1_Click()
        If WriteStringToRegistry(HKEY_CURRENT_USER, _
            "Software\Microsoft\Windows\CurrentVersion\Internet Settings", _
            "ProxyServer", Text1) And _
            WriteLongToRegistry(HKEY_CURRENT_USER, _
            "Software\Microsoft\Windows\CurrentVersion\Internet Settings", _
            "ProxyEnable", 1&) Then
            MsgBox "设置代理成功"
        Else
            MsgBox "设置代理失败"
        End If
    End Sub
      

  5.   

    翻了下资料
    Kingron (单身走我路……) 大哥的delphi代码    uses registry,Wininet;
    {$R *.dfm}
    function ChangeProxy(const Proxy, Port,ByPass: string; const bEnabled: boolean = True): boolean;
    var
      reg: Tregistry;
      info: INTERNET_PROXY_INFO;
      Fproxy:string;
    begin
      Result := False;
      FProxy:=Format('%s:%s',[Proxy,Port]);
      reg := Tregistry.Create;
      try
        reg.RootKey := HKEY_CURRENT_USER;
        if reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Internet Settings', True) then
        begin
          reg.Writestring('ProxyServer', Fproxy);
          reg.WriteInteger('ProxyEnable', integer(bEnabled));
          info.dwAccessType := INTERNET_OPEN_TYPE_PROXY;
          info.lpszProxy := pchar(proxy);
          info.lpszProxyBypass := pchar(ByPass);
          InternetSetOption(nil, INTERNET_OPTION_PROXY, @info, SizeOf(Info));
          InternetSetOption(nil, INTERNET_OPTION_SETTINGS_CHANGED, nil, 0);
    //      InternetSetOption(nil, INTERNET_OPTION_REFRESH, nil, 0);
    //      Sendmessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0);
          Result:=True;
        end
      finally
        reg.CloseKey;
        reg.free;
      end;
    end;
    其中 有个数据结构INTERNET_PROXY_INFO你转一下,InternetSetOption是windowsAPI
     INTERNET_PROXY_INFO = record
        dwAccessType: DWORD;       { dwAccessType - INTERNET_OPEN_TYPE_DIRECT, INTERNET_OPEN_TYPE_PROXY, or }
        lpszProxy: LPCSTR;        { lpszProxy - proxy server list }
        lpszProxyBypass: LPCSTR;  { lpszProxyBypass - proxy bypass list }
      end;