我正在使用WinActivate,并且能够调出窗口,但是该窗口随后不处于活动状态/未选中(选择窗口时,窗口中的标题栏为灰色,而不是深蓝色或明亮的颜色)。在宏的其余部分运行之前,我需要单击窗口并在宏中手动执行下一步。有时,当我运行宏时,它会完美运行,并且窗口会弹出并保持激活状态。但是有时宏在窗口打开后停滞,但是我注意到窗口并没有真正被选中/激活(窗口的标题栏变暗,其外观类似于我在窗口外部单击时的外观)。我已经尝试过WinRestore,但仍然遇到问题。
我认为当我要激活的窗口没有最小化时,宏起作用。但是,如果我最小化窗口,然后运行宏,则winActivate会弹出窗口,但窗口的标题栏为灰色,就像该窗口未处于活动状态一样。宏将停滞,直到我单击窗口并手动完成宏的下一步。窗口启动后,我试图在窗口上单击鼠标左键,但是由于某种原因它无法正常工作,并且宏将无法激活窗口并停止运行,直到我单击窗口并手动完成宏的下一步(这就像宏将其视为我什至没有添加额外的步骤来单击窗口一样)。
答案 0 :(得分:0)
Windows并非总是表现相同。由父窗口生成的子窗口有时不稳定。命令并不总是有效。 ControlClick似乎特别容易遇到麻烦。
在使用多个窗口时,最好先执行WinActivation,然后立即执行下一步。在脚本运行时仅在屏幕上移动鼠标可能会干扰脚本命令。
有时,当ControlClick命令的行为不正常时,我先将鼠标光标移到所需按钮上,然后再进行ControlClick。
有时我必须找到所需的按钮位置,然后在按钮的x,y位置单击鼠标。在WinActivate和按钮单击命令之前和之后,我还使用BlockInput On和BLockInput Off命令。确保不要将BlockInput置于循环内,除非在同一循环内紧随其后的是BlockInput。如果在BlockInput On之后陷入循环,则您将被锁定,可能必须重新启动PC才能退出。
如果WinActivate无法正常工作,则可以找到窗口的位置,然后在标题栏上计算空白点并单击鼠标。
我总是找到一种方法来代替不稳定的命令。我只是深入研究手册,并找到完成它的困难方法。我几天前写了一个小脚本,它使用了Control命令。它在第一天运行良好,然后死了。我最后用这里大多数人认为的尼安德特人代码重写了它,但是它起作用了,格罗格很高兴。 :)
答案 1 :(得分:0)
在一个行为特别糟糕的程序中,最小化窗口存在问题。该窗口不会最小化到屏幕底部的PC任务栏。它最小化到打开它的父窗口的底部。 WinMinimize命令可将窗口最小化到父窗口的底部,但WinActivate不会将其备份。备份窗口的唯一方法是单击最小化窗口的标题栏按钮。
不是将脚本中的窗口最小化,而是将其向下移动到屏幕底部,然后在需要时将其向上移动。
第一个子窗口的另一个问题是,如果父级打开了第二个子窗口,则无法将其关闭。必须先关闭第二个子窗口,然后才能关闭第一个子窗口。
如果使用WinWaitActive命令,则除非指定了最大等待时间,否则如果所需的窗口未激活,它将锁定脚本。检查手册中的语法是否正确。
有时候,您所要做的就是完全按照您在适当位置用鼠标点击手动进行操作的方式来自动化该过程。
这会变得非常复杂,因为您通常必须验证单击的x,y位置,并且在继续下一步之前必须完成操作。
您不能总是依赖睡眠声明延迟。有时候,事情只是花费自己的甜蜜时光来发生。通常比sleep语句的时间长就足够了,您的脚本被牢牢地锁定了。
我通常希望单击一下即可进行更改。有时是按钮的启用/禁用状态或另一个按钮的启用/禁用状态的改变。有时是弹出一个新窗口或最小化/关闭另一个窗口。
如果您错过一个小细节,那么您就是历史。
我总是在屏幕上显示工具提示进度描述消息。至少在发生异常情况时,我可以看到脚本中存在问题的位置。
我的后院有一个天文台,该天文台通过AutoHotKey脚本实现了完全自动化。四台计算机,七个摄像头和一个装满电子设备的机柜,由房屋中的PC控制。
您想看一些令人恐惧的影片。这是天文台自动启动程序,由家用PC上运行的一个脚本启动。该脚本会启动天文台设备的电源,然后在所有天文台计算机启动后在其上启动其他脚本。
https://www.youtube.com/watch?v=UN4VoOKOcXo&feature=youtu.be
我在构建所有这些过程中学到的是,您不能信任Windows及其中运行的大多数应用程序。他们之一迟早会咬你。当您像我这样的蠕虫罐头时,通常很难找到有牙齿的蠕虫。