pb中获得本机IP地址的另一个方法
<p>一般人多用run("regsvr32 /s MSWINSCK.OCX")注册后,利用这个控件,获得包括IP地址在内的本机各种信息。</p><p>这里介绍的是 利用访问注册表的方法,来获得本机的IP地址。因为没有利用别人的控件,程序更“独立”了。</p><p>GetEnvironment(ge_env) <br/>CHOOSE CASE ge_env.OSType<br/>//aix!, hpux!, macintosh!, osf1!, sol2!, windows!, wondowsnt!<br/> CASE Windows!<br/> gs_OStype = "Windows"<br/> CASE WindowsNT!<br/> gs_OStype = "WindowsNT"<br/> CASE ELSE<br/> gs_OStype = "Other" <br/>END CHOOSE</p><p></p><p>//使用注册表取本机IP地址<br/>String ls_value = ""<br/>String subkeys[]<br/>CHOOSE CASE gs_OStype<br/> CASE 'Windows'<br/> String skey = 'HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\NetTrans'<br/> String sname = 'IPAddress'<br/> Int i<br/> String skey1<br/> ls_value = ''<br/> RegistryKeys ( skey, subkeys )<br/> IF UpperBound(subkeys) > 0 THEN<br/> FOR i = 1 To UpperBound(subkeys)<br/> skey1 = skey+'\'+subkeys<br/> IF RegistryGet(skey1,sname,ls_value) = 1 THEN<br/> IF ls_value <> '0.0.0.0' THEN<br/> EXIT<br/> END IF<br/> END IF<br/> NEXT<br/> END IF<br/> CASE "WindowsNT"<br/> String ls_keynt1 = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards'<br/> IF RegistryKeys (ls_keynt1,subkeys ) = 1 THEN<br/> IF UpperBound(subkeys) > 0 THEN<br/> ls_keynt1 = ls_keynt1+'\'+subkeys<br/> END IF<br/> END IF<br/> //bill Tcpip 可能需要查询 ls_keynt1 字段所有的子项,主要是指:最后一个项 6 在不同的机器上是不一样的<br/> String ls_keynt2 = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\'<br/> String ls_keynt3 = '\Parameters\Tcpip'<br/> String ls_name_nt1 = 'ServiceName'<br/> String ls_name_nt2 = 'IPAddress'<br/> String ls_name_nt3 = ''<br/> String ls_value2[]<br/> IF RegistryGet(ls_keynt1,ls_name_nt1,ls_value) = 1 THEN<br/> ls_name_nt3 = ls_keynt2+ls_value+ls_keynt3<br/> IF RegistryGet(ls_name_nt3,ls_name_nt2,RegMultiString!,ls_value2) = 1 THEN<br/> ls_value = ls_value2<br/> ELSE<br/> // 可能有多个ip地址 ls_value = ls_value2 + " ; " + ls_value2<br/> ls_value = ls_value2<br/> END IF<br/> ELSE<br/> ls_value = ''<br/> END IF<br/> CASE ELSE<br/> ls_value = ''<br/> RETURN<br/>END CHOOSE<br/>gs_ipaddress = ls_value</p>[此贴子已经被作者于2007-8-21 8:47:16编辑过]
<p>查注册表也是够辛苦的.</p><p>不过好不错, 支持一下!</p>
页:
[1]