Einzelnen Beitrag anzeigen

Asura

Registriert seit: 10. Jun 2013
87 Beiträge
 
#1

Programm soll Tastendruck in einem anderen Programm ausführen

  Alt 11. Mai 2020, 12:32
Guten Tag,

kurz zum Hintergrund: Ich saß heute an meinem Tablet und las ein E-Book. Dabei Markiere ich fleißig mit meinem Windows Pen Stellen. Leider kommt es vor, dass man sehr häufig Markierungen entfernen muss. Etwas nervig ist bei PDF-Programmen, dass das "Undo" so klein ist, da man ja eher die Tastenkürzel verwendet. Aus diesem Grund kam mir die Idee, dass ich einfach eine Konsolenanwendung erstelle, die den Tastenkürzel durch das Klicken der Taste auf dem Stift (Man kann ein Programm auswählen, was dann gestartet wird), ausführt. So habe ich mich vorhin direkt hingesetzt und eine Konsolenanwendung erstellt.

Leider hat er nicht die Tastenkürzel ausgegeben, so dachte ich mir, dass eventuell der Fokus auf das Programm gesetzt werden muss, bevor der Tastendruck simuliert wird. Jedoch auch dies hat nicht funktioniert. Es wird weder das Programm in den Vordergrund gerufen, der Fokus gesetzt oder der Tastendruck simuliert. Fehlermeldungen gibt es keine.

Mein Code sieht so aktuell aus:

Delphi-Quellcode:
program strg_z;

uses
  Winapi.Windows, System.SysUtils;

{$R *.res}

begin
  try

    SetForegroundWindow(Findwindow(nil, 'NitroPDF'));
    SetFocus(Findwindow(nil, 'NitroPDF'));

    keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), 0, 0);
    keybd_event(Ord('Z'), MapVirtualKey(Ord('Z'), 0), 0, 0);
    keybd_event(Ord('Z'), MapVirtualKey(Ord('Z'), 0), KEYEVENTF_KEYUP, 0);
    keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), KEYEVENTF_KEYUP, 0)
  except
    on E: Exception do
      Writeln(E.ClassName, 'Fehler: Fokus konnte nicht gesetzt werden.', E.Message);
  end;

  Exit;
end.
Was habe ich hierbei nicht beachtet?

Geändert von Asura (11. Mai 2020 um 12:36 Uhr)
  Mit Zitat antworten Zitat