P> Sob Win9X, se a rede dial-up estiver instalada, haverá duas bibliotecas de programa de rede dial-up Rasapi32.dll e Rasapi16.dll no sistema de diretório do sistema do sistema Windows. e defina informações sobre como discar para conectar -se à rede. Obviamente, você pode obter o endereço IP dinâmico da conexão dial-up. No arquivo de ajuda Delphi, existem instruções específicas para funções Ras relacionadas. 1. Primeiro, explique algumas constantes de dados e estruturas de dados a serem usadas. const
Ras_maxDeviceType = 16; // Comprimento do nome do tipo de dispositivo
Ras_maxentryname = 256; // Comprimento máximo do nome da conexão
Ras_maxDevicename = 128; // Comprimento máximo do nome do dispositivo
Ras_maxipaddress = 15; // Comprimento máximo do endereço IP
RASP_PPPIP = $ 8021; // O tipo de conexão de dial-up do protocolo, este valor representa o tipo de conexão PPP
Hrasconn = dword; // tipo de identidade de conexão dial-up
Rasconn = registro // o identificador e configuração de informações da conexão de dial-up ativa
dwsize: dword; // O tamanho da memória ocupado por esta estrutura (bytes),
Geralmente definido como sizeof (rasconn)
HRASCONN: HRASCONN; // A alça da conexão ativa
SzentryName: Array [0..RAS_MAXENTRYNAME] de char;
// o nome da conexão ativa
szdevicetype: matriz [0..RAS_MAXDEVICETYPE] de char;
// o tipo de equipamento usado para a conexão ativa
szdevicename: matriz [0..RAS_MAXDEVICENAME] de char;
// o nome do dispositivo usado para a conexão ativa
fim;
Trasppppip = registro // Informações de endereço IP dinâmico para conexões de dial-up ativas
dwsize: dword; // O tamanho da memória ocupado por esta estrutura (bytes),
Geralmente definido como sizeof (traspppip)
Dwerror: DWORD; // Tipo de erro Identificador
szipaddress: matriz [0..RAS_MAXIPADDRESS] de char;
// O endereço IP da conexão dial-up ativa
fim;
2. Em seguida, precisamos explicar as duas funções do RAS a serem usadas. // Obtenha informações sobre todas as conexões de dial-up ativas (identificador de conexão e informações de configuração)
função rasenumConnections (var lprasconn: rasconn;
// recebe o ponteiro do buffer da conexão ativa
var lpcb: dword; // tamanho do buffer
var lpcconnections: dword // o número real de conexões ativas
): DWORD;
função RasenumConnections;
nome RasenumConnectionsa;
// Obtenha informações de IP dinâmicas para a conexão dial-up ativa especificada
função rasgetprojectionInfo (
HRASCONN: HRASCONN; // Especifique o identificador para a conexão ativa
Rasprojeção: DWORD; // Tipo de conexão Ras
var lprojeção: traspppip; // buffer para receber informações dinâmicas de IP
var LPCB: DWORD // Tamanho do buffer de recebimento
): DWord; stdcall;
ction RasgetProjectionInfo; externo
Rasapi32.dll Nome RasgetProjectionInfoa;
Quando o valor de retorno dessas duas funções é 0, isso significa que a execução é bem-sucedida e não-0 significa o código de erro. 3. A discussão a seguir é sobre como usar as duas funções RAS acima para obter o endereço IP dinâmico de uma conexão dial-up. Nome, identificador de conexão, tipo de dispositivo de conexão e nome do dispositivo; Para detalhes, consulte os trechos do programa e comentar as informações abaixo. procedimento TForm1.Button1Click (remetente: TOBJECT);
const
MaxConnections = 10; // Suponha que haja até 10 conexões de dial-up ativas
var
Conexões: Array [0..MaxConnections-1] de Rasconn;
// Matriz de conexão dial-up
LongSize: DWORD;
INTAVALABLECONNEÇÕES: DWORD;
// O número real de conexões de dial-up ativas
Intindex: Inteiro;
strtemp: string;
DWRESULT: DWORD;
dwsize: dword;
Raspppip: traspppip;
// Informações de endereço IP dinâmico da conexão de dial-up ativa
Começar
conexões [0] .dWSize: = sizeof (rasconn);
LongSize: = maxConnections * conexões [0] .dWSize;
// recebe o tamanho do buffer da conexão ativa
INTAVALABLECONNEÇÕES: = 0;
// Obtenha informações sobre todas as conexões de dial-up ativas (identificador de conexão e informações de configuração)
DWRESULT: = RasenumConnections (conexões [0],
LongSize, intavailableConnections);
Se 0 $#@60;
MEMO1.LINES.ADD (ERRO: + INTToSTR (DWRESULT))
outro
Começar
memando1.lines.add (a conexão ativa existente tem +
Inttostr (intavailableConnections) +);
// Mostre informações sobre todas as conexões de dial-up ativas (definindo informações e endereço IP dinâmico)
para intindex: = 0 para intravailableConnections - 1 do
Começar
// Mostra informações de configurações para uma conexão dial-up ativa
strtemp: = nome da conexão:
+ Strpas (conexões [intindex] .szentryname)
+, tipo de dispositivo:
+ Strpas (conexões [intindex] .szdevicetype)
+, nome do dispositivo:
+ Strpas (conexões [intIndex] .szdevicename);
memor1.lines.add (strtemp);
// Mostra o endereço IP dinâmico de uma conexão dial-up ativa
dwsize: = sizeof (raspppip);
Raspppip.dwsize: = dwsize;
DwResult: = RasgetProjectionInfo
(conexões [intindex] .hrasconn,
RASP_PPPIP, RASPPPIP, DWSIZE); // Obter endereço IP dinâmico
Se 0 $#@60;
memor1.lines.add (
Erro: + inttoStr (DwResult))
outro
memor1.lines.add (
Endereço dinâmico: + strpas (raspppip.szipaddress));
fim;
fim;
fim;
O programa acima foi depurado e aprovado no PWIN98+Delphi3.0.