How do I hook global shortcuts in Windows?

别等时光非礼了梦想. 提交于 2021-02-07 03:37:45

问题


I remember using a program, some years back, that allowed me to fine-tune my monitor's settings with custom gamma ramps and other adjustments. It had the ability to create different screen-settings profiles for different uses, and setup global hotkey shortcuts to activate them without switching out of the program you're in.

My question is, how do you set up the hook for that? I'm sick of WINDOWS-D minimizing everything when I only want access to the desktop in one screen and I want to keep working in the other one. (I have 2 monitors for a reason!) So I figure it shouldn't be that difficult to hack up a little Delphi app that will minimize everything on one monitor. The only problem is hooking it to a hotkey. Does anyone know what the API is for this?


回答1:


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

Basically there are three steps:

Register

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

Handle

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 !');

Unregister

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


来源:https://stackoverflow.com/questions/467152/how-do-i-hook-global-shortcuts-in-windows

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!