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
翻了下资料 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;
ProxyServer = "代理服务器的IP地址"
Sendmessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0);
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
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;