怎样向其他应用程序发送模拟按键如 F9 ?(200分)

  • 主题发起人 主题发起人 greatwzq
  • 开始时间 开始时间
G

greatwzq

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样编写一程序,向其他应用程序发送模拟按键如 F9 ?
 
修改操作系统了!
 
怎么修改?
 
◇[DELPHI]发送虚拟键值ctrl V
procedure sendpaste;
begin
keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), 0, 0);
keybd_event(ord('V'), MapVirtualKey(ord('V'), 0), 0, 0);
keybd_event(ord('V'), MapVirtualKey(ord('V'), 0), KEYEVENTF_KEYUP, 0);
keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), KEYEVENTF_KEYUP, 0);
end;

◇[DELPHI]按键接受消息
OnCreate事件中处理:Application.OnMessage:=MyOnMessage;
procedure TForm1.MyOnMessage(var MSG:TMSG;var Handle:Boolean);
begin
if msg.message=256 then ... //ANY键
if msg.message=112 then ... //F1
if msg.message=113 then ... //F2
end;

◇[DELPHI]关于键盘常量名
VK_BACK/VK_TAB/VK_RETURN/VK_SHIFT/VK_CONTROL/VK_MENU/VK_PAUSE/VK_ESCAPE
/VK_SPACE/VK_LEFT/VK_RIGHT/VK_UP/VK_DOWN
F1--F12:$70(112)--$7B(123)
A-Z:$41(65)--$5A(90)
0-9:$30(48)--$39(57)
 
keybd_event只对当前激活窗口有效。
依我看,还是SendMessage或PostMessage
 
用PostMessage就可以了,已经测试过
procedure TForm1.Button1Click(Sender: TObject);
var
h: THandle;
begin
h := FindWindow(nil, '其他应用程序的标题');
PostMessage(h, WM_KEYDOWN, VK_F9, 0);
end;
 
来晚一步:)
agree fyx
 
later
//agree fyx
 
来晚了, 但还是想说:)))
findwindow+postmessage
 
多人接受答案了。
 
后退
顶部