- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我希望模拟右键单击文件。这是通过打开 Windows 资源管理器窗口然后右键单击它来完成的。
主要问题是在 Windows 资源管理器中查找文件的位置。我目前使用的是 Autoit v3.3.8.1。
我的代码的第一行:
RunWait (EXPLORER.EXE /n,/e,/select,<filepath>)
下一步就是问题了。查找文件的坐标。之后,右键单击该坐标(此时在我看来)不是问题......
一些背景:
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 在大多数情况下都能够胜任。这完全取决于您要单击的项目。如果它是在各种程序中打开文件的前几个项目之一,那么它就像以下任一简单:
ShellExecute
,将动词参数设置为您想要执行的任何操作。HKCR\.ext
,其中 ext
是文件扩展名,默认值将是 HKCR 中另一个键的名称,该键具有操作和与文件类型关联的图标。这在网上有很好的记录,所以谷歌一下。如果该操作不是程序操作之一(因此内置于资源管理器中),那么它会稍微复杂一些。通常,最好的方法是在启动程序时查看任务管理器并查看它运行的内容。其他东西可以在网上找到,例如(解压缩)。复制、删除、重命名、创建快捷方式、发送至等操作都可以通过 AutoIt 的各种 File* 功能直接完成。
了解更多信息,就可以为您提供更具体的帮助。
关于autoit - 如何通过 AutoIt 在 Windows 资源管理器中右键单击文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9667957/
我可以使用什么函数来暂停 AutoIt 中的脚本? 我知道我可以像这样使用 sleep : Func TogglePause() $Paused = NOT $Paused While
我试图摆脱所有窗口上的最小化、最大化和关闭按钮。谷歌搜索我发现这个: $h = WinGetHandle("[CLASS:Notepad]") $iOldStyle = _WinAPI_GetWind
AutoIt FileCopy method定义以下返回值: Return Value Success: 1. Failure: 0. 显然,当文件复制操作失败时,我想告诉用户失败的原因。我如何获得这
我有两个文本框和一个按钮。如何在文本框中输入一个值,然后使用 AutoIt 按 Enter 按钮? 最佳答案 举个例子就这么简单: $gui = GUICreate("Test GUI", 640,
我想使用 AutoIt 将变量发送到 GUI 的编辑控件。如何从命令行或使用 shellexecute 运行我的 AutoIt 脚本,以便它正确处理其命令行参数? 我在 AutoIt 脚本中使用以下语
我想在 AutoIt 中编写一个脚本,它可以从键盘自动输入 A-Z,无需用户干预。 这可能吗? 最佳答案 您的程序不太可能需要捕获所有按键的所有输入。如果您确实需要这种用户输入,AutoIt 可能不适
我的 AutoIt 脚本发送一系列点击和按键来自动化旧的闭源应用程序。 它有错误,所以我想知道如何调试 AutoIt 脚本。或者至少输出脚本的行号(以显示实时执行的代码)。 最佳答案 How can
我有两个文本框和一个按钮。如何在文本框中输入一个值,然后使用 AutoIt 按 Enter 按钮? 最佳答案 举个例子就这么简单: $gui = GUICreate("Test GUI", 640,
我在看官方AutoIt Array Parameters ,据我所知,你必须告诉 AutoIt 你的数组有多少元素,然后才能创建它。由于我的数组将根据用户在我的界面中选择的内容而动态变化,因此我需要这
我试过下面的代码,但我得到的是空值 $myDefaultBrowser = RegRead("HKEY_CURRENT_USER\Software\Clients\StartMenuInternet"
这个问题在这里已经有了答案: How to press "Ctrl+Shift+Q" in AutoIt (2 个答案) 关闭 4 年前。 我是 AutoIt 的新手。我在 AutoIt 中使用以下
我希望模拟右键单击文件。这是通过打开 Windows 资源管理器窗口然后右键单击它来完成的。 主要问题是在 Windows 资源管理器中查找文件的位置。我目前使用的是 Autoit v3.3.8.1。
好的,哎呀,这里有语法转换问题...我该如何在 AutoIt 中执行此操作? String theStr = "Here is a string"; String theNewStr = ""; fo
如何获取菜单中当前选中的项目?例如在记事本中。如何识别当前选中的是不是“字体...” 提前致谢! ShellExecute("notepad.exe") WinWaitActive("Untitled
我正在尝试使用 AutoIt 自动化一个应用程序,我需要等待一个控件出现在应用程序中,然后才能开始自动化。此控件在应用程序启动后不久加载,但不会更改窗口标题。如何等待控件出现? 最佳答案 要获得另一个
有没有办法在新行上继续执行命令?我的 MsgBox() 函数调用很长,为了可读性,我想做这样的事情: $confirm = MsgBox(321, "Check Information", "Conf
我无法在放大镜上添加十字准线。 This我的源代码是基于: #include $MagWidth = 50 $MagHeight = 50 $MagZoom = 3 Global $dll[3],
我正在使用 AutoIt3,我需要一种方法让用户选择一个窗口。在我看来,最快的方法是让它们指向一个窗口。那么问题来了,如何查看鼠标指针下的窗口是什么? 最佳答案 我从我为选择屏幕上的区域而放置的一些代
注意,脚本文件名不算进参数,如果要获得脚本文件名请查看关于 @ScriptName 的说明。如果某个参数中包含有空格字符则必须用英文“双引号”把这个参数围住。已编译的
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
我是一名优秀的程序员,十分优秀!