Code pour obtenir l'adresse IP par nom d'hôte dans InstallShield

2019-12-27
// Nom de fichier: setup.rul
// Fonction de script: Obtenir l'adresse TCP / IP par nom d'hôte
// Date d'écriture: 2003-07-15
// Utilisation: Fonction d'appel fGetIpAddress (szHost , szIPAdress)
// écrit par Jaron, 2002-07-15
// Source originale: Jiangdu Information Network Forum http://www.jiangdu.net/bbs ;;
// Réimprimé, veuillez noter source de Ming et de garder ces informations droits d'auteur
// Bienvenue système de gestion de site SiteManager http://sitemanager.cnzone.net ;;
#include "Sddialog.h"
#include « IPADDRESS. RUL "
STRING szIPAddress,
STRING szHostName;
BOOL nResult;
programme
SdShowDlgEdit1 (" "" S'il vous plaît entrer votre hôte Nom "," nom d'hôte: ", szHostName);
nResult = fGetIpAddress (szHostName, szIPAddress);
si nResult alors
MessageBox (" L'adresse IP est: "+ szIPAddress, INFORMATION);
endif;
FinProgramme
#include "Sddialog.rul"
====================== ====
// Nom de fichier: IpAddress.rul
// Fonction de script: Obtenir l'adresse TCP / IP par nom d'hôte
// Date de rédaction: 2003-07-15
// Comment utiliser:
// 1. Ajoutez #include "IpAddress.rul" avant setup.rul
// 2. Appelez la fonction fGetIpAddress (szHost, szIPAdress )
// écrit par Jaron, 15/07/2002
// Source originale: Jiangdu Information Network Forum http://www.jiangdu.net/bbs ;;
// Réimpression veuillez indiquer la source et conserver ces informations droits d'auteur
// Bienvenue système de gestion de site SiteManager http://sitemanager.cnzone.net ;;
prototype NUMÉRO WSOCK32.WSAStartup (NUMÉRO, POINTER);
prototype NOMBRE WSOCK32.gethostbyname (STRING); prototype NOMBRE KERNEL32.RtlMoveMemory (POINTER, NUMÉRO, NUMBER);
prototype NOMBRE WSOCK32.WSACleanup ();
prototype fGetIpAddress (STRING, BYREF STRING) ;
typedef WSADATA

commencer INT wversion,
INT wHighVersion,
STRING szDescription [255];
STRING szSystemStatus [128];
INT iMaxSockets; < BR> INT iMaxUdpDg;
INT lpszVendorInfo;
fin;
typedef hostent

commencer NOMBRE HNAME; // Comme Long
NUMBER hAliases; // Comme Long
SHORT hAddrType; // Comme Entier
SHORT hLength; // Comme Entier
NUMBER hAddrList; // Comme Long
end; < br>
typedef IPADDRESS
begin
CHAR b1; // First
CHAR b2; // Second
CHAR b3; // Third
CHAR b4; // Fourth
fin;
fonction fGetIpAddress (szHost, szIPAdress)
WSADATA StructWSAData;
WSADATA POINTER pStructWSAData;
hostent StructHostEnt;
hostent POINTER pStructHostEnt;
NUMÉRO nResult,
NUMÉRO pHostAddress,
POINTEUR pHostIPAddress,
NUMÉRO HostIPAddress,
IPADDRESS IpAddress,
IPADDRESS POINTEUR pIpAddress;
STRING SB1, SB2 , SB3, SB4;
NUMÉRO NSTARTUP,
BOOL BRETURN;
commencer
si szHost = "" alors
return false;
endif;
si UseDLL (WINSYSDIR ^ "WSOCK32.DLL") <0 puis
return false;
endif;
pStructWSAData = & StructWSAData;
pStructHostEnt = & StructHostEnt;

nSta rtUp = WSAStartup (0x101, pStructWSAData);
si NSTARTUP = 0 alors
retour FALSE ;!
endif;
pHostAddress = gethostbyname (szHost);

si pHostAddress = 0 puis
RtlMoveMemory (pStructHostEnt, pHostAddress, 16) ;!
pHostIPAddress = & HostIPAddress;
RtlMoveMemor(PHostIPAddress, StructHostEnt.hAddrList, 4);
pIpAddress = & IpAddress;
RtlMoveMemory (pIpAddress, HostIPAddress, 4);
NumToStr (SB1, pIpAddress-> b1);
NumToStr (SB2, pIpAddress-> b2);
NumToStr (SB3, pIpAddress-> b3);
NumToStr (sb4, pIpAddress-> b4);
szIPAdress = SB1 + "" + + + SB2 SB3 + + sb4 "" "".
BRETURN = TRUE;
autre
BRETURN = FAUX;
endif;

si NSTARTUP = 0,
WSACleanup ();
endif;
UnUseDLL ( "WSOCK32.DLL");
retour BRETURN;
fin;
www.xd1998.com@2001-2030Partage De Technologie