如何通过AutoIt在Windows资源管理器中右键单击File

Jos*_*eng 5 autoit right-click

我希望模拟右键单击文件.这可以通过打开Windows资源管理器窗口然后右键单击它来完成.

主要问题是在Windows资源管理器中查找文件的位置.我目前正在使用Autoit v3.3.8.1.

我的代码的第一行:

 RunWait (EXPLORER.EXE /n,/e,/select,<filepath>)
Run Code Online (Sandbox Code Playgroud)

下一步是问题.查找文件的坐标.在那之后,右键点击那个坐标(在我看来这个时候)不是问题....

一些背景:

  • 操作系统:Windows 7 64位
  • 软件语言:C#,Autoit(用于脚本)

Autoit脚本由类似于下面的代码调用:

Process p = new Process();
p.StartInfo.FileName = "AutoItScript.exe";
p.StartInfo.UseShellExecute = false;
p.Start();
Run Code Online (Sandbox Code Playgroud)

代码被编译成一个在启动时运行的控制台类文件.自动脚本在浏览器窗口打开时运行.

Mat*_*att 8

看起来好像你采取了错误的方法解决问题,所以我会回答你的问题和你应该问的问题.

首先,这行代码无效,也不是你想要的.您希望自动化资源管理器窗口,并RunWait等待程序完成.此外,您希望这些项目是字符串,该代码永远不会工作.

在资源管理器中查找项目

资源管理器窗口只是一个列表视图,因此您可以使用常规列表视图消息来查找项目的坐标.这是通过AutoIt的GUIListView库最简单地完成的:

#include<GUIListView.au3>

Local $filepath = "D:\test.txt"

Local $iPid = Run("explorer.exe /n,/e,/select," & $filepath)
ProcessWait($iPid)

Sleep(1000)

Local $hList = ControlGetHandle("[CLASS:CabinetWClass]", "", "[CLASS:SysListView32; INSTANCE:1]")

Local $aClient = WinGetPos($hList)
Local $aPos = _GUICtrlListView_GetItemPosition($hList, _GUICtrlListView_GetSelectedIndices($hList))

MouseClick("Right", $aClient[0] + $aPos[0] + 4, $aClient[1] + $aPos[1] + 4)
Run Code Online (Sandbox Code Playgroud)

正如已经提到的,发送菜单键肯定是比移动鼠标更好的方法.

直接执行子项

这是应该怎么做的.理想情况下,您根本不需要打开资源管理器窗口,所有内容都可以在后台自动完成.这应该始终是您的目标,因为AutoIt在大多数情况下都能胜任.这一切都取决于您要点击的项目.如果它是在各种程序中打开文件的前几个项目之一,那么它就像下面这样简单:

  1. 使用ShellExecute,将动词参数设置为您想要做的任何事情.
  2. 检查注册表以查找程序使用的确切命令行.为此,您需要留意下HKCR\.ext其中ext的文件扩展名,默认值将在HKCR另一个关键,其具有与文件类型关联的操作和图标的名称.这在网上很好地记录,所以谷歌它.

如果操作不是程序操作之一(因此内置于资源管理器中),那么它会更复杂一些.通常,最好的方法是在启动程序时查看任务管理器并查看它运行的内容.其他东西可以在网上找到,例如(联合国)拉链.复制,删除,重命名,创建快捷方式,发送到...等操作都可以直接从AutoIt使用各种File*函数完成.

有了更多信息,就可以为您提供更具体的帮助.

  • @JosephZeng,在这种情况下,我的答案的第一部分应该是正确的. (2认同)

Ste*_*don 2

首先,您可能想查看 Microsoft Active Accessibility SDK。特别是看看这个界面...

http://msdn.microsoft.com/en-us/library/accessibility.iaccessible.aspx

您可以使用它来浏览控件中的项目,并找到具有您要查找的文件名及其屏幕位置的项目。

从那里开始,也许可以尝试类似的方法来模拟右键单击。

如何在 Windows 7 中使用鼠标右键单击自动化功能?

完成右键单击后,再次使用辅助功能在上下文菜单上找到正确的选项。

也许有一种更简单的方法,如果你找不到,你应该能够像这样拼凑一些东西。祝你好运!