Delphi中如何实现模拟组合按键,如发送Ctrl+F的按键

Posted 癫狂编程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Delphi中如何实现模拟组合按键,如发送Ctrl+F的按键相关的知识,希望对你有一定的参考价值。

利用 keybd_event函数可实现,如下面的代码用以实现在一个公共菜单中模拟Ctrl_F按钮以调用DBGridEH的查找对话框功能:
这是在一个ActionList中的某一Action的OnExecute事件代码。

 

procedure TDM.act_LocateExecute(Sender: TObject); 
var
  myPopupMenu:TPopupMenu; 
  MyDBGridEH:TDBGridEh; 
begin
  //ShowMessage(TMenuItem(TAction(Sender).ActionComponent).GetParentComponent.Name); 
  if (TAction(Sender).ActionComponent).GetParentComponent is TPopupMenu then
    myPopupMenu := (TAction(Sender).ActionComponent).GetParentComponent as TPopupMenu 
  else
    Exit; 
 
  //ShowMessage(MyPopupMenu.PopupComponent.Name); 
  if (MyPopupMenu.PopupComponent is TDBGridEh) then
  begin
    MyDBGridEH := TDBGridEh(MyPopupMenu.PopupComponent); 
    MyDBGridEH.SetFocus; 
    keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), 0, 0);       //按下Ctrl键 
    keybd_event(ord(‘F‘), MapVirtualKey(ord(‘F‘), 0), 0, 0);                    //按下F键 
    keybd_event(ord(‘F‘), MapVirtualKey(ord(‘F‘), 0), KEYEVENTF_KEYUP, 0);    //放开F键 
    keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), KEYEVENTF_KEYUP, 0); //放开Ctrl键 
  end; 
end;

以上是关于Delphi中如何实现模拟组合按键,如发送Ctrl+F的按键的主要内容,如果未能解决你的问题,请参考以下文章

在Delphi中 如何在字符串中表示 CTRL+ENTER 组合键?

delphi 中怎么向一个非活动窗口发送组合键

delphi中有模拟发送鼠标按键sendmessage的疑问

ubuntulinux下 如何用python 模拟按键

delphi 模拟按键问题

delphi7实现模拟键盘按键,比如按下v键,数字0,回车等