Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Anwendung mitstarten durch Tastenabfrage ? (https://www.delphipraxis.net/104927-anwendung-mitstarten-durch-tastenabfrage.html)

moelski 12. Dez 2007 22:42


Anwendung mitstarten durch Tastenabfrage ?
 
Moin !

Ich würde gerne mit dem Start der eigentlichen Anwendung eine weitere mitstarten lassen. Habe aber ein paar Schönheitsfehler :-(

Also hier mal mein Code dazu:
Delphi-Quellcode:
begin
  if GetKeyState(VK_LSHIFT) < 0 then Form1.Caption := ('L Shift');
  if GetKeyState(VK_RSHIFT) < 0 then Form1.Caption := ('R Shift');
  if GetKeyState(VK_ESCAPE) < 0 then Form1.Caption := ('Escape');

  if GetKeyState(VK_F7) < 0 then StartConsole; //'Form1.Caption := ('F7');
  if GetKeyState(VK_F8) < 0 then Form1.Caption := ('F8');

  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
Das ganze steht in der Projektdatei.

Wenn ich nun F7 beim Start der Anweundung drücke, dann wird das StartConsole ausgeführt und er startet in dem Fall die SmartInspect Console mit. Das geht auch ganz gut.

Aber ab und an verliert mein Programm dann den Fokus. Ich habe schon versucht in FormShow ein
Delphi-Quellcode:
Form1.BringToFront;
unterzubringen, aber das bringt auch keine sichtbare Besserung.

Kann mir jemand einen Tip geben wie ich das am besten bewerkstellige :
1) Beim Start Testatur abfragen ob bestimmte Tasten gedrückt sind.
2) Irgendwas tun mit den Tasten -> in meinem Fall eine Anwendung starten.
3) Das "richtige" Programm immer in der Vordergrund setzen.

Vielleicht habe ich ja auch nur generell was falsch bei dem Code oben, oder die Sache muss man ganz anders angehen. Wäre um Tips dankbar !

Und ne Frage am Rande ... Kann man dort auch Kombinationen abfragen wie "STRG + S" oder so? Denn viele Tastenkombis sind ungeeignet um sie beim Doppelklick auf eine EXE abzufragen / zu verwenden.

bitsetter 12. Dez 2007 23:30

Re: Anwendung mitstarten durch Tastenabfrage ?
 
Zitat:

Zitat von moelski
Aber ab und an verliert mein Programm dann den Fokus. Ich habe schon versucht in FormShow ein
Delphi-Quellcode:
Form1.BringToFront;
unterzubringen, aber das bringt auch keine sichtbare Besserung.

Kann mir jemand einen Tip geben wie ich das am besten bewerkstellige :
1) Beim Start Testatur abfragen ob bestimmte Tasten gedrückt sind.

Hallo,

versuche es mal mit GetAsyncKeyState() anstatt mit GetKeyState().

Zitat:

Zitat von moelski
3) Das "richtige" Programm immer in der Vordergrund setzen.

Das Handle mit FindWindow() bekommen und dann mit
Delphi-Quellcode:
SetWindowPos(..., HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
das Programm immer in der Vordergrund setzen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:14 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