谈Delphi下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; 作者Blog:http://blog.csdn.net/lyboy99/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值