在InstallShield中通过主机名获取IP地址

2024-04-27 21:48

本文主要是介绍在InstallShield中通过主机名获取IP地址,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

/* written by Jaron ,2002-07-15 */
/* 原出处:江都资讯网论坛 http://www.jiangdu.net/bbs ;;*/
/* 转载请注明出处和保留此版权信息 */
/* 欢迎使用SiteManager网站管理系统 http://sitemanager.cnzone.net ;; */

// 文 件 名:setup.rul
// 脚本功能:通过主机名获得TCP/IP地址
// 编写日期:2003-07-15
// 使用方法:调用函数 fGetIpAddress(szHost, szIPAdress)
// written by Jaron ,2002-07-15 
// 原出处:江都资讯网论坛 http://www.jiangdu.net/bbs ;;
// 转载请注明出处和保留此版权信息 
// 欢迎使用SiteManager网站管理系统 http://sitemanager.cnzone.net ;; 

#include "Sddialog.h"
#include "IpAddress.rul"

STRING szIPAddress;
STRING szHostName;

BOOL nResult;

program

 SdShowDlgEdit1 ("", "请输入您的主机名称", "主机名:", szHostName);
 nResult = fGetIpAddress(szHostName, szIPAddress);
 if nResult then
 MessageBox ("IP地址是:" + szIPAddress, INFORMATION);
 endif;

endprogram
#include "Sddialog.rul"


==========================
// 文 件 名:IpAddress.rul
// 脚本功能:通过主机名获得TCP/IP地址
// 编写日期:2003-07-15
// 使用方法:
// 1. 在 setup.rul 前面加入 #include "IpAddress.rul" 
// 2. 调用函数 fGetIpAddress(szHost, szIPAdress)
// written by Jaron ,2002-07-15 
// 原出处:江都资讯网论坛 http://www.jiangdu.net/bbs ;;
// 转载请注明出处和保留此版权信息 
// 欢迎使用SiteManager网站管理系统 http://sitemanager.cnzone.net ;; 

prototype NUMBER WSOCK32.WSAStartup( NUMBER, POINTER);
prototype NUMBER WSOCK32.gethostbyname(STRING);
prototype NUMBER KERNEL32.RtlMoveMemory (POINTER, NUMBER, NUMBER);
prototype NUMBER WSOCK32.WSACleanup();

prototype fGetIpAddress(STRING, BYREF STRING);

typedef WSADATA
begin
    INT wversion;
    INT wHighVersion;
    STRING szDescription[255];
    STRING szSystemStatus[128];
    INT iMaxSockets;
    INT iMaxUdpDg;
    INT lpszVendorInfo;

end;

typedef HOSTENT
begin
    NUMBER hName; // As Long
    NUMBER hAliases; // As Long
    SHORT hAddrType; //As Integer
    SHORT hLength; // As Integer
    NUMBER hAddrList; // As Long
end;

typedef IPADDRESS
begin
 CHAR b1; //First
 CHAR b2; //Second
 CHAR b3; //Third
 CHAR b4; //Fourth
end;

function fGetIpAddress(szHost, szIPAdress)
 WSADATA StructWSAData;
 WSADATA POINTER pStructWSAData;

 HOSTENT StructHostEnt;
 HOSTENT POINTER pStructHostEnt; 

 NUMBER nResult;
 NUMBER pHostAddress;

 POINTER pHostIPAddress;
 NUMBER HostIPAddress;

 IPADDRESS IpAddress;
 IPADDRESS POINTER pIpAddress;

 STRING sb1, sb2, sb3, sb4; 

 NUMBER nStartUp;
 BOOL bReturn;

