小菜123 发表于 2014-5-21 16:26:44

请安装有2014和2015的朋友帮忙测试一个函数

获取屏幕分辨率:
(defun get_scr_resolution ( / w h wmi meth1 meth2 n)
(setq wmi (vlax-create-object "WbemScripting.SWbemLocator"))
(setq meth1 (vlax-invoke wmi 'ConnectServer))
(setq meth2 (vlax-invoke meth1 'ExecQuery "Select * from Win32_DesktopMonitor" "WQL" 48))
(vlax-for n meth2
    (setq w (vlax-get n 'ScreenWidth))
    (setq h (vlax-get n 'ScreenHeight))
)
(mapcar 'vlax-release-object (list wmi meth1 meth2))
(list w h)
)

不知道是不是所有的2014中都能运行正常。我的程序在有的电脑上不能运行(但不确定哪个函数有问题),装有Visual studio的电脑又可以,请大家帮忙测试一下,谢谢了。
我自己这里没有安装什么附加工具包,也是正常的,故无法知道有什么问题


小菜123 发表于 2014-5-21 16:59:52

2014以下都没有问题,测试人告诉我2014和2015部分机器可以,部分不行,说跟安装了Visual Studio有关,我找来找去就这个函数可能有问题

edata 发表于 2014-5-23 11:33:15

Win32_DesktopMonitor
确定这句

小菜123 发表于 2014-5-23 11:42:40

本帖最后由 小菜123 于 2014-5-23 12:17 编辑

Win32_DesktopMonitor有问题? 不明白为什么只有2014和2015出问题
请加载下面的程序,把文本窗口的显示内容贴上来(vl-load-com)
(setq wmi (vlax-create-object "WbemScripting.SWbemLocator"))
(princ "\nWmi is:") (vlax-dump-object wmi t)
(setq meth1 (vlax-invoke wmi 'ConnectServer))
(princ "\nMeth1 is:") (vlax-dump-object meth1 t)
(setq meth2 (vlax-invoke meth1 'ExecQuery "Select * from Win32_DesktopMonitor" "WQL" 48))
(princ "\nMeth2 is:") (vlax-dump-object meth2 t)
(vlax-for n meth2
    (setq w (vlax-get n 'ScreenWidth))
    (setq h (vlax-get n 'ScreenHeight))
)
(mapcar 'vlax-release-object (list wmi meth1 meth2))
(princ "\nScreen resolution is:")
(list w h)

kwok 发表于 2014-5-23 12:17:57

cad2015win64测试通过.

edata 发表于 2014-5-23 12:28:23

是我说错了,应该是wmi获取的对象失败,我的也不能通过wmi获取对象数据。

小菜123 发表于 2014-5-23 13:29:26

唉,有的电脑行,有的不行,我自己的却好好的

小菜123 发表于 2014-5-23 17:20:51

edata 发表于 2014-5-23 12:28 static/image/common/back.gif
是我说错了,应该是wmi获取的对象失败,我的也不能通过wmi获取对象数据。

你的电脑低版本的CAD上,运行正常么?

edata 发表于 2014-5-23 18:37:24

个人觉得应该是电脑本身的wmi启动失败,造成不能读取wmi数据,我想是不是从注册表出发,去尝试读取。
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Hardware Profiles\0001\System\CurrentControlSet\Services\iAlm\Device0\Mon80861100

小菜123 发表于 2014-5-23 21:11:55

本帖最后由 小菜123 于 2014-5-24 09:16 编辑

edata 发表于 2014-5-23 18:37 static/image/common/back.gif
个人觉得应该是电脑本身的wmi启动失败,造成不能读取wmi数据,我想是不是从注册表出发,去尝试读取。
HKEY ...
各个电脑和系统注册表的位置都不同,兼容性更差,我的XP系统就没有上面这个键。
请问你的电脑上有低版本的CAD么?试试行不行,如果只是2014不行,不应该是操作系统的问题。
能把下面这句的执行结果贴给我看看么?谢谢!(vl-load-com)
(setq wmi (vlax-create-object "WbemScripting.SWbemLocator"))
(princ "\nWmi is:") (vlax-dump-object wmi t)帮我测试的人告诉我在装有Visual Studio的电脑上2014是正常的
页: [1] 2
查看完整版本: 请安装有2014和2015的朋友帮忙测试一个函数