Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Hotkey eines fremden Programmes Simulieren (https://www.delphipraxis.net/147952-hotkey-eines-fremden-programmes-simulieren.html)

lowF 19. Feb 2010 15:20


Hotkey eines fremden Programmes Simulieren
 
Hallo, DP-Volk!

Ich möchte einen Hotkey von einem fremden Programm auslösen, ohne dass das Programm in der Vordergrund muss. Hab mich schon durch etliche google-pages gesucht (Also wenn gleich kommt, ich solle die Suche benutzen, bitte Link zum Fred zuposten).

Das ganze soll etwa so aussehen, als ob ich ALT+D an z.B. Mozilla sende und oben links das Datei-Popupmenu erscheint.

Ausprobiert habe ich z.b.
Delphi-Quellcode:
  Postmessage(h,wm_keydown,VK_MENU,0);
  Postmessage(h,wm_keydown,Ord('D'),0);
  Postmessage(h,wm_keyup,Ord('D'),0);
  Postmessage(h,wm_keyup,VK_MENU,0);
Wie gesagt, ich möchte nicht unbedingt, dass das Fenster des Programmes in den Vordergrund muss, aber wenn es geniale Vorschläge gibt, in welcher das Fenster den Focus bekommt bin ich dafür auch offen ;)

Danke
lowF

Astat 19. Feb 2010 17:15

Re: Hotkey eines fremden Programmes Simulieren
 
Hallo lowF, sollte bei den meisten Fenstern klappen.

Wenn es bei manchen Anwendungen nicht will, zusätzlich mit

AttachThreadInput und oder SystemParametersInfo arbeiten.

Delphi-Quellcode:

var
  hWindow: HWND;
begin
  hWindow := FindWindow(nil, 'Unbenannt - Editor');
  if hWindow <> 0 then begin
    if IsIconic(hWindow) then ShowWindow(hWindow, SW_RESTORE);
    BringWindowToTop(hWindow);
    SetForegroundWindow(hWindow);
    keybd_event(VK_MENU , 0, 0, 0);
    keybd_event(Ord('D') , 0, 0, 0);
    keybd_event(Ord('D') , 0, KEYEVENTF_KEYUP, 0);
    keybd_event(VK_MENU , 0, KEYEVENTF_KEYUP, 0);
  end;
end.

lg. Astat

lowF 19. Feb 2010 19:53

Re: Hotkey eines fremden Programmes Simulieren
 
Hi Astat.

Danke für deinen Beitrag, ich werde das gleich mal ausprobieren.
Wenn es noch Vorschläge ohne "Focused Window" gibt, bin ich natürlich dafür offen :D

Trotzdem nochmal danke

lowF


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:26 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz