【发布时间】:2014-03-06 16:08:28
【问题描述】:
我在 Google 中进行了大量搜索,虽然我可以使用 WM_HOTKEY 找到适用于 Windows 的开关,但我无法找到适用于 Linux 的开关。
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 找到任何相关内容。
【问题讨论】:
-
似乎不是很标准化。取决于桌面stackoverflow.com/questions/1049637/…
-
根据您放置的链接,XGrabKey 是任何 XWindows 窗口管理器的标准,无论如何都应该工作。也许我读错了 XGrabKey 的文档。
-
xfree.org/current/XGrabKey.3.html 但我不确定如何在 Lazarus 中使用它。
标签: linux ubuntu pascal lazarus xfce