2

我在 Google 中进行了很多搜索,虽然我可以找到用于 Windows 的开关,WM_HOTKEY但在 Linux 上却找不到。

WM_HOTKEY 挂钩

uses ...,windows;

var
  PrevWndProc: WNDPROC;
const
  MY_ID=1;

function WndCallback(Ahwnd: HWND; uMsg: UINT; wParam: WParam; lParam: LParam):LRESULT; stdcall;
begin
  if (uMsg=WM_HOTKEY) and (WParam=MY_ID) then
    begin
      Application.Restore;
    end;
  result:=CallWindowProc(PrevWndProc,Ahwnd, uMsg, WParam, LParam);
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
  PrevWndProc:=Windows.WNDPROC(SetWindowLong(Self.Handle,GWL_WNDPROC,PtrInt(@WndCallback)));
  RegisterHotKey(Self.Handle,MY_ID,0,vk_F9);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  UnRegisterHotkey(Self.Handle,MY_ID);
end;

我希望在 Linux 机器上的 XFCE4 和/或 XWindows 中放置一个系统范围的热键挂钩。我知道无论窗口管理器是什么,许多屏幕截图程序都可能一直这样做。

我需要让我的应用程序能够挂钩一个组合键来激活应用程序内部的某些东西,但是我在任何地方都找不到任何与 Linux 上的 Lazarus/Pascal 相关的东西。

4

1 回答 1

1

Marco 比大多数人更了解 FPC(认为是他写的)。

在任何情况下,您都可以在下面的链接中找到有用的代码和/或代码库的其他部分:

http://code.google.com/p/ovoplayer/source/browse/trunk/src/platform/darwin/mmkeys.inc?spec=svn206&r=206

于 2014-03-06T08:08:28.973 回答