delphi程序热键

要定义一个全局热键,通常有三个步骤:     
  1、定义Windows的消息WM_HOTKEY的HOOK链,即

             procedure MyShortCut(Var Message:TMessage);Message WM_HOTKEY;         
  2、向Windows加入一个全局原子hotkey:GlobalAddAtom(’hotkey’),   并保留其句柄          
  3、向Windows登记热键链:   RegisterHotKey   函数原形如下     
    BOOL RegisterHotKey(     
              HWND   hWnd,        //   连接热键的窗口句柄     
              int   id,            //   全局原子句柄    
              UINT   fsModifiers,       //   热键修饰标志     
              UINT   vk           //   虚拟键盘码

              );     
  这里,fsModifiers是指虚拟键盘码vk结合何种键一起生成WM_HOTKEY的消息,它是下列三值的组合:          
    MOD_ALT      //   ALT   键必须按下
    MOD_CONTROL   //   CTRL   键必须按下    
    MOD_SHIFT     //   SHIFT   键必须按下    
  有了这些准备,你就可以定义自己喜欢的方式了。

  下面是一个范例,当CTRL+Q在任何时候被按下时,都会打出“你好,Crtl+Q被按下”的信息。     
  

[delphi] view plaincopyprint?

type

    TForm1   =   class(TForm)

    procedure   FormCreate(Sender:   TObject);

    procedure   FormDestroy(Sender:   TObject);

    protected

    procedure   myshortcut(var   message:   TMessage);   message WM_HOTKEY;

    private

  { Private-Deklarationen   }

    public

  { Public-Deklarationen   }

  end;

  var

   Form1:   TForm1;

   id:Integer;

  implementation

    {$R   *.DFM}

  procedure   TForm1.myshortcut(var   message:   TMessage);

  begin

   ShowMessage(’你好,Crtl   +   Q   被按下’);

  end;

  procedure   TForm1.FormCreate(Sender: TObject);

  begin

    id:=GlobalAddAtom(’hotkey’);

    RegisterHotKey(Handle,id,MOD_CONTROL,88);     // 88是Q的ASCII值

  end;

  退出时候取消热键定义:

  procedure   TForm1.FormDestroy(Sender: TObject);

  begin

   UnRegisterHotKey(Handle,id);

  end;

时间: 2024-10-15 16:04:43

delphi程序热键的相关文章

【转】delphi程序只允许运行一个实例的三种方法:

一.        创建互斥对象 在工程project1.dpr中创建互斥对象 Program project1 Uses Windows,Form, FrmMain in 'FrmMain.pas' {MainForm}; {$R *.res} var hAppMutex: THandle; //声明互斥变量 begin hAppMutex := CreateMutex(nil, false,’projectname’); //创建互斥对象projectname工程名称 if ( (hAppM

让delphi程序不受WINDOWS日期格式的影响(使用SetLocaleInfo函数和Application.UpdateFormatSettings)

如果WINDOWS系统的短日期格式为“yyyy/m/d”,执行下面的代码会报错:2013-01-29 00:00:00不是合法的日期procedure TFrmQuerySale.FormShow(Sender: TObject);varsDate: string;begininherited;// 默认查当天的销售数据sDate := FormatDateTime('yyyy-mm-dd', Now);DateTimePicker1.DateTime := StrToDateTime(sDat

问题-delphi 程序在某电脑中显示???问号 乱码

问题现象:delphi 程序在某电脑中显示???问号 乱码 问题原因:因为语言的原因.不同的国家可能显示的编码不一样. 问题处理:“控制面板”>“区域和语言选项”>“区域选项”>“标准和格式”区选择“中文(中国)”>“位置”区选择“中国”>“高级”选项里的“非Unicode程序的语言”区选择“中文(中国)>确定后退出

delphi程序全屏显示无标题栏覆盖整个屏幕

delphi 简单实现程序全屏显示无标题栏,覆盖整个屏幕,这个在做工控机或屏保时有用的,具体代码如下,感兴趣的朋友可以参考下哈 delphi 程序全屏显示无标题栏,覆盖整个屏幕,这个在做工控机或屏保时有用的,所以记下 复制代码 代码如下: procedure TMainFrm.FormCreate(Sender: TObject); begin with MainFrm do begin { Position form } Top := 0 ; Left := 0 ; { Go full scr

delphi 程序实现主屏与扩展屏的切换

delphi 程序实现双屏显示主屏与扩展屏的切换: InitDevice: 初始化显示屏列表,成功返回显示屏数量: ActiveScreen:设置主显示屏,AIndex为显示屏索引,Align为扩展屏相对于主屏的位置(1:左 2:右 3:上 4:下): 使用到的winAPI:EnumDisplayDevicesA.EnumDisplaySettingsA.ChangeDisplaySettingsExA. 常量列表: CCHDEVICENAME = 32: DISPLAY_DEVICE_ATTA

发布delphi程序(build with runtime package)要带哪些文件

发布delphi程序(build with runtime package)要带哪些文件? Delphi提供两种方式来编译你的程序:使用包或者是单独的exe 使用包,你可以使用如下方法设置: 项目选项(菜单project->options->Packages页), 在Runtimes packages中勾选Build with runtime packages.这样你就能够使用包来编译了. 但不是这里所有的包都是你需要,这里包含了Delphi中安装的所有的包.如果环境改变了,可能你的程序就执行

远程控制篇:在DELPHI程序中拨号上网

用MODEM拨号上网,仍是大多数个人网民选择上网的方式.如果能在我们的应用程序中启动拨号连接(如IE浏览器程序中的自动拨号功能),无疑将会方便我们的软件用户(不用再切换应用程序,运行拨号网络),提高我们的软件的友好性从而提高软件的竞争力. 在WIN9X下,如果安装了拨号网络,则在WINDOWS系统的系统目录System下将有两个拨号网络管理程序库RasApi32.DLL和RasApi16.DLL,我们可利用其中的函数来创建.修改拨号连接,并利用指定的拨号连接进行拨号上网. 一.新建拨号连接 当W

一个简单的DELPHI程序注册码设计 .

当你辛辛苦苦用DELPHI做好了一个你认为十分不错的程序,你是否想把它发布出去成为共享软件呢  做为一个共享软件,注册码肯定是少不了的,你可以通过判断程序是否注册来进行功能,时间或一些其它限制.现在就介绍一种简单的注册码制造方法.思路是这样的:程序运行时先检测注册表,如果找到注册项,则表明已经注册,如果没有找到注册项,则提示要求注册. <注册例程>在DELPHI下新建一工程,放置Edit1,Edit2,Label1,Label2,Button1组件.具体代码如下:unit Unit1;inte

delphi程序病毒分析

文件: C__Users_SETH_AppData_Local_Temp_Scanned Copy[1].exe大小: 776704 bytes修改时间: 2018年1月29日, 13:37:20MD5: 9B2130F13784B915088BB83E272B8C4DSHA1: A3284EE13269B7B051DAFA46EABFCD3281951651CRC32: 19F7C8F0文件基本信息:区段信息: 对于delphi程序使用DeDeDark或DelphiDecompiler看看 参