Autor Téma: Window, pravé tlačítko myši globálně  (Přečteno 507 krát)

Offline karkojk

  • Mladík
  • **
  • Příspěvků: 55
  • Karma: 0
    • Verze Delphi: RAD Studio X5
Window, pravé tlačítko myši globálně
« kdy: 13-02-2023, 23:00:50 »
V Autohotkey mám udělané, že se při delším stisknutí pravého tlačítka myši objeví menu, kde spustím co potřebuji.
Zkoušel jsem to udělat v Delphi, ale nedaří se, zachytávat pomocí SetWindowsHookEx. Google jsem probrouzdal, co jsem zkusil nejde, nevím proč.
I tady https://www.swissdelphicenter.ch/en/showcode.php?id=1729 mám ve výstupu JHook „0"

Všechno se to točilo okolo podobného kódu

Kód: Delphi [Vybrat]
  1. type
  2.   TMyMouseHookProc = function(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
  3.  
  4. var
  5.   hMouseHook: HHOOK;
  6.   MyMouseHookProc: TMyMouseHookProc;
  7.  
  8. function MouseHookProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
  9. var
  10.   pMouseStruct: PMouseHookStruct;
  11. begin
  12.   Result := CallNextHookEx(hMouseHook, nCode, wParam, lParam);
  13.   if (nCode = HC_ACTION) and (wParam = WM_RBUTTONUP) then
  14.   begin
  15.     pMouseStruct := PMouseHookStruct(lParam);
  16.     if (GetKeyState(VK_RBUTTON) and $8000) <> 0 then
  17.     begin
  18.       // Zpracování dvojitého stisku pravého tlačítka myši ...
  19.     end;
  20.   end;
  21. end;
  22.  
  23. procedure TForm1.FormCreate(Sender: TObject);
  24. begin
  25.   MyMouseHookProc := MouseHookProc;
  26.   hMouseHook := SetWindowsHookEx(WH_MOUSE, MyMouseHookProc, HInstance, 0);
  27. end;
  28.  
  29. procedure TForm1.FormDestroy(Sender: TObject);
  30. begin
  31.   UnhookWindowsHookEx(hMouseHook);
  32. end;
  33.  


Nemáte tip na něco jednoduchého (no toto je jednoduché ;-), nejlépe funkční skript ::).
Programování pro radost, prý to bystří mysl ;-)

Offline Daniel_Andrascik

  • Guru
  • *****
  • Příspěvků: 577
  • Karma: 20
    • Verze Delphi: D2007, D10.4
Re:Window, pravé tlačítko myši globálně
« Odpověď #1 kdy: 19-02-2023, 13:02:49 »
vramci tvojej aplikacie zachytavas ten klik, alebo v ramci celeho windowsu?

Offline karkojk

  • Mladík
  • **
  • Příspěvků: 55
  • Karma: 0
    • Verze Delphi: RAD Studio X5
Re:Window, pravé tlačítko myši globálně
« Odpověď #2 kdy: 19-02-2023, 15:52:02 »
V rámci celého Windows, globálně. Jde o to spouštět, různé věci v aplikaci nad kterou např. pravé tlačítko myši déle podržím/kontextové menu.
Zapomínám, tak si například vypsat přednastavené filtry pro Obsidian a přenést vybraný text přes schránku ap. Automatizovat si tak různé věci.
V Autohotkey to mám, ale chci to přenést do Delphi, tam se mně to tvoří nějak hůř ;-). Hledal jsem, zkoušel i jiné varianty, co je výše s WH_MOUSE__LL  atd.
Programování pro radost, prý to bystří mysl ;-)