谈Delphi下Internet的编程技巧(一)
2006-02-04 13:37:26 来源:WEB开发网核心提示:谈Delphi下Internet的编程技巧(一)作者:lyboy99E-mail:lyboy99@sina.comDelphi带了很多的Internet应用编程控件,这使得我们开发Internet的应用程序可以轻松些,下面我将逐步介绍一些关于Internet下应用程序编程技巧,这些技巧都是一些细微的方面,但是它却可以给
谈Delphi下Internet的编程技巧(一)
作者:lyboy99 E-mail:lyboy99@sina.com Delphi带了很多的Internet应用编程控件,这使得我们开发Internet的应用程序可以轻松些,下面我将逐步介绍一些关于Internet下应用程序编程技巧,这些技巧都是一些细微的方面,但是它却可以给你的应用程序添加重要的功能,将使你开发Internet下的应用程序事半功倍。 说过开场旁白后,首先介绍:设置系统默认浏览器和系统默认电子邮件收发软件。 1.获得默认的internet浏览器地址函数: 下面的函数是通过读取注册表的设置后,得到默认Internet的浏览器所在地址 function GetDefaultShellHTTP : string; var reg : TRegistry; begin Reg:=TRegistry.Create; Reg.RootKey:=HKEY_CLASSES_ROOT; if Reg.KeyExists('http\shell\open\command') then begin Reg.OpenKey('http\shell\open\command',false); Result:=Reg.ReadString(''); end else Result:=''; Reg.Free; end; 2.设置internet浏览器 PRocedure SetDefaultShellHttp(CmdLine : string); var reg : TRegistry; begin Reg:=TRegistry.Create; Reg.RootKey:=HKEY_CLASSES_ROOT; //注册表的地址: Reg.OpenKey('http\shell\open\command',true);//注册表的地址: Reg.WriteString('',CmdLine); Reg.Free; end; setDefaultshellhttp('"C:\PROGRA~1\INTERN~1\iexplorer.exe" -nohome'); 3.获得和设置默认的E-Mail 收发软件的函数 下面的函数是通过读取注册表的设置后,得到默认E-mail收发软件所在地址 function GetDefaultMail : string; var reg : TRegistry; begin Reg:=TRegistry.Create; Reg.RootKey:=HKEY_CLASSES_ROOT; if Reg.KeyExists('Mailto\shell\open\command') then begin Reg.OpenKey('Mailto\shell\open\command',false); Result:=Reg.ReadString(''); end else Result:=''; Reg.Free; end; 4.设置默认邮件箱 procedure SetDefaultMail(CmdLine : string); var reg : TRegistry; begin Reg:=TRegistry.Create; Reg.RootKey:=HKEY_CLASSES_ROOT; Reg.OpenKey('Mailto\shell\open\command',true); Reg.WriteString('',CmdLine); Reg.Free; end; 使用 //SetDefaultMail('E:\Foxmail\FoxMail.exe -T "%1" -S "%2"'); 5.是否早想有个域名转换为ip地址的函数,现在我就给你一个 域名转换为IP地址: function GetIPName(Name: string): string; var WSAData: TWSAData; HostEnt: PHostEnt; begin WSAStartup(2, WSAData); HostEnt := gethostbyname(PChar(Name)); with HostEnt^ do Result := Format('%d.%d.%d.%d', [Byte(h_addr^[0]), Byte(h_addr^[1]), Byte(h_addr^[2]), Byte(h_addr^[3])]); WSACleanup; end; 6.编写Internet软件常常会遇到检查用户输入的网址,E-mail地址等等,如何解决呢? 我这正好有写好的函数。 检查一个URL是否有效 uses wininet; Function CheckUrl(url:string):boolean; //检查一个URL是否有效函数 var hsession, hfile, hRequest: hInternet; dwindex,dwcodelen :dWord; dwcode:array[1..20] of char; res : pchar; begin if pos('http://',lowercase(url))=0 then url := 'http://'+url; Result := false; hSession := InternetOpen('InetURL:/1.0', INTERNET_OPEN_TYPE_PRECONFIG,nil, nil, 0); if assigned(hsession) then begin hfile := InternetOpenUrl(hsession, pchar(url), nil, 0, INTERNET_FLAG_RELOAD, 0); dwIndex := 0; dwCodeLen := 10; HttpQueryInfo(hfile, HTTP_QUERY_STATUS_CODE, @dwcode, dwcodeLen, dwIndex); res := pchar(@dwcode); result:= (res ='200') or (res ='302'); //200,302未重定位标志 if assigned(hfile) then InternetCloseHandle(hfile); InternetCloseHandle(hsession); end; end;
如何处理E-mail地址,下面给你个E-mail地址处理函数 function IsEMail(EMail: String): Boolean; var s: String; ETpos: Integer; begin ETpos:= pos('@', EMail); if ETpos > 1 then begin s:= copy(EMail,ETpos+1,Length(EMail)); if (pos('.', s) > 1) and (pos('.', s) < length(s)) then Result:= true else Result:= false; end else Result:= false; end; procedure TForm1.Button1Click(Sender: TObject); begin if isemail(Edit1.Text) then begin ShowMessage('eMail-Address!'); end; end; 7,动态改变DNS Server的地址
下面的函数可以添加 DNS Server的地址
如想添加202.100.100.65 202.10.10.10
SetDNSAddresses('202.100.100.65 202.10.10.10') ;
//注意: 各地址之间用一个空格隔开
SetTDNSAddresses 定义如下: procedure SetDNSAddresses( sIPs : string );
begin
// 如果是 Windows NT用下面的代码
SaveStringToRegistry_LOCAL_MACHINE(
'SYSTEM\CurrentControlSet' +
'\Services\Tcpip\Parameters',
'NameServer',
sIPs );
// 如果你用的是Windows 95用下面的代码
SaveStringToRegistry_LOCAL_MACHINE(
'SYSTEM\CurrentControlSet' +
'\Services\VxD\MSTCP',
'NameServer',
sIPs );
end; 其中 SaveStringToRegistry_LOCAL_MACHINE 定义:
uses Registry;
procedure SaveStringToRegistry_LOCAL_MACHINE(
sKey, sItem, sVal : string );
var
reg : TRegIniFile;
begin
reg := TRegIniFile.Create( '' );
reg.RootKey := HKEY_LOCAL_MACHINE;
reg.WriteString( sKey, sItem, sVal + #0 );
reg.Free;
end;
作者:lyboy99 E-mail:lyboy99@sina.com Delphi带了很多的Internet应用编程控件,这使得我们开发Internet的应用程序可以轻松些,下面我将逐步介绍一些关于Internet下应用程序编程技巧,这些技巧都是一些细微的方面,但是它却可以给你的应用程序添加重要的功能,将使你开发Internet下的应用程序事半功倍。 说过开场旁白后,首先介绍:设置系统默认浏览器和系统默认电子邮件收发软件。 1.获得默认的internet浏览器地址函数: 下面的函数是通过读取注册表的设置后,得到默认Internet的浏览器所在地址 function GetDefaultShellHTTP : string; var reg : TRegistry; begin Reg:=TRegistry.Create; Reg.RootKey:=HKEY_CLASSES_ROOT; if Reg.KeyExists('http\shell\open\command') then begin Reg.OpenKey('http\shell\open\command',false); Result:=Reg.ReadString(''); end else Result:=''; Reg.Free; end; 2.设置internet浏览器 PRocedure SetDefaultShellHttp(CmdLine : string); var reg : TRegistry; begin Reg:=TRegistry.Create; Reg.RootKey:=HKEY_CLASSES_ROOT; //注册表的地址: Reg.OpenKey('http\shell\open\command',true);//注册表的地址: Reg.WriteString('',CmdLine); Reg.Free; end; setDefaultshellhttp('"C:\PROGRA~1\INTERN~1\iexplorer.exe" -nohome'); 3.获得和设置默认的E-Mail 收发软件的函数 下面的函数是通过读取注册表的设置后,得到默认E-mail收发软件所在地址 function GetDefaultMail : string; var reg : TRegistry; begin Reg:=TRegistry.Create; Reg.RootKey:=HKEY_CLASSES_ROOT; if Reg.KeyExists('Mailto\shell\open\command') then begin Reg.OpenKey('Mailto\shell\open\command',false); Result:=Reg.ReadString(''); end else Result:=''; Reg.Free; end; 4.设置默认邮件箱 procedure SetDefaultMail(CmdLine : string); var reg : TRegistry; begin Reg:=TRegistry.Create; Reg.RootKey:=HKEY_CLASSES_ROOT; Reg.OpenKey('Mailto\shell\open\command',true); Reg.WriteString('',CmdLine); Reg.Free; end; 使用 //SetDefaultMail('E:\Foxmail\FoxMail.exe -T "%1" -S "%2"'); 5.是否早想有个域名转换为ip地址的函数,现在我就给你一个 域名转换为IP地址: function GetIPName(Name: string): string; var WSAData: TWSAData; HostEnt: PHostEnt; begin WSAStartup(2, WSAData); HostEnt := gethostbyname(PChar(Name)); with HostEnt^ do Result := Format('%d.%d.%d.%d', [Byte(h_addr^[0]), Byte(h_addr^[1]), Byte(h_addr^[2]), Byte(h_addr^[3])]); WSACleanup; end; 6.编写Internet软件常常会遇到检查用户输入的网址,E-mail地址等等,如何解决呢? 我这正好有写好的函数。 检查一个URL是否有效 uses wininet; Function CheckUrl(url:string):boolean; //检查一个URL是否有效函数 var hsession, hfile, hRequest: hInternet; dwindex,dwcodelen :dWord; dwcode:array[1..20] of char; res : pchar; begin if pos('http://',lowercase(url))=0 then url := 'http://'+url; Result := false; hSession := InternetOpen('InetURL:/1.0', INTERNET_OPEN_TYPE_PRECONFIG,nil, nil, 0); if assigned(hsession) then begin hfile := InternetOpenUrl(hsession, pchar(url), nil, 0, INTERNET_FLAG_RELOAD, 0); dwIndex := 0; dwCodeLen := 10; HttpQueryInfo(hfile, HTTP_QUERY_STATUS_CODE, @dwcode, dwcodeLen, dwIndex); res := pchar(@dwcode); result:= (res ='200') or (res ='302'); //200,302未重定位标志 if assigned(hfile) then InternetCloseHandle(hfile); InternetCloseHandle(hsession); end; end;
如何处理E-mail地址,下面给你个E-mail地址处理函数 function IsEMail(EMail: String): Boolean; var s: String; ETpos: Integer; begin ETpos:= pos('@', EMail); if ETpos > 1 then begin s:= copy(EMail,ETpos+1,Length(EMail)); if (pos('.', s) > 1) and (pos('.', s) < length(s)) then Result:= true else Result:= false; end else Result:= false; end; procedure TForm1.Button1Click(Sender: TObject); begin if isemail(Edit1.Text) then begin ShowMessage('eMail-Address!'); end; end; 7,动态改变DNS Server的地址
下面的函数可以添加 DNS Server的地址
如想添加202.100.100.65 202.10.10.10
SetDNSAddresses('202.100.100.65 202.10.10.10') ;
//注意: 各地址之间用一个空格隔开
SetTDNSAddresses 定义如下: procedure SetDNSAddresses( sIPs : string );
begin
// 如果是 Windows NT用下面的代码
SaveStringToRegistry_LOCAL_MACHINE(
'SYSTEM\CurrentControlSet' +
'\Services\Tcpip\Parameters',
'NameServer',
sIPs );
// 如果你用的是Windows 95用下面的代码
SaveStringToRegistry_LOCAL_MACHINE(
'SYSTEM\CurrentControlSet' +
'\Services\VxD\MSTCP',
'NameServer',
sIPs );
end; 其中 SaveStringToRegistry_LOCAL_MACHINE 定义:
uses Registry;
procedure SaveStringToRegistry_LOCAL_MACHINE(
sKey, sItem, sVal : string );
var
reg : TRegIniFile;
begin
reg := TRegIniFile.Create( '' );
reg.RootKey := HKEY_LOCAL_MACHINE;
reg.WriteString( sKey, sItem, sVal + #0 );
reg.Free;
end;
- ››Delphi实现把10进制转换成16进制的函数进制转化
- ››Delphi中将字符串按给定字符分隔(似split函数功能...
- ››Delphi 动态创建窗体,锁定窗口赋值
- ››Delphi 与 VC 共享接口和对象
- ››Delphi图像处理 -- 表面模糊
- ››Internet Explorer 无法打开
- ››Delphi之多线程实例
- ››Delphi SelectSingleNode的使用 根据节点属性获取...
- ››Delphi接口详述
- ››delphi 远程调试
- ››Delphi与DirectX之DelphiX(34): TDIB.Lightness()...
- ››Delphi Application.MessageBox详解
更多精彩
赞助商链接