devcon 发表于 2012-4-7 01:28:39

[已解决]远程桌面中运行脚本出错的问题

本帖最后由 devcon 于 2012-4-9 14:26 编辑

脚本在本地运行正常,通过VNC控制,在局域网另一台机器里运行也正常(即使一运行脚本就关掉或最小化VNC控制窗口);

通过XP的远程桌面在广域网上的VPS中运行脚本就会出现问题:如果始终开着远程桌面的窗口,那么能看到脚本运行正常;但是一旦脚本运行过程中,远程桌面窗口被切换而不在最前,或被最小化,或关闭,过段时间再打开远程桌面的窗口,就会发现脚本运行出错,仿佛被暂停或干扰了一样。

搜了一下论坛,发现几年前的旧帖就提到了类似问题:

远程桌面总是失效

在远程桌面中执行脚本无效

远程桌面中运行脚本无效,能够有另外的写法吗?

原帖都已无法跟帖,在此附上自己的问题,一并提出,希望有知道原委的朋友能不吝指点一下,多谢!

502762378 发表于 2012-4-7 01:46:11

VNC是直接SHOW出远程电脑的桌面,对方如果有权限执行你的脚本,当然会完成,而XP的远程桌面是交互式登陆,是以你这边的账号密码验证登陆,然后执行你的脚本,如果你VNC联过去或者直接看对方的屏幕,我不知道会不会有你脚本的进程,但你断开连接的同时,脚本肯定应该也中断执行了

devcon 发表于 2012-4-7 13:12:47

本帖最后由 devcon 于 2012-4-7 13:30 编辑

VNC是直接SHOW出远程电脑的桌面,对方如果有权限执行你的脚本,当然会完成,而XP的远程桌面是交互式登陆,是 ...
502762378 发表于 2012-4-7 01:46 http://www.autoitx.com/images/common/back.gif
可能没理解我的意思。我的脚本都是放在服务器端在运行的,和我本人登录与否无关,我用vnc或RDP登录也只是查看方式的不同。
昨晚搜了下国外的资料,发现有好多关于这个问题的提问,也没什么很好的解决方案。
基本上,问题的出现和远程服务器是否有物理屏幕很有关系,当RDP桌面被最小化或关闭时,和屏幕、窗口定位有关的命令,诸如winactivate,还有send命令,都会相应地挂起。而用vnc查看的局域网内的机器,本身有显示屏,所以我的vnc客户端窗口关不关都不影响它上面的脚本执行;远程的vps就不同了,一旦我监控窗口最小化或关闭,远端的机器就相当于被拿掉了屏幕,于是就出了问题。
附几个有关的e文链接:
http://kb.froglogic.com/display/KB/Automation+on+Windows+without+a+screen

http://blog.smartbear.com/post/10-10-11/testcomplete-tip-running-tests-in-minimized-remote-desktop-windows/

http://www.autoitscript.com/forum/topic/127212-autoit-running-in-rdp-sessions/

user3000 发表于 2012-4-7 16:09:17

回复 1# devcon
前两个月, 我写了个脚本, 是需要在远程计算机上模拟键盘操作.
我也发现了你现在这个'运行'问题.
我的解决方法是这样, 从本机先远程第一台机器, 再通过这台机器远程要执行脚本的机器,
最后运行脚本!
保留第一吧机器上的远程窗口,从本机关闭到第一吧机器的远程.
这样脚本还会持续正常工作!

不知听明白没?需要3台机器, 一台是'中转'机器!

user3000 发表于 2012-4-7 16:10:55

对了, 如果执行脚本的机器还经常被访问,那么应该专门再建立一个帐户来'独立'远程并执行脚本!

devcon 发表于 2012-4-8 18:26:36

回复devcon
前两个月, 我写了个脚本, 是需要在远程计算机上模拟键盘操作.
我也发现了你现在这个'运行' ...
user3000 发表于 2012-4-7 16:09 http://www.autoitx.com/images/common/back.gif

谢谢,明白意思,外文资料里也提到了此法,因为需要一台额外的机器进行中转,所以我感觉这法子是不得已的无奈之举。

laot 发表于 2012-4-16 21:28:39

你检查一下你的脚本里面是否有涉及到键盘或鼠标操作的函数,如果有的话,因为你的vps应该是没有安装鼠标和键盘的,当RDP桌面被最小化或关闭时,因为失去了鼠标和键盘,和他们有关的函数都会暂停。
我也有遇到了这个问题,一直没有找到好的解决办法,如果楼主最后找到了解决办法,请予以指导

78306909 发表于 2015-8-5 13:38:19

我遇到这个问题,WinActive后WinWaitActive一直等待,从界面上看,所需的窗口在最上面。实际通过WinGetState获取这种窗口的状态,状态时窗口存在、窗口可见,但窗口未激活。
页: [1]
查看完整版本: [已解决]远程桌面中运行脚本出错的问题