在线等待,虚拟按键如何实现?(50分)

  • 主题发起人 主题发起人 swpihwd
  • 开始时间 开始时间
S

swpihwd

Unregistered / Unconfirmed
GUEST, unregistred user!
如何实现相当于按了键盘上任意键的功能?
 
可以用keybd_event(),举个例子:

//在记事本中输入TAB键
procedure TForm1.Button1Click(Sender: TObject);
var
Wnd: HWND;
begin

Wnd := FindWindow('notepad',nil);
if Wnd <> 0 then
begin
SetForegroundWindow(Wnd);
keybd_event(VK_TAB, MapVirtualKey(VK_TAB, 0), 0, 0);
keybd_event(VK_TAB, MapVirtualKey(VK_TAB, 0), KEYEVENTF_KEYUP, 0);
end;

end;
 
sendmessage也可以
 
keybd_event
VB声明
Declare Sub keybd_event Lib "user32" Alias "keybd_event" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
说明
这个函数模拟了键盘行动
参数表
参数 类型及说明
bVk Byte,欲模拟的虚拟键码
bScan Byte,键的OEM扫描码
dwFlags Long,零;或设为下述两个标志之一
KEYEVENTF_EXTENDEDKEY 指出是一个扩展键,而且在前面冠以0xE0代码
KEYEVENTF_KEYUP 模拟松开一个键
dwExtraInfo Long,通常不用的一个值。api函数GetMessageExtraInfo可取得这个值。允许使用的值取决于特定的驱动程序
注解
这个函数支持屏幕捕获(截图)。在win95和nt4.0下这个函数的行为不同
 
后退
顶部