在InstallShield中引用WINSOCK 的示例代码
            (编辑:jimmy 日期: 2025/11/4 浏览: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刷新了人们的认知——发布会上,荣耀宣布猎人游戏本正式回归,称其继承了荣耀 HUNTER 基因,并自信地为其打出“轻薄本,更是游戏本”的口号。
众所周知,寻求轻薄本的用户普遍更看重便携性、外观造型、静谧性和打字办公等用机体验,而寻求游戏本的用户则普遍更看重硬件配置、性能释放等硬核指标。把两个看似难以相干的产品融合到一起,我们不禁对它产生了强烈的好奇:作为代表荣耀猎人游戏本的跨界新物种,它究竟做了哪些平衡以兼顾不同人群的各类需求呢?