获取本机IP地址
(setq obj (vlax-get-or-create-object "rcbdyctl.setting"))(setq ip (vlax-get-property obj 'GetIPAddress))
(vlax-release-object obj)
上述代码为获取本机IP地址,若干年前在由明总和英雄无敌指点而得。
如今换了Win 7系统,发现这段代码不能用了。
仔细查了一下
第一行在XP下返回:#<VLA-OBJECT ISetting 1a130df8>
而在Win 7 下返回:nil
不知Win 7 下“rcbdyctl.setting"应该改为什么?
恐怕在windows 7下不能这样使用。
最好用其他办法。参见我下面的帖子
http://bbs.mjtd.com/thread-85042-1-1.html 拜读大作中…… 有点高深啊,没能读太懂,但看到“WINSOCK对象 ;;获取本机的内网IP”这段,XP和Win 7下测试
(setq wsock (vlax-create-object "MSWinsock.Winsock"))
均返回nil
试试我这段在win7下可以吗
(defun c:DLLTest ( )
(alert
(strcat
"IPAddress = ["
(vlax-invoke
(vla-GetInterfaceObject
(vlax-get-acad-object)
"DLLTest.Utility"
)
'GetIPAddress
)
"]"
)
)
(princ)
)将附件动态库拷贝到支持路径下。执行lsp程序。
非常感谢楼上,但我刚在XP下试了一下暂时不行。
; 错误: Automation 错误。 加载应用程序时出现问题
而且这得拷个文件到支持目录,比较麻烦。
再次感谢! 本帖最后由 highflybird 于 2011-5-5 18:42 编辑
回复 dinosaurhxe 的帖子
其实我在那篇帖子里面讲了几种方法。
winsock不是所有的机器都有。
(defun GetIP (/ SWbemLocator Service IPSet lst IP Address)
(setq SWbemLocator (vlax-create-object "WbemScripting.SWbemLocator"))
(setq Service (vlax-invoke obj 'ConnectServer))
(setq IPSet (vlax-invoke Service 'InstancesOf "Win32_NetworkAdapterConfiguration"))
(setq lst nil)
(vlax-for IP IPSet
(if (setq Address (vlax-get IP 'IPAddress ))
(setq lst (cons Address lst))
)
)
(vlax-release-object IPSet)
(vlax-release-object Service)
(vlax-release-object SWbemLocator)
(reverse lst)
)
其实还有另外一种方法,就是读取注册表中的
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces
那几个数值,就可以得到的。
(setq Service (vlax-invoke obj 'ConnectServer))在XP和Win7中出现同样的错误。
; 错误: ActiveX 服务器返回错误: 未知名称: CONNECTSERVER
读注册表是个不错的方法,可怎么遍历 Interfaces下几个目录的IpAddress呢? 嗯,找到方法了,感谢!(defun getmyip (/ lst str)
(setq lst
(vl-registry-descendents
"HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces"
)
)
(setq str "")
(foreach ele lst
(setq str
(strcat
str
";"
(nth
1
(vl-registry-read
(strcat
"HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces\\"
ele
)
"IPAddress"
)
)
)
)
)
str
) 还有个问题,XP下是IPAddress而Win7下是DhcpIPAddress。
页:
[1]
2