我需要在perl脚本中自动化一些键盘条目。为此,我使用Win32::GuiTest模块。 除了shift-end之外,这适用于我需要的所有条目。
这是我发送的内容
Win32::GuiTest::SendKeys("+{END}");
但似乎只需要{END}。
奇怪的是
Win32::GuiTest::SendKeys("+(some text)");
正常工作并发送SOME TEXT
事实上,我无法执行+{}
命令,它只占用{}
另一方面,^
(ctrl)或%
(alt)的命令工作正常,例如Win32::GuiTest::SendKeys("%{F4}")
关闭窗口
有人会知道为什么吗?
谢谢:)
答案 0 :(得分:1)
无论如何,最新答案也许对某人有所帮助...
像Shift {End}这样的Shift {foo}命令需要通过SendRawKey包装器与低级keybd_event一起执行。这就是您要寻找的:
SendRawKey(VK_LSHIFT, KEYEVENTF_EXTENDEDKEY);
SendKeys('{END}');
SendRawKey(VK_RSHIFT, KEYEVENTF_KEYUP);
SendRawKey(VK_LSHIFT, KEYEVENTF_KEYUP);
完整样本(将整行复制到剪贴板中):
use warnings;
use strict;
use Win32::Clipboard;
use Win32::GuiTest qw (:ALL); # Win32-GuiTest-1.63 used
print "place cursor now...\n"; sleep(5); print get_line();
sub get_line {
Win32::Clipboard()->Empty();
SendKeys('{HOME}');
SendRawKey(VK_LSHIFT, KEYEVENTF_EXTENDEDKEY);
SendKeys('{END}');
SendRawKey(VK_RSHIFT, KEYEVENTF_KEYUP);
SendRawKey(VK_LSHIFT, KEYEVENTF_KEYUP);
SendKeys('^c');
return Win32::Clipboard()->GetText();
}