在InstallShield中引用WINSOCK 的示例代码

(编辑:jimmy 日期: 2024/7/23 浏览:2)

通过以下示例,InstallShield可以用WINSOCK获取IP地址,可将以下文件保存为tcpip.rul
#define WSADESCRIPTION_LEN      256
#define WSASYS_STATUS_LEN       128
typedef
 WSAData
  begin
        INT                    wVersion;
        INT                    wHighVersion;
        char                   szDescription[WSADESCRIPTION_LEN+1];
        char                    szSystemStatus[WSASYS_STATUS_LEN+1];
        short                    iMaxSockets;
        short                  iMaxUdpDg;
        POINTER                lpVendorInfo;
end;
WSAData structWSAData;
WSAData POINTER pWSAData;
typedef  HostEnt
begin
        POINTER    ph_name; 
        POINTER    ph_aliases; 
        short      h_addrtype; 
        short      h_length;
        POINTER    ph_addr_list;
end;
HostEnt structHostEnt;
HostEnt POINTER pHostEnt;
SHORT nlen;
NUMBER nIPNetAddr;
NUMBER nVersion;
STRING szMsg;
STRING szDefault;
STRING szURL;
STRING szPath;
NUMBER nRC;
NUMBER nRC2;
STRING szHostName;
STRING szMYIPAddr;
POINTER pWinSockReturn;
typedef IPName
 begin
 STRING szIPAddr[100];
end;
IPName LocalIPName;
IPName  POINTER pLocalIPName;
typedef IPAddrList
 begin
 POINTER pIPAddr;
end;
IPAddrList  structIPAddrList;
IPAddrList  POINTER pIPAddrList;
typedef IPAddPtr
 begin
 LONG nIPAddr;
end;
IPAddPtr  structIPAddPtr;
IPAddPtr  POINTER pIPAddPtr;
POINTER pIN_Addr_Struct;
prototype POINTER wsock32.gethostbyname(BYREF STRING);
prototype POINTER wsock32.gethostname(BYREF STRING, NUMBER);
prototype POINTER wsock32.WSAStartup(INT, POINTER);
prototype POINTER wsock32.inet_ntoa( NUMBER);
prototype POINTER wsock32.WSACleanup();
prototype int     wsock32.WSAGetLastError (   );
 program
pWSAData = &structWSAData;
nRC = UseDLL ("wsock32.dll");
pWSAData -> wHighVersion = 1;
pWSAData -> wVersion     = 1;
nVersion =  0x02000002;   // 0x01000001
pWinSockReturn = WSAStartup(nVersion, pWSAData);
pWinSockReturn = gethostname(szHostName,100);
pHostEnt       = gethostbyname(szHostName);
 nlen         = pHostEnt   -> h_length;   
 pIPAddPtr    = pHostEnt    -> ph_addr_list;
pIPAddPtr   = *pIPAddPtr;
nIPNetAddr  = *pIPAddPtr;
// nIPNetAddr  = pIPAddPtr  -> nIPAddr;
pLocalIPName =  inet_ntoa( nIPNetAddr );
szMYIPAddr   =  pLocalIPName -> szIPAddr;
MessageBox(szMYIPAddr, INFORMATION);
WSACleanup();
exit;

一句话新闻

一文看懂荣耀MagicBook Pro 16
荣耀猎人回归!七大亮点看懂不只是轻薄本,更是游戏本的MagicBook Pro 16.
人们对于笔记本电脑有一个固有印象:要么轻薄但性能一般,要么性能强劲但笨重臃肿。然而,今年荣耀新推出的MagicBook Pro 16刷新了人们的认知——发布会上,荣耀宣布猎人游戏本正式回归,称其继承了荣耀 HUNTER 基因,并自信地为其打出“轻薄本,更是游戏本”的口号。
众所周知,寻求轻薄本的用户普遍更看重便携性、外观造型、静谧性和打字办公等用机体验,而寻求游戏本的用户则普遍更看重硬件配置、性能释放等硬核指标。把两个看似难以相干的产品融合到一起,我们不禁对它产生了强烈的好奇:作为代表荣耀猎人游戏本的跨界新物种,它究竟做了哪些平衡以兼顾不同人群的各类需求呢?