P> Win9Xでは、ダイヤルアップネットワークがインストールされている場合、Windowsシステムのシステムディレクトリシステムの下に、2つのダイヤルアップネットワークガバナンスプログラムライブラリRasapi32.dllとrasapi16.dllがありますネットワークに接続するためのダイヤルアップに関する情報を設定します。もちろん、ダイヤルアップ接続の動的なIPアドレスを取得できます。 Delphiヘルプファイルには、関連するRAS関数に関する具体的な指示があります。 1.最初に、使用するいくつかのデータ定数とデータ構造を説明します。 const
ras_maxdeviceType = 16; //デバイスタイプ名の長さ
ras_maxentryname = 256; //接続名の最大長
ras_maxdevicename = 128; //デバイス名の最大長
ras_maxipaddress = 15; // IPアドレスの最大長
rasp_pppip = $ 8021; //ダイヤルアップ接続のプロトコルタイプ、この値はPPP接続タイプを表します
hrasconn = dword; //ダイヤルアップ接続ハンドルのタイプ
rasconn = record //アクティブなダイヤルアップ接続のハンドルと設定情報
dwsize:dword; //この構造(バイト)で占めるメモリのサイズ、
通常、sizeof(rasconn)に設定します
hrasconn:hrasconn; //アクティブ接続のハンドル
szentryname:charの配列[0..ras_maxentryname];
//アクティブ接続の名前
szdeviceType:charの配列[0..ras_maxdeviceType];
//アクティブ接続に使用される機器の種類
szdevicename:charの配列[0..ras_maxdevicename]。
//アクティブ接続に使用されるデバイス名
終わり;
traspppip = record //アクティブなダイヤルアップ接続の動的IPアドレス情報
dwsize:dword; //この構造(バイト)で占めるメモリのサイズ、
通常、sizeof(traspppip)に設定します
dwerror:dword; //エラータイプ識別子
szipaddress:charの配列[0..ras_maxipaddress]。
//アクティブなダイヤルアップ接続のIPアドレス
終わり;
2。次に、使用する2つのRAS関数を説明する必要があります。 //すべてのアクティブなダイヤルアップ接続に関する情報を取得します(接続ハンドルと情報の設定)
関数rasenumConnections(var lprasconn:rasconn;
//アクティブ接続のバッファーのポインターを受け取ります
var lpcb:dword; //バッファサイズ
var lpcconections:dword //アクティブ接続の実際の数
):dword;
関数rasenumconnections;
名前rasenumconnectionsa;
//指定されたアクティブダイヤルアップ接続の動的IP情報を取得する
function rasgetprojectioninfo(
hrasconn:hrasconn; //アクティブ接続のハンドルを指定します
rasprojection:dword; // ras接続タイプ
var lpprojection:traspppip; //動的IP情報を受信するためのバッファー
var lpcb:dword //バッファサイズを受信します
):dword; stdcall;
ction rasgetProjectionInfo;外部
rasapi32.dll name rasgetprojectioninfoa;
これら2つの関数の返品値が0の場合、実行が成功し、非0がエラーコードを意味します。 3.次の説明は、上記の2つのRAS関数を使用して、最初にダイヤルアップ接続の動的なIPアドレスを取得する方法についてです。名前、接続ハンドル、接続デバイスタイプ、およびデバイス名。次に、関数RasgetProjectionInfoを使用して、動的IPアドレスであるメンバー属性SzipAddressを含むTrasppPIP構造を取得します。詳細については、以下のプログラムスニペットとコメント情報を参照してください。手順tform1.button1click(sender:tobject);
const
maxconnections = 10; //最大10のアクティブなダイヤルアップ接続があるとします
var
接続:rasconnの配列[0..maxconnections-1]。
//ダイヤルアップ接続配列
ロングサイズ:dword;
intavailableconnections:dword;
//アクティブなダイヤルアップ接続の実際の数
Intindex:整数;
strtemp:string;
dwresult:dword;
Dwsize:dword;
raspppip:traspppip;
//アクティブなダイヤルアップ接続の動的IPアドレス情報
始める
接続[0] .dwsize:= sizeof(rasconn);
longsize:= maxconnections * connections [0] .dwsize;
//アクティブ接続のバッファサイズを受信します
intavailableconnections:= 0;
//すべてのアクティブなダイヤルアップ接続に関する情報を取得します(接続ハンドルと情報の設定)
dwresult:= rasenumconnections(connections [0]、
憧れ、intavailableconnections);
0 $@60;
memo1.lines.add(エラー: + inttostr(dwresult))
それ以外
始める
memo1.lines.add(既存のアクティブ接続には +があります
inttoStr(intavailableconnections) +);
//すべてのアクティブなダイヤルアップ接続に関する情報を表示します(情報と動的IPアドレスの設定)
intindexの場合:= 0からintavailableconnections -1 do
始める
//アクティブなダイヤルアップ接続の設定情報を表示します
strtemp:=接続名:
+ strpas(connections [intindex] .szentryname)
+、デバイスタイプ:
+ strpas(connections [intindex] .szdeviceType)
+、デバイス名:
+ strpas(connections [intindex] .szdevicename);
memo1.lines.add(strtemp);
//アクティブなダイヤルアップ接続の動的IPアドレスを表示します
dwsize:= sizeof(raspppip);
raspppip.dwsize:= dwsize;
DwResult:= RasgetProjectionInfo
(接続[intindex] .hrasconn、
rasp_pppip、raspppip、dwsize); //動的IPアドレスを取得します
0 $@60;
memo1.lines.add(
エラー: + inttostr(dwresult))
それ以外
memo1.lines.add(
動的アドレス: + strpas(raspppip.szipaddress));
終わり;
終わり;
終わり;
上記のプログラムはデバッグされ、PWIN98+Delphi3.0で渡されました。