65.9K
CodeProject 正在变化。 阅读更多。
Home

全局热键变得容易

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.17/5 (9投票s)

2003年5月9日

viewsIcon

118597

downloadIcon

1321

一个方便注册和处理全局热键的类

引言

本文将向您展示如何使用 CHotkeyHandler 类来管理和创建全局热键。

使用代码

#include <conio.h>
#include <stdio.h>
#include "hotkeyhandler.h"

void handA(void *)
{
  printf("this is A\n");
}

void handQ(void *)
{
  printf("this is Q\n");
}

void hand1(void *param)
{
  WinExec((char *)param, SW_SHOW);
}

int main(void)
{
  int err, id;

  CHotkeyHandler hk;

  hk.InsertHandler(MOD_CONTROL | MOD_ALT, 'Q', handQ, id);
  hk.InsertHandler(MOD_CONTROL | MOD_ALT, 'A', handA, id);
  hk.InsertHandler(MOD_CONTROL | MOD_ALT, '1', hand1, id);

  err = hk.Start("calc.exe");
  if (err != CHotkeyHandler::hkheOk)
  {
    printf("Error %d on Start()\n", err);
    return err;
  }
  printf("hotkeys started!!!\n...press any key to stop them...\n");
  getch();
  err = hk.Stop();
  return 0;
}

首先,我们声明一个 CHotkeyHandler 实例。然后,我们开始插入由它们的控制键、虚拟键和回调函数定义的热键。InsertHandler() 将返回一个注册热键的标识符。您可以使用此 ID 与 RemoveHandler() 配合使用。在插入处理程序后,可以通过调用 Start() 来启用热键。您应该始终检查 CHotkeyHandler 方法返回的错误代码。Start() 将接受一个可选参数,该参数将在注册的回调函数被调用时传递给它。然后,我们通过 Stop() 禁用所有热键。

有关错误代码和其他方法描述的更多信息,请参阅 CHotkeyHandler.cpp 文件。就这样了。

历史

  • 2003年5月9日
    • CodeProject 的初始版本
  • 2003年10月20日
    • 源代码已更新
© . All rights reserved.