明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2709|回复: 17

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

[复制链接]
发表于 2014-5-21 16:26 | 显示全部楼层 |阅读模式
获取屏幕分辨率:
(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的电脑又可以,请大家帮忙测试一下,谢谢了。
我自己这里没有安装什么附加工具包,也是正常的,故无法知道有什么问题


点评

2004都好使  发表于 2014-5-21 16:44
"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2014-5-21 16:59 | 显示全部楼层
2014以下都没有问题,测试人告诉我2014和2015部分机器可以,部分不行,说跟安装了Visual Studio有关,我找来找去就这个函数可能有问题
发表于 2014-5-23 11:33 | 显示全部楼层
Win32_DesktopMonitor
确定这句
 楼主| 发表于 2014-5-23 11:42 | 显示全部楼层
本帖最后由 小菜123 于 2014-5-23 12:17 编辑

Win32_DesktopMonitor有问题? 不明白为什么只有2014和2015出问题
请加载下面的程序,把文本窗口的显示内容贴上来
  1. (vl-load-com)
  2. (setq wmi (vlax-create-object "WbemScripting.SWbemLocator"))
  3. (princ "\nWmi is:") (vlax-dump-object wmi t)
  4. (setq meth1 (vlax-invoke wmi 'ConnectServer))
  5. (princ "\nMeth1 is:") (vlax-dump-object meth1 t)
  6. (setq meth2 (vlax-invoke meth1 'ExecQuery "Select * from Win32_DesktopMonitor" "WQL" 48))
  7. (princ "\nMeth2 is:") (vlax-dump-object meth2 t)
  8.   (vlax-for n meth2
  9.     (setq w (vlax-get n 'ScreenWidth))
  10.     (setq h (vlax-get n 'ScreenHeight))
  11.   )
  12.   (mapcar 'vlax-release-object (list wmi meth1 meth2))
  13. (princ "\nScreen resolution is:")
  14.   (list w h)
发表于 2014-5-23 12:17 | 显示全部楼层
cad2015  win64测试通过.
发表于 2014-5-23 12:28 | 显示全部楼层
是我说错了,应该是wmi获取的对象失败,我的也不能通过wmi获取对象数据。
 楼主| 发表于 2014-5-23 13:29 | 显示全部楼层
唉,有的电脑行,有的不行,我自己的却好好的
 楼主| 发表于 2014-5-23 17:20 | 显示全部楼层
edata 发表于 2014-5-23 12:28
是我说错了,应该是wmi获取的对象失败,我的也不能通过wmi获取对象数据。

你的电脑低版本的CAD上,运行正常么?
发表于 2014-5-23 18:37 | 显示全部楼层
个人觉得应该是电脑本身的wmi启动失败,造成不能读取wmi数据,我想是不是从注册表出发,去尝试读取。
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Hardware Profiles\0001\System\CurrentControlSet\Services\iAlm\Device0\Mon80861100
 楼主| 发表于 2014-5-23 21:11 | 显示全部楼层
本帖最后由 小菜123 于 2014-5-24 09:16 编辑
edata 发表于 2014-5-23 18:37
个人觉得应该是电脑本身的wmi启动失败,造成不能读取wmi数据,我想是不是从注册表出发,去尝试读取。
HKEY ...

各个电脑和系统注册表的位置都不同,兼容性更差,我的XP系统就没有上面这个键。
请问你的电脑上有低版本的CAD么?试试行不行,如果只是2014不行,不应该是操作系统的问题。
能把下面这句的执行结果贴给我看看么?谢谢!
  1. (vl-load-com)
  2. (setq wmi (vlax-create-object "WbemScripting.SWbemLocator"))
  3. (princ "\nWmi is:") (vlax-dump-object wmi t)
帮我测试的人告诉我在装有Visual Studio的电脑上2014是正常的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-3-29 21:08 , Processed in 0.271591 second(s), 36 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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