Perl 无法使用Win32::GuiTest发送移位结束
我需要在perl脚本中自动执行一些键盘输入。为此,我使用模块。 这适用于除shift end之外我需要的所有条目 这是我寄的Perl 无法使用Win32::GuiTest发送移位结束,perl,win32gui,Perl,Win32gui,我需要在perl脚本中自动执行一些键盘输入。为此,我使用模块。 这适用于除shift end之外我需要的所有条目 这是我寄的 Win32::GuiTest::SendKeys("+{END}"); 但它似乎只需要{END} 奇怪的是 Win32::GuiTest::SendKeys("+(some text)"); 工作正常并发送一些文本 事实上,我无法执行+{}命令,它总是只取{}中的键 另一方面,使用^(ctrl)或%(alt)的命令工作正常,例如Win32::GuiTest::Send
Win32::GuiTest::SendKeys("+{END}");
但它似乎只需要{END}
奇怪的是
Win32::GuiTest::SendKeys("+(some text)");
工作正常并发送一些文本
事实上,我无法执行+{}
命令,它总是只取{}
中的键
另一方面,使用^
(ctrl)或%
(alt)的命令工作正常,例如Win32::GuiTest::SendKeys(“%{F4}”)
关闭窗口
有人知道为什么吗
谢谢:)迟到的回答,不管怎样,也许这对某人有帮助 像Shift{End}这样的Shift{foo}命令需要通过SendRawKey包装器使用低级keybd_事件执行。这就是你想要的:
SendRawKey(VK_LSHIFT, KEYEVENTF_EXTENDEDKEY);
SendKeys('{END}');
SendRawKey(VK_RSHIFT, KEYEVENTF_KEYUP);
SendRawKey(VK_LSHIFT, KEYEVENTF_KEYUP);
完整示例(将完整行复制到剪贴板):
您是否尝试过
+{35}
?刚刚尝试过,它的行为与+{END}相同,它似乎只考虑了{35},但感谢您的回答:)
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();
}