none
c# 如何注册热键只对本程序所有窗体有用但不影响其他程序 RRS feed

答案

  • 你好,

    假设这是一个winform 应用程序,你可以通过步骤来实现:

    1.建立一个关于注册、注销热键的类文件,此时需要引用user32.dll动态链接库。

    class HotKey
         {
             //如果函数执行成功,返回值不为0。
             //如果函数执行失败,返回值为0。要得到扩展错误信息,调用GetLastError。
             [DllImport("user32.dll", SetLastError = true)]
             public static extern bool RegisterHotKey(
                 IntPtr hWnd,                 //要定义热键的窗口的句柄
                 int id,                      //定义热键ID(不能与其它ID重复)          
                 KeyModifiers fsModifiers,    //标识热键是否在按Alt、Ctrl、Shift、Windows等键时才会生效
                 Keys vk                      //定义热键的内容
                 );
     
             [DllImport("user32.dll", SetLastError = true)]
             public static extern bool UnregisterHotKey(
                 IntPtr hWnd,                 //要取消热键的窗口的句柄
                 int id                       //要取消热键的ID
                 );

    2.在主窗体中调用注册热键函数RegisterHotKey及取消热键函数UnregisterHotKey,同时重载FromA中的WndProc函数,在此函数中定义热键的响应代码或事件。

    3.程序中其它窗体继承主窗体。

    详情请参考:http://blog.csdn.net/ismycxp/article/details/1698942 (注:如果按照参考链接中在form事件中调用注册及取消热键函数,请不要在formLeave事件中调用取消热键,否则的话,该热键仅可用于主窗体)

    希望对你有所帮助。


    Lisa Zhu [MSFT]
    MSDN Community Support | Feedback to us

    2012年10月15日 4:44
    版主