gpt4 book ai didi

autoit - 如何通过 AutoIt 在 Windows 资源管理器中右键单击文件

转载 作者:行者123 更新时间:2023-12-01 22:57:14 24 4
gpt4 key购买 nike

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

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

我的代码的第一行:

 RunWait (EXPLORER.EXE /n,/e,/select,<filepath>)

下一步就是问题了。查找文件的坐标。之后,右键单击该坐标(此时在我看来)不是问题......

一些背景:

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

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

Process p = new Process();
p.StartInfo.FileName = "AutoItScript.exe";
p.StartInfo.UseShellExecute = false;
p.Start();

代码被编译成在启动时运行的控制台类文件。当资源管理器窗口打开时,自动脚本就会运行。

最佳答案

看来您对问题的处理方式是错误的,所以我会回答您所问的问题以及您应该问的问题。

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

在资源管理器中查找项目

资源管理器窗口只是一个 ListView ,因此您可以使用普通的 ListView 消息来查找项目的坐标。这可以通过 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)

正如已经提到的,发送菜单键绝对是比移动鼠标更好的方法。

直接执行子项

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

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

如果该操作不是程序操作之一(因此内置于资源管理器中),那么它会稍微复杂一些。通常,最好的方法是在启动程序时查看任务管理器并查看它运行的内容。其他东西可以在网上找到,例如(解压缩)。复制、删除、重命名、创建快捷方式、发送至等操作都可以通过 AutoIt 的各种 File* 功能直接完成。

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

关于autoit - 如何通过 AutoIt 在 Windows 资源管理器中右键单击文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9667957/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com