是否有可能以某种方式完整记录用户操作并在其他机器上复制?不仅仅是重复用户输入(按键、鼠标点击/移动),还可以捕获与用户交互的实际系统“对象”(例如 GUI 元素)。
AutoIt/AutHotKey 似乎无法捕获/复制某些操作。例如,我想打开/关闭地址工具栏在任务栏中通过 shell 或以编程方式进行,通常通过任务栏 -> 工具栏 -> 地址上的上下文菜单完成。
使用 AutoIt,您可以模拟精确的鼠标移动/点击或按键,但在这种情况下并不合适,因为在某些其他机器上会失败(如果工具栏自动隐藏或位于侧面)。我假设进程监控可能会有帮助,但无法弄清楚要过滤掉哪些事件以及之后如何使用它们。任何语言/shell/软件都可以接受。
答案1
记录鼠标点击的精确坐标永远不是做这种事情的正确方法。几乎总是更好的方法。
您可以尝试导出以下注册表项并在另一台电脑上导入:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Streams\Desktop
您可以使用 AutoHotkey 发送相关的按键,以打开地址或其他工具栏。例如,在我的 Win7 PC 上,以下操作可切换地址工具栏:
Ctrl+ Esc,,Esc(Shift+ )Tabx3 ,Shift+ F10,,,TRight ArrowA
更好的是,像 AHK 的 Window Spy 这样的程序可以帮助您识别并获取通知区域类的直接句柄,这样您就可以以编程方式右键单击它。例如:
ControlGet, handle, Hwnd,, TrayClockWClass1,,Notification Area
或者这个脚本:
#NoTrayIcon #include <Array.au3> Dim $ctrlsize $ctrlsize=ControlGetPos("[CLASS]","","ReBarWindow321") ControlClick("[CLASS]","","ReBarWindow321","secondary",1,$ctrlsize[2],$ctrlsize[3]*0.5) MouseClick("primary",$ctrlsize[0]+$ctrlsize[2]+50,@DesktopHeight-215,1,1) Sleep(150) Send("t")
AHK 是极其功能强大,论坛是提问的好地方。事实上,我在快速搜索后找到了上面的脚本,在一个你想要阅读的帖子中,标题为在 Windows 任务栏上创建工具栏。
答案2
我也无法自动做类似的事情。
无论如何。我已经使用自定义 Autohotkey 脚本和 Pulover 的宏创建器 (http://www.autohotkey.net/~Pulover/#.UScMbldQb3E)。在选项中您还可以选择记录控件点击。无论如何。某些自定义控件和 Java 应用程序会出现问题。