Bill Tillman 发表于 2022-7-6 07:40:12

Corp上的LISP代码问题

我有一个李Mac的弹出代码副本,我在我的办公室尝试,所有发生的是一个快速闪烁的鼠标点击,但没有弹出窗口。我在家用机器上复制了相同的代码,效果很好。今天晚些时候,我会再次检查一下办公室里的副本,但有没有人对限制它在特定机器上运行的因素有什么建议。这个地方的IT人员有一些政策,但他们给了我的机器几乎完全的访问权限,因为我在做开发。
 

(defun c:test (/ x)
(vl-load-com)

(LM:Popup "Title Text" "This is a test message." (+ 2 48 4096))

)

;;-------------------------=={ Popup }==----------------------;;
;;                                                            ;;
;;Displays a pop-up message box prompting the user.         ;;
;;------------------------------------------------------------;;
;;Author: Lee Mac, Copyright © 2011 - www.lee-mac.com       ;;
;;------------------------------------------------------------;;
;;Arguments:                                                ;;
;;title - Text to be displayed in the pop-up title bar      ;;
;;msg   - Text content of the pop-up message box            ;;
;;flags - Integer indicating icon & button appearance       ;;
;;------------------------------------------------------------;;
;;Returns:Integer indicating the button pressed to exit   ;;
;;------------------------------------------------------------;;
(defun LM:Popup ( title msg flags / wsh res )
(vl-catch-all-apply
   (function
   (lambda nil
       (setq wsh (vlax-create-object "WScript.Shell"))
       (setq res (vlax-invoke-method wsh 'popup msg 0 title flags))
   )
   )
)
(if wsh (vlax-release-object wsh))
res
)

ReMark 发表于 2022-7-6 07:46:03

这两台计算机在操作系统、软件(AutoCAD)和硬件方面完全相同吗?
 
“几乎完全访问”是什么意思?要么你有完全访问权限,要么你没有。你想要完全的管理员权限。告诉它去捣乱一段时间,不要妨碍你做你的工作。

MSasu 发表于 2022-7-6 07:55:02

它可能来自您使用的Windows版本-请尝试在控制台中运行此行:
(vlax-invoke-method (vlax-create-object "WScript.Shell") 'popup "TEST" 0 "X" 2)

Bill Tillman 发表于 2022-7-6 07:59:56

MSasu,
 
我确保已执行(vl load com),然后从控制台运行上面的命令,并得到以下消息:
 
; 错误:错误的参数类型:VLA-OBJECT nil
 
我在另一台运行XP和2013的机器上做了同样的事情,它运行正常。
 
我在这间办公室里与另外两台电脑(XP with AC 2009)进行了双重检查,李·Mac的代码在这些电脑上坚如磐石,运行完美。我还仔细检查了wscript。exe在这台机器上,并且启用了windows脚本,两者都是肯定的。我今天早上冷启动了这台机器以防万一。无论我在公司计算机上尝试多少次,它在命令行上都只返回nil。IT人员还没有加入,但相信我,尽管这些人在网络上受过教育,但他们很快就会在这类问题上成为众矢之的。我知道我会用这台机器做什么,那就是重新格式化硬盘并重新安装一切。。。但它绝不允许我这样做,除非我贿赂他们。
 
评论
 
 
阿门兄弟。。。但是,再加上4美元,我就能在星巴克喝到一杯拿铁。

Lee Mac 发表于 2022-7-6 08:06:42

尝试不使用4096位代码,即:
 
(LM:Popup "Title Text" "This is a test message." (+ 2 48))

Bill Tillman 发表于 2022-7-6 08:09:48

试图去掉4096,但结果仍然是一样的。命令行上只有nil返回,没有弹出窗口。它只与这台机器隔离。办公室里的其他每台机器都能很好地运行代码。由于我能够将远程桌面应用到另一台正确运行代码的机器上,所以我将把这台机器转移到这台有问题的机器上,现在继续。

BIGAL 发表于 2022-7-6 08:14:18

一个简单的弹出窗口,如果你只想一个简单的消息,没有标题等,但抓住你的注意力
 
(setq ans "this is a popup")
(alert ans)
or
(alert "this is a popup")

BlackBox 发表于 2022-7-6 08:20:59

不确定这是否是一个可接受的选项,但DOSLib实际上有一些很棒的界面(对话框、HTML、弹出窗口、气球等)LispFunction方法。对于像我这样不需要自定义对话框、从未学习过DCL和/或没有时间处理Windows窗体或WPF用户控件所需的所有内容的人来说,这真是太好了。

Bill Tillman 发表于 2022-7-6 08:28:43

谢谢MSasu发布的一行代码是一段真正的杀手级代码。很简单,切中要害,而且有效。。。。在我测试过的每台机器上,除了他们给我开发的这个POS机。这是作为一名开发人员的好处之一。一旦你调试了你的代码,你就不必再运行它了。

Lee Mac 发表于 2022-7-6 08:31:45

 
这一行程序也不会从内存中释放WSH对象。
页: [1] 2
查看完整版本: Corp上的LISP代码问题