Delphi でのインターネット プログラミング スキルについて語る (1)
著者: lyboy99 電子メール: [email protected] には、インターネット アプリケーションの開発を容易にする多くのインターネット アプリケーション プログラミング コントロールが付属しています。これらのスキルは、いくつかの微妙なものです。ただし、アプリケーションに重要な機能を追加できるため、インターネット下でのアプリケーション開発が容易になります。冒頭のナレーションの後、まずシステムのデフォルトのブラウザとシステムのデフォルトの電子メール送受信ソフトウェアの設定について説明します。 1. デフォルトのインターネット ブラウザのアドレスを取得する関数: 次の関数は、レジストリ設定関数 GetDefaultShellHTTP: string;varreg: TRegistry;begin Reg:=TRegistry.Create Reg .RootKey:=HKEY_CLASSES_ROOT; を読み取って、デフォルトのインターネット ブラウザのアドレスを取得します。 Reg.KeyExists('http/shell/open/command') の場合、開始しますReg.OpenKey('http/shell/open/command',false); Result:=Reg.ReadString(''); Reg.Free;end; 2. インターネット ブラウザを設定します。 (CmdLine : 文字列);varreg : 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. デフォルトの電子メール送受信ソフトウェアの機能の取得と設定 次の関数は、レジストリ設定を読み取ることで、デフォルトの電子メール送受信ソフトウェアのアドレスを取得します。 varreg: TRegistry; 開始 Reg:=TRegistry.Create; Reg.KeyExists('Mailto/shell/open/command') の場合は開始しますReg.OpenKey('Mailto/shell/open/command',false); Result:=Reg.ReadString('') end else Result:=''; 4. デフォルトのメールボックス プロシージャを設定します。 (CmdLine : 文字列);varreg : TRegistry;begin Reg:=TRegistry.Create; Reg.RootKey:=HKEY_CLASSES_ROOT; Reg.OpenKey('Mailto/shell/open/command',true); Reg.WriteString('',CmdLine); Reg.Free;end;Use //SetDefaultMail('E:/Foxmail/FoxMail.exe -T " %1" -S "%2"');5. ドメイン名を IP アドレスに変換する関数が欲しいと思ったことはありませんか? ここで、ドメイン名を IP アドレスに変換する関数を提供します。 GetIPName(名前: string): string;var WSAData: TWSAData; HostEnt: PHostEnt;begin WSAStartup(2, WSAData); HostEnt := gethostbyname(PChar(Name)); with HostEnt^ do Result('%d.%d.% d.%d', [バイト(h_addr^[0]), バイト(h_addr^[1]), Byte(h_addr^[2]), Byte(h_addr^[3])]); WSACleanup;end; 6. インターネット ソフトウェアを作成していると、ユーザーが入力した URL や電子メール アドレスなどを確認することがよくあります。この問題を解決するにはどうすればよいでしょうか?たまたまここに関数が書かれていました。 URL が有効かどうかを確認します。 uses wininet; Function CheckUrl(url:string):boolean; // URL が有効かどうかを確認します。 function var hsession, hfile, hRequest: hInternet; 20] の char; res : pchar; pos('http://', lowercase(url))=0 の場合 url := 'http://'+url; 結果 := false; hSession := InternetOpen('InetURL:/1.0', INTERNET_OPEN_TYPE_PRECONFIG,nil, nil, 0); if assignd(hsession) then begin hfile := InternetOpenUrl(hsession, pchar) (url)、nil、0、INTERNET_FLAG_RELOAD、0); 0; dwCodeLen := 10; HttpQueryInfo(hfile, HTTP_QUERY_STATUS_CODE, @dwcode, dwcodeLen, dwIndex); 結果:= (res = '200'); /200,302 再配置解除フラグ (hfile) が割り当てられている場合インターネットクローズハンドル(hファイル); インターネットクローズハンドル(hセッション終了);
電子メール アドレスの処理方法は次のとおりです。 function IsEMail(EMail: String): var s: String; begin ETpos:= pos(', EMail); ETpos > 1 then begin s:= copy(EMail,ETpos+1,Length(EMail)); 1) and (pos('.', s) <length(s)) then Result:= true else Result:= false; end else Result:= false end; if isemail(Edit1.Text) then begin ShowMessage('eMail-Address!') end; 7. DNS サーバーのアドレスを動的に変更します。
以下の機能でDNSサーバーのアドレスを追加できます。
202.100.100.65 202.10.10.10を追加したい場合
SetDNSAddresses('202.100.100.65 202.10.10.10');
//注: 各アドレスはスペースで区切ります。
SetTDNSAddresses は次のように定義されます。
始める
// Windows NT の場合は、次のコードを使用します
SaveStringToRegistry_LOCAL_MACHINE(
'SYSTEM/現在のコントロールセット' +
'/サービス/Tcpip/パラメータ',
'ネームサーバー',
sIP );
// Windows 95 を使用している場合は、次のコードを使用します
SaveStringToRegistry_LOCAL_MACHINE(
'SYSTEM/現在のコントロールセット' +
'/サービス/VxD/MSTCP',
'ネームサーバー',
sIP );
end;SaveStringToRegistry_LOCAL_MACHINE が定義されている場所:
レジストリを使用します。
プロシージャ SaveStringToRegistry_LOCAL_MACHINE(
sKey、sItem、sVal : 文字列 );
変数
reg: TRegIniFile;
始める
reg := TRegIniFile.Create( '' );
reg.RootKey := HKEY_LOCAL_MACHINE;
reg.WriteString( sKey, sItem, sVal + #0 );
登録無料。
終わり;