我正在寻找一种方法来生成ctrl+A
(全选),然后在python脚本中生成ctrl+x
。我知道如何在特定的应用程序中生成它(pywinauto和其他模块这样做)。但我正在寻找一种方法在任何应用程序(在活动窗口的任何字段中)发送这些密钥。我想在任何地方启动包含这些键的python脚本(脚本将使用键快捷键启动。详情如下(1))
编辑:我不是要在命令窗口中复制/过去(参见最后两句)。 我的脚本在命令窗口中发送密钥,但这是我正在尝试解决的问题......
使用python pywinauto(或Ctypes或其他模块)
我尝试了几个列出here的命题,结果相同。
我以为pywinauto可以做到。在pywinauto latest documentation之后我试了一下:
使用快捷方式运行脚本(因此您不会离开活动窗口)
from pywinauto.keyboard import SendKeys
SendKeys('^a^x')
结果
代码只在python控制台中打印^A^X
。它不会在活动窗口(我放置光标的位置)的字段中执行它所做的操作:它不是select all
+ cut the text
。
使用autohotkey:
我发现模拟真实 crtl+A
ctrl+C
的唯一方法是使用autohotkey(它可以工作,但它不是python解决方案):
将代码保存在我的AHK脚本中:select_copy.ahk
Send, ^a
Send, ^x
创建另一个名为shortcut.ahk的AHK脚本,您将在其中指定启动select_copy.ahk的快捷方式(shortcut.ahk可以在Windows后台运行(2))
!^+G:: Run select_copy.ahk , C:\Users\Me\Desktop
(意思是:当我点击ctrl+alt+shift+G
时,运行脚本select_copy.ahk
)
结果: 有用。当我调用ahk时,它会选择/剪切活动窗口中的内容。
两者的组合无效
我尝试从python脚本中启动select_copy.ahk(使用subprocess.call),但最终得到的结果与pywinauto(或Ctypes)相同:它只在consol中输出^A^X
,但没有选择&切。所以我想知道python是否能真正做到autohotkey所做的事情。
(1)脚本将做什么:我将在一个或另一个html编辑器上启动脚本(使用快捷键),它将剪切所有文本,解析其源代码,进行一些更改将数据放回剪贴板,并通过它。我只缺少第一部分(选择全部+剪切)和最后一部分(过去)。
(2)这不是什么大问题,因为shortcut.ahk还包含我所有其他的ahk快捷方式和脚本。
答案 0 :(得分:0)
您的AutoHotKey脚本应该可以使用,并且可以在我的计算机上运行。但是,我建议您只有一个包含以下内容的shortcut.ahk
文件:
!^+G::
Send, ^a
Send, ^x
Return
...然后把它放在你的python文件中:
subprocess.call("C:\\Path\\To\\AutoHotKey.exe /r C:\\Path\\To\\shortcut.ahk")
将路径替换为AutoHotKey可执行文件所在的位置,以及shortcut.ahk
文件所在的位置。
正如旁注:!^+G::
触发 Alt + Shift + Ctrl + G你在问题中写道,不是 Shift + Ctrl + G :
(意思是:当我点击ctrl + shift + G运行脚本select_copy.ahk)
编辑:此外,根据您问题中的短语in the python console
,您似乎正在尝试选择所有内容,然后在CMD中将其剪切。此根本不起作用。相反,如果您只想清除控制台,只需使用命令cls
(仅限Windows;在Linux中使用clear
)。如果你想复制整个控制台输出然后清除它(即剪切)你将需要不同的东西。