begin

 if szHost = "" then
  return FALSE;
 endif;
 
 if UseDLL(WINSYSDIR^"WSOCK32.DLL") < 0 then
  return FALSE;
 endif;
 
 pStructWSAData = &StructWSAData;
 pStructHostEnt = &StructHostEnt;
 
 nStartUp = WSAStartup(0x101, pStructWSAData);
 
 if nStartUp != 0 then
  return FALSE;
 endif;
 
 pHostAddress = gethostbyname(szHost);
 
 if pHostAddress != 0 then

  RtlMoveMemory (pStructHostEnt, pHostAddress, 16);
  
  pHostIPAddress = &HostIPAddress; 
  RtlMoveMemory (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;
  
 else
  bReturn = FALSE;
  
 endif;
 
 if nStartUp = 0 then
  WSACleanup();
 endif;
 
 UnUseDLL("WSOCK32.DLL");

 return bReturn;

end;

这篇关于在InstallShield中通过主机名获取IP地址的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/941618

相关文章

常用的jdk下载地址

jdk下载地址 安装方式可以看之前的博客: mac安装jdk oracle 版本:https://www.oracle.com/java/technologies/downloads/ Eclipse Temurin版本:https://adoptium.net/zh-CN/temurin/releases/ 阿里版本: github:https://github.com/

webapp地址

F:\LSP\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps

Android Environment 获取的路径问题

1. 以获取 /System 路径为例 /*** Return root of the "system" partition holding the core Android OS.* Always present and mounted read-only.*/public static @NonNull File getRootDirectory() {return DIR_ANDR

Jenkins 插件 地址证书报错问题解决思路

问题提示摘要: SunCertPathBuilderException: unable to find valid certification path to requested target...... 网上很多的解决方式是更新站点的地址,我这里修改了一个日本的地址(清华镜像也好),其实发现是解决不了上述的报错问题的,其实,最终拉去插件的时候,会提示证书的问题,几经周折找到了其中一遍博文

2024.9.8 TCP/IP协议学习笔记

1.所谓的层就是数据交换的深度,电脑点对点就是单层,物理层,加上集线器还是物理层,加上交换机就变成链路层了,有地址表,路由器就到了第三层网络层,每个端口都有一个mac地址 2.A 给 C 发数据包,怎么知道是否要通过路由器转发呢?答案:子网 3.将源 IP 与目的 IP 分别同这个子网掩码进行与运算****,相等则是在一个子网,不相等就是在不同子网 4.A 如何知道,哪个设备是路由器?答案:在 A

JS和jQuery获取节点的兄弟,父级,子级元素

原文转自http://blog.csdn.net/duanshuyong/article/details/7562423 先说一下JS的获取方法,其要比JQUERY的方法麻烦很多,后面以JQUERY的方法作对比。 JS的方法会比JQUERY麻烦很多,主要则是因为FF浏览器,FF浏览器会把你的换行也当最DOM元素。 <div id="test"><div></div><div></div

vcpkg子包路径批量获取

获取vcpkg 子包的路径,并拼接为set(CMAKE_PREFIX_PATH “拼接路径” ) import osdef find_directories_with_subdirs(root_dir):# 构建根目录下的 "packages" 文件夹路径root_packages_dir = os.path.join(root_dir, "packages")# 如果 "packages"

【干货分享】基于SSM的体育场管理系统的开题报告(附源码下载地址)

中秋送好礼 中秋佳节将至,祝福大家中秋快乐,阖家幸福。本期免费分享毕业设计作品:《基于SSM的体育场管理系统》。 基于SSM的体育场管理系统的开题报告 一、课题背景与意义 随着全民健身理念的深入人心,体育场已成为广大师生和社区居民进行体育锻炼的重要场所。然而,传统的体育场管理方式存在诸多问题,如资源分配不均、预约流程繁琐、数据统计不准确等,严重影响了体育场的使用效率和用户体验。

Weex入门教程之4,获取当前全局环境变量和配置信息(屏幕高度、宽度等)

$getConfig() 获取当前全局环境变量和配置信息。 Returns: config (object): 配置对象;bundleUrl (string): bundle 的 url;debug (boolean): 是否是调试模式;env (object): 环境对象; weexVersion (string): Weex sdk 版本;appName (string): 应用名字;

MFC中App,Doc,MainFrame,View各指针的互相获取

纸上得来终觉浅,为了熟悉获取方法,我建了个SDI。 首先说明这四个类的执行顺序是App->Doc->Main->View 另外添加CDialog类获得各个指针的方法。 多文档的获取有点小区别,有时间也总结一下。 //  App void CSDIApp::OnApp() {      //  App      //  Doc     CDocument *pD