怎么给一个运行中的程序模拟按键啊?

procedure   TForm1.Button2Click(Sender:   TObject);  
  var  
    handle1:HWND;  
    winrect:Trect;  
    NPoint:TPoint;  
  begin  
      edit1.SelectAll;  
      Clipboard.SetTextBuf(pchar(edit1.Text));//       剪切话语内容至剪切板  
      handle1:=   FindWindow(nil,'MU');             //查找MU窗口句柄  
      if   handle1=0   then  
        begin  
          showmessage('MU未启动,请重试。');  
          exit;  
        end;  
      GetWindowRect(Handle1,   WinRect);         //获得窗口范围  
      GetcursorPos(NPoint);                               //获得当前窗口坐标  
      SetForegroundWindow(handle1);               //MU窗口前置,以防被遮挡  
      SetCursorPos(winrect.Left+50,winrect.Top+50);         //鼠标指针置于MU画面上  
      mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0)         ;  
      mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0)         ;         //模拟在MU画面点击,以获得焦点  
   
      keybd_event(13,0,0,0);  
      keybd_event(13,0,KEYEVENTF_KEYUP,0);                         //回车  
   
      keybd_event(VK_CONTROL,0,0,0);  
      keybd_event(86,0,0,0);  
      keybd_event(86,0,KEYEVENTF_KEYUP,0);                         //粘贴  
      keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);  
   
      keybd_event(13,0,0,0);  
      keybd_event(13,0,KEYEVENTF_KEYUP,0);                         //回车  
   
   
      SetCursorPos(Npoint.X,Npoint.y-23);  
      mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0)         ;  
      mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0)   ;  
      SetCursorPos(Npoint.X,Npoint.y);                                 //鼠标归位  
  end;   
 


postmessage就可以了阿,这个是模拟向foobar2000按键(foobar2000在后台运行)  
  procedure   TForm1.ONHotkey(var   message:Tmessage);  
  begin  
  wnd:=findwindow('{DA7CD0DE-1602-45e6-89A1-C2CA151E008E}',nil);  
  if     (message.WParam=WM_SNAPHOTKEY)   then  
  postmessage(wnd,WM_keydown,ord('X'),0);  
  if     (message.WParam=WM_SNAPHOTKEY1)   then  
  postmessage(wnd,WM_keydown,109,0);  
  if     (message.WParam=WM_SNAPHOTKEY2)   then  
  postmessage(wnd,WM_keydown,107,0);  
  if     (message.WParam=WM_SNAPHOTKEY3)   then  
  postmessage(wnd,WM_keydown,ord('V'),0);   //home  
  if     (message.WParam=WM_SNAPHOTKEY4)   then  
  postmessage(wnd,WM_keydown,ord('B'),0);  
  end;  
  procedure   TForm1.FormShow(Sender:   TObject);  
  begin  
  RegisterHotKey(Handle,WM_SNAPHOTKEY1,0,36   );  
  RegisterHotKey(Handle,WM_SNAPHOTKEY2,0,35   );  
  RegisterHotKey(Handle,WM_SNAPHOTKEY,0,VK_f10   );  
  RegisterHotKey(Handle,WM_SNAPHOTKEY3,0,VK_f7   );  
  RegisterHotKey(Handle,WM_SNAPHOTKEY4,0,VK_f8   );  
  end;  
   
  procedure   TForm1.FormDestroy(Sender:   TObject);  
  begin  
  UnregisterHotKey(Handle,WM_SNAPHOTKEY);  
  UnregisterHotKey(Handle,WM_SNAPHOTKEY1);  
  UnregisterHotKey(Handle,WM_SNAPHOTKEY2);  
  UnregisterHotKey(Handle,WM_SNAPHOTKEY3);  
  UnregisterHotKey(Handle,WM_SNAPHOTKEY4);  
  end;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值