如何在Windows中挂钩全局快捷键?

5
我记得几年前使用过一个程序,可以通过自定义伽马斜率和其他调整来微调我的显示器设置。它能够为不同的用途创建不同的屏幕设置配置文件,并设置全局热键快捷方式以在不切换程序的情况下激活它们。
我的问题是,如何设置钩子?我已经厌倦了 WINDOWS-D 最小化所有窗口,当我只想在一个屏幕上访问桌面并且想继续在另一个屏幕上工作时。(我有两个显示器是有原因的!)所以我想这应该不难编写一个小的 Delphi 应用程序,可以最小化一个显示器上的所有窗口。唯一的问题是如何将其挂钩到热键。有人知道这个 API 是什么吗?
1个回答

18

http://www.swissdelphicenter.ch/torry/showcode.php?id=147

总体而言,这里有三个步骤:

注册

// Register Hotkey Win + A
id1 := GlobalAddAtom('Hotkey1');
RegisterHotKey(Handle, id1, MOD_WIN, VK_A);

处理

procedure WMHotKey(var Msg: TWMHotKey); message WM_HOTKEY;

{ .... }

// Trap Hotkey Messages
procedure TForm1.WMHotKey(var Msg: TWMHotKey);
begin
  if Msg.HotKey = id1 then
    ShowMessage('Win + A pressed !');

注销

UnRegisterHotKey(Handle, id1);
GlobalDeleteAtom(id1);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接