乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 40|回复: 4

[编程交流] 两个监视器的编程。。

[复制链接]

62

主题

466

帖子

404

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
310
发表于 2022-7-6 08:16:26 | 显示全部楼层 |阅读模式
这看起来很愚蠢,但是,你怎么知道一个用户有多少个监视器而不看你的隔间墙呢?我们在excel和autocad中做了很多事情。我只是想把两者结合起来。
回复

使用道具 举报

62

主题

466

帖子

404

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
310
发表于 2022-7-6 08:43:46 | 显示全部楼层
我正在努力为我离开这个地方后将要工作的每个人做一个Lisp程序的口吃。我不打算做这份工作很长时间。我可以只做一个设置选项,让用户选择监视器的数量。。如果可以的话,我想避免
回复

使用道具 举报

7

主题

340

帖子

338

银币

初来乍到

Rank: 1

铜币
37
发表于 2022-7-6 08:57:58 | 显示全部楼层
如果你不能问,你不能四处看看。。。我不知道该告诉你什么。
 
当你说“每个人”时,你是指这个国家的每个人还是只指那个公司的每个人?
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 09:08:13 | 显示全部楼层
如果我理解正确的话,您希望通过编程找到工作站是否有一个或两个显示器。
在这里,您可以找到列出所连接监视器序列号的VBS代码-滚动到页面底部。您可以调整此代码以仅返回True或False。
 
当做
米尔恰
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 09:17:58 | 显示全部楼层
在研究了上面链接中的VBA代码后,我尝试将其转换为AutoLISP:
 
  1. (defun CountMonitors( / regPath listMonitors device id theType IsMonitor displayCount )
  2. ;registry path that store registred monitors (in use or discontinued)
  3. (setq regPath "HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Enum\\DISPLAY\")
  4. ;gather all registred "display" devices (monitors or other)
  5. (setq listMonitors (vl-registry-descendents regPath))
  6. (setq device       (car listMonitors))
  7. (setq displayCount 0)
  8. ;parse "display" devices
  9. (foreach device listMonitors
  10. (setq id (vl-registry-descendents (strcat regPath device)))             ;get product ID for this device
  11. (if id
  12.   (progn
  13.    (setq device  (strcat regPath device "\" (car id))
  14.          theType (vl-registry-read device "HardwareID"))                 ;list entries under hardware ID
  15.    (if (not (listp theType)) (setq theType (list theType)))              ;not sure if above key return always a list !!!
  16.    (setq IsMonitor nil)
  17.    (foreach val theType                                                  ;check if device is a monitor
  18.     (if (and (equal (type val) 'STR)
  19.              (wcmatch val "Monitor\\*"))
  20.      (setq IsMonitor T)
  21.     )
  22.    )
  23.    ;if device is a monitor check if is attached (should have a sub-key named "Control")
  24.    (if IsMonitor
  25.     (if (member "Control"
  26.                 (vl-registry-descendents device))
  27.      (setq displayCount (1+ displayCount))                               ;count current monitor
  28.     )
  29.    )
  30.   )
  31. )
  32. )
  33. (if (> displayCount 0)
  34. (alert (strcat "Your workstation have " (itoa displayCount) " monitor" (if (= displayCount 1) "" "s") "!"))
  35. (alert "Unable to detect monitor on this workstation!")
  36. )
  37. displayCount                                                             ;return number of monitors on workstation
  38. )

 
不幸的是,直到星期一,我才能在有两个监视器的工作站上测试这一点。
 
当做
米尔恰
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-9 08:59 , Processed in 0.464675 second(s), 62 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表