P> Win9X에서 전화 접속 네트워크가 설치된 경우 Windows 시스템의 시스템 디렉토리 시스템에 2 개의 전화 접속 네트워크 거버넌스 프로그램 라이브러리가 있습니다 네트워크에 연결하기 위해 전화 걸기에 대한 정보를 설정하십시오. 물론 전화 접속 연결의 동적 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; //이 구조 (bytes)가 차지하는 메모리의 크기,,
일반적으로 Sizeo의 Size (rasconn)로 설정
Hrasconn : Hrasconn; // 활성 연결의 핸들
szentryname : array [0..ras_maxentryname] char;
// 활성 연결의 이름입니다
szdeviceType : array [0..ras_maxdeviceType] char;
// 활성 연결에 사용되는 장비 유형
szdeviceName : array [0..ras_maxdeviceName] char;
// 활성 연결에 사용되는 장치 이름입니다
끝;
TRASPPPIP = 레코드 // 활성 접속 연결에 대한 동적 IP 주소 정보
dwsize : dword; //이 구조 (bytes)가 차지하는 메모리의 크기,,
일반적으로 sizeof (traspppip)로 설정
dwerror : dword; // 오류 유형 식별자
szipaddress : char의 배열 [0..ras_maxipaddress];
// 활성 접속 연결의 IP 주소
끝;
2. 다음으로, 우리는 사용될 두 RAS 기능을 설명해야합니다. // 모든 활성 접속 연결에 대한 정보 얻기 (연결 핸들 및 설정 정보)
기능 rasenumconnections (var lprasconn : rasconn;
// 활성 연결 버퍼의 포인터 수신
var lpcb : dword; // 버퍼 크기
var lpcconnections : dword // 실제 활성 연결 수
) : dword; stdcall;
기능 raseNumconnection;
이름 rasenumconnectionsa;
// 지정된 활성화 접시 업 연결에 대한 동적 IP 정보 가져 오기
함수 rasgetProejectinfo (
Hrasconn : Hrasconn; // 활성 연결의 핸들을 지정하십시오
rasproeject : dword; // ras 연결 유형
var lpprojection : traspppip; // 동적 IP 정보를 수신하기위한 버퍼
var lpcb : dword // 버퍼 크기를받습니다
) : dword; stdcall;
ction rasgetProejectInfo; 외부
rasapi32.dll 이름 rasgetproejectinfoa;
이 두 함수의 반환 값이 0이면 실행이 성공했으며 0이 아닌 것은 오류 코드를 의미합니다. 3. 다음 논의는 위의 두 RAS 기능을 사용하여 전화 접속 연결의 동적 IP 주소를 얻는 방법에 관한 것입니다. 이름, 연결 핸들, 연결 장치 유형 및 장치 이름을 사용하여 RasgetProejectInfo를 사용하여 동적 IP 주소 인 멤버 속성 SzipAddress를 포함하여 연결에 해당하는 TRASPPIP 구조를 얻습니다. 자세한 내용은 프로그램 스 니펫과 아래의 의견 정보를 참조하십시오. 절차 tform1.Button1click (sender : tobject);
Const
MaxConnections = 10; // 최대 10 개의 활성 접속 연결이 있다고 가정합니다.
var
연결 : Rasconn의 배열 [0..maxConnections-1];
// 전화 접속 연결 배열
Longsize : dword;
intavailableConnections : dword;
// 실제 활성 접속 연결 수입니다
Intindex : 정수;
strtemp : 문자열;
dwresult : dword;
dwsize : dword;
RASPPPIP : TRASPPPIP;
// 활성 접속 연결의 동적 IP 주소 정보
시작하다
연결 [0] .dwsize : = sizeof (rasconn);
longsize : = maxconnections * 연결 [0] .dwsize;
// 활성 연결의 버퍼 크기를받습니다
intavailableConnections : = 0;
// 모든 활성 접속 연결에 대한 정보 얻기 (연결 핸들 및 설정 정보)
dwresult : = rasenumconnections (연결 [0],
Longsize, 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 : = rasgetProejectinfo
(연결 [intindex] .hrasconn,
RASP_PPPIP, RASPPPIP, DWSIZE); // 동적 IP 주소를 가져옵니다
0 $#@60;
memo1.lines.add (
오류 : + inttostr (dwresult))
또 다른
memo1.lines.add (
동적 주소 : + strpas (raspppip.szipaddress));
끝;
끝;
끝;
위의 프로그램은 PWIN98+DELPHI3.0에 따라 디버깅하고 통과시켰다.