祝愿大家身体健康!

 站点注册  找回密码
 站点注册

QQ登录

只需一步,快速开始

查看: 4933|回复: 1

pb中获得本机IP地址的另一个方法

[复制链接]

pb中获得本机IP地址的另一个方法

[复制链接]
JohnPhan

主题

0

回帖

228

积分

注册会员

积分
228
贡献
在线时间
小时
2007-7-16 11:26:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?站点注册

×

一般人多用run("regsvr32 /s MSWINSCK.OCX")注册后,利用这个控件,获得包括IP地址在内的本机各种信息。

这里介绍的是  利用访问注册表的方法,来获得本机的IP地址。因为没有利用别人的控件,程序更“独立”了。

GetEnvironment(ge_env)
CHOOSE CASE ge_env.OSType
//aix!, hpux!, macintosh!, osf1!, sol2!, windows!, wondowsnt!
 CASE Windows!
  gs_OStype = "Windows"
 CASE WindowsNT!
  gs_OStype = "WindowsNT"
 CASE ELSE
  gs_OStype = "Other"   
END CHOOSE

//使用注册表取本机IP地址
String ls_value = ""
String subkeys[]
CHOOSE CASE gs_OStype
 CASE 'Windows'
  String skey = 'HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\NetTrans'
  String sname = 'IPAddress'
  Int i
  String skey1
  ls_value = ''
  RegistryKeys ( skey, subkeys )
  IF UpperBound(subkeys) > 0 THEN
   FOR i = 1 To UpperBound(subkeys)
    skey1 = skey+'\'+subkeys
    IF RegistryGet(skey1,sname,ls_value) = 1 THEN
     IF ls_value <> '0.0.0.0' THEN
      EXIT
     END IF
    END IF
   NEXT
  END IF
 CASE "WindowsNT"
  String ls_keynt1 = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards'
  IF RegistryKeys (ls_keynt1,subkeys ) = 1 THEN
   IF UpperBound(subkeys) > 0 THEN
    ls_keynt1 = ls_keynt1+'\'+subkeys[1]
   END IF
  END IF
  //bill Tcpip 可能需要查询 ls_keynt1 字段所有的子项,主要是指:最后一个项 6 在不同的机器上是不一样的
  String ls_keynt2 = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\'
  String ls_keynt3 = '\Parameters\Tcpip'
  String ls_name_nt1 = 'ServiceName'
  String ls_name_nt2 = 'IPAddress'
  String ls_name_nt3 = ''
  String ls_value2[]
  IF RegistryGet(ls_keynt1,ls_name_nt1,ls_value) = 1 THEN
   ls_name_nt3 = ls_keynt2+ls_value+ls_keynt3
   IF RegistryGet(ls_name_nt3,ls_name_nt2,RegMultiString!,ls_value2) = 1 THEN
    ls_value = ls_value2[1]
   ELSE
    //   可能有多个ip地址  ls_value = ls_value2[1] + " ; " + ls_value2[2]
    ls_value = ls_value2[1]
   END IF
  ELSE
   ls_value = ''
  END IF
 CASE ELSE
  ls_value = ''
  RETURN
END CHOOSE
gs_ipaddress  = ls_value

[此贴子已经被作者于2007-8-21 8:47:16编辑过]
共享共进共赢Sharing And Win-win Results
SYBASEBBS - 免责申明1、欢迎访问“SYBASEBBS.COM”,本文内容及相关资源来源于网络,版权归版权方所有!本站原创内容版权归本站所有,请勿转载!
2、本文内容仅代表作者观点,不代表本站立场,作者自负,本站资源仅供学习研究,请勿非法使用,否则后果自负!请下载后24小时内删除!
3、本文内容,包括但不限于源码、文字、图片等,仅供参考。本站不对其安全性,正确性等作出保证。但本站会尽量审核会员发表的内容。
4、如本帖侵犯到任何版权问题,请立即告知本站 ,本站将及时删除并致以最深的歉意!客服邮箱:admin@sybasebbs.com
yifeng28

主题

0

回帖

4

积分

新手上路

积分
4
贡献
在线时间
小时
2007-9-17 09:09:53 | 显示全部楼层

查注册表也是够辛苦的.

不过好不错, 支持一下!

共享共进共赢Sharing And Win-win Results
您需要登录后才可以回帖 登录 | 站点注册

本版积分规则

免责声明:
本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:Admin@SybaseBbs.com

QQ|Archiver|PowerBuilder(PB)BBS社区 ( 鲁ICP备2021027222号-1 )

GMT+8, 2024-12-22 23:01 , Processed in 0.041828 second(s), 7 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表