有没有办法可以在 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/