在 Windows 中复制用户操作?

在 Windows 中复制用户操作?

是否有可能以某种方式完整记录用户操作并在其他机器上复制?不仅仅是重复用户输入(按键、鼠标点击/移动),还可以捕获与用户交互的实际系统“对象”(例如 GUI 元素)。

AutoIt/AutHotKey 似乎无法捕获/复制某些操作。例如,我想打开/关闭地址工具栏在任务栏中通过 shell 或以编程方式进行,通常通过任务栏 -> 工具栏 -> 地址上的上下文菜单完成。

使用 AutoIt,您可以模拟精确的鼠标移动/点击或按键,但在这种情况下并不合适,因为在某些其他机器上会失败(如果工具栏自动隐藏或位于侧面)。我假设进程监控可能会有帮助,但无法弄清楚要过滤掉哪些事件以及之后如何使用它们。任何语言/shell/软件都可以接受。

答案1

记录鼠标点击的精确坐标永远不是做这种事情的正确方法。几乎总是更好的方法。

  1. 您可以尝试导出以下注册表项并在另一台电脑上导入:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Streams\Desktop
    
  2. 您可以使用 AutoHotkey 发送相关的按键,以打开地址或其他工具栏。例如,在我的 Win7 PC 上,以下操作可切换地址工具栏:

    Ctrl+ Esc,,EscShift+ )Tabx3 ,Shift+ F10,,,TRight ArrowA

  3. 更好的是,像 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 应用程序会出现问题。

相关内容