windows - 使用 Perl 脚本模拟按下键盘 F 键

标签 windows perl keystroke

有没有办法可以在 Windows 7 上通过 Perl 脚本模拟按下功能键 (F1-F12)?

我有一个程序,需要按 F7 才能停止它。

我尝试终止程序进程,但这并不能完全停止该进程。

最佳答案

如果您使用的是 Windows,Win32::GuiTest可以做你想做的事。他们有several examples使用 SendKeys 按下功能键。

在 Unix 上,情况既容易又困难。功能键通常映射到终端中以发送多个字符。您可以了解他们使用ord 和sprintf 来获取其十六进制值(更易于使用)。下面以“kj”作为简单示例,然后是 F1 到 F7。

$ perl -wle 'while(<>) { chomp; print join ", ", map { sprintf "%x", ord } split //, $_ }'
kj
6b, 6a
^[OP
1b, 4f, 50
^[OQ
1b, 4f, 51
^[OR
1b, 4f, 52
^[OS
1b, 4f, 53
^[[15~
1b, 5b, 31, 35, 7e
^[[17~
1b, 5b, 31, 37, 7e
^[[18~
1b, 5b, 31, 38, 7e
^[[19~
1b, 5b, 31, 39, 7e

ASCII 1b是转义字符(在终端上用 ^[ 表示)。 5b 是[,依此类推。因此,您可以将这些字符串打印到程序的输入或 tty。例如,F8 将为“\x{1b}[19~”。

为什么F1-F4不同? VT100 terminal ,这一切都是基于的,只有四个功能键。后者VT220添加其余部分。

可能有一个模块可以帮你处理这个问题,但我找不到它。

关于windows - 使用 Perl 脚本模拟按下键盘 F 键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28139663/

相关文章:

c++ - DLL的公共(public)只读存储器

windows - 由正常 Windows 提示启动的 Cygwin 中包含的排序命令不接受制表符的 $ 运算符

c++ - 动态更改程序图标

regex - 如何捕获全局正则表达式替换中的每个匹配项?

正则表达式模式说明

powershell - 如何使用 PowerShell 捕获全局击键?

swift - 无法在 macOS Mojave 应用程序中模拟击键

c++ - 导出函数转发给自己?

perl - 如何检查 Perl-CGI 应用程序中的所有错误(例如,使用 Perl 编译器或类似 lint 的工具检查,免费开源?)

c - 如何处理或不处理 gtk control+c?