zoukankan      html  css  js  c++  java
  • delphi热键:delphi程序中定义热键的方法 转

    疯狂代码 http://www.crazycoder.cn/ :http:/www.crazycoder.cn/Delphi/Article11711.html


    用到3个API

    BOOL RegisterHotKey( HWND hWnd, //响应该热键窗口句柄 Int id, //该热键唯标识 UINT fsModiers, //该
    热键辅助按键 UINT vk //该热键键值 );

    为了得到唯标识我们还将用到另个API

    ATOM GlobalAddAtom(

    LPCTSTR lpString //自己设定个串


    );

    我们还要在退出时候消除这个热键 所以需要声明个全局变量:

    HotKeyId: Integer;



    第步:

    在窗口create事件中加入以下代码

    HotKeyId := GlobalAddAtom('MyHotKey') - $C000; 注: HotKeyId合法取的范围是0x0000到0xBFFF的间
    GlobalAddAtom得到值 在0xC000到0xFFFF的间所以减掉0xC000来满足要求

    第 2步:

    在上面代码下面加入:

    RegisterHotKey(Handle, hotkeyid, MOD_ALT, VK_F8);

    热键辅助按键包括Mod_Ctrl ,Mod_Alt,Mod_Sht,对于Windows兼容键盘还支持Windows 键即其键面上有
    Windows标志那个键其值为Mod_win

    上面 代码注册了个热键:ALT+F8当然如果你希望象TAKEIT那样只用F8, 就这么写:

    RegisterHotKey(Handle, hotkeyid, 0, VK_F8);

    注:handle是个特殊变量它表示当前窗口句柄

    这个你应该能句举反 3了吧

    原理:

    旦热键设置成功在应用过程中如果有相应键被按下Windows系统都会给你应 用发送个消息WM_HOTKEY不管
    你应用是否为当前活动其中WM_HOTKEY消 息格式为:

    idHotKey = () wParam; // 该参数在设置系统级热键有用,般不予使用 fuModiers = (UINT)
    LOWORD(lParam); //热键辅助按键 uVirtKey = (UINT) HIWORD(lParam); //热键键值

    第 3步:

    注册了热键就该写下响应代码了

    首先在头部分private段中加入声明 (作用是声明这个过程和声明变量类似 有关如何声明,过程请请参考各自帮
    助文件或其它资料):

    procedure HotKeyDown(var Msg: Tmessage); message WM_HOTKEY;

    然后在中加入如下代码:

    procedure Tf.HotKeyDown(var Msg: Tmessage); begin (Msg.LparamLo = MOD_ALT) AND
    (Msg.LParamHi = VK_F8 then) // 假设热键为ALT+F8 begin ShowMessage('F8'); end; end;

    最后步:

    在窗口close事件中加入

    UnRegisterHotKey(handle, HotKeyId); //注销HotKey, 释放资源



    atomid = GlobalAddAtom(ls_atomid) //得到ID保证不和其他应用发生冲突 ll_RC =
    RegisterHotKey(Handle(this), atomid, MOD_ALT + MOD_CONTROL, 65) //注册热键为Ctrl+Alt+A 65为
    'A' 2009-2-12 3:33:32
    疯狂代码 http://www.crazycoder.cn/
  • 相关阅读:
    C#中两个不同时间的相加减以及时间比较
    C#中一些报错处理
    C#将DataGridView中的数据导出为EXCEL
    C# tabcontrol的tabpage切换
    C# DataGridView控件中数据导出到Excel
    C#将数据导入到excel中 出现 “object”未包含“get_Range”的定义
    SQL Server数据库的备份与还原以及在项目中是怎样去实现的 (网摘)
    android各组件详解
    刚刚做得一个Android开发教程的专题
    一个Demo让你掌握所有的android控件
  • 原文地址:https://www.cnblogs.com/liye/p/1644124.html
Copyright © 2011-2022 走看看