在InstallShield中引用WINSOCK 的示例代码

所属分类: 脚本专栏 / 其它 阅读数: 913
收藏 0 赞 0 分享
通过以下示例,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;
更多精彩内容其他人还在看

linux Shell学习笔记第五天

最近看Shell有点头晕了,再看一天就要忙公司的squid问题了。 现在双线机房即将成为单线机房。
收藏 0 赞 0 分享

linux Shell学习笔记最后一节,温故与知新

linux Shell学习笔记最后一节,这节是对前面章节的小结,学习shell编程的朋友可以参考下。
收藏 0 赞 0 分享

一个不错的shell 脚本教程 入门级

一个很不错的bash脚本编写教程,至少没接触过BASH的也能看懂
收藏 0 赞 0 分享

脚本发生错误怎么解决 当前页的脚本发生错误的解决方法小结

我们经常在访问网页的时候,右下角经常出现脚本错误提示,记得一家国外的银行因为这个原因导致业务受到很大的影响,如果放到网站上对用户也容易产生一些错觉,网站有问题,不安全等等疑问
收藏 0 赞 0 分享

Perl 与 Python 之间的一些异同整理

Python 和 Perl 作为主流脚本语言中的成员,在语法等方面有很多相似之处,却又存在一定的差异。本文通过对这两种语言的比较,从而使得相关开发人员可以更深刻的了解和掌握这两种语言
收藏 0 赞 0 分享

两个很详细的shell 实例代码

现在我们来讨论编写一个脚本的一般步骤。任何优秀的脚本都应该具有帮助和输入参数。并且写一个伪脚本(framework.sh),该脚本包含了大多数脚本都需要的框架结构,是一个非常不错的主意
收藏 0 赞 0 分享

脚本与批处理合二为一

我们现在可以用JScript或VBScript来完成更复杂的工作,配合WMI,可以说是无所不能
收藏 0 赞 0 分享

利用命令进行简单的增量文件夹备份(win/linux)

这两天突然看到一个需求点,需要实现增量备份的功能,找了一些资料,记录一下如下命令,该命令可以利用命令行进行简单的增量备份功能
收藏 0 赞 0 分享

Swift语言与Applescript的区别?AppleScript的发展状况?

这篇文章主要介绍了Swift语言与Applescript的区别?AppleScript的发展状况? ,需要的朋友可以参考下
收藏 0 赞 0 分享

git eclipse 插件的安装

通常我们开发项目用ecliipse的比较多。所以在这把eclipse的Git插件安装和使用,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多