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 に答える