keybd_event打印数字而不是字母(perl win32 :: api)

时间:2012-05-30 17:01:00

标签: perl winapi

我想打印“a”。而是打印“9”。为什么,以及如何解决这个问题?

use Win32::API;

$kbd_event = Win32::API->new(
  "user32.dll", 
  "VOID keybd_event( BYTE bVk, BYTE bScan, DWORD dwFlags, DWORD dwExtraInfo );"
);

$a = 0x61;

$kbd_event->Call( $a, 0, 0, 0 ); # press
$kbd_event->Call( $a, 0, 2, 0 ); # release

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:2)

$kbd_event->Call期望一个字节作为其第一个参数,但您的参数被视为整数。

尝试

$kbd_event->Call( chr($a), 0, 0, 0 );
$kbd_event->Call( chr($a), 0, 2, 0 );