Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Fenster aktiv halten? (https://www.delphipraxis.net/125779-fenster-aktiv-halten.html)

gandime 11. Dez 2008 13:34


Fenster aktiv halten?
 
Hey,
gibt es eine möglichkeit mein Programm immer Aktiv zu halten (nicht nur im Vordergrund)?

mfg
gandime

Luckie 11. Dez 2008 13:37

Re: Fenster aktiv halten?
 
Das widerspricht der Philosophie von Windows. Wozu brauchst du diese Funktinalität?

gandime 11. Dez 2008 14:21

Re: Fenster aktiv halten?
 
Dieses Programm Prüft blos ob eine eingescannte Seriennummer (Via Strich-Code) mit einer eingegebenen übereinstimmt.
Naja dabei kann es halt vorkommen das das Fenster nicht mehr aktiv ist da die Benutzer möglicherweise auf die Tastatur kommen o.ä. sodass das Fenster nicht mehr aktiv ist. (Einen Alarm dafür wäre zwar eine Lösung aber leider keine gute, da sonst der ganze Betrieb einer Produktion kurzzeitig angehalten werden muss)

Gibt es nicht eine Function o.ä. die ausgelöst wird sobald das Fenster nicht mehr aktiv ist? Dann könnte man doch ganz einfach darauf reagieren, indem man es wieder "Aktiviert".

Die zweite Idee die ich hätte wäre ein Tastaturhook.

DeddyH 11. Dez 2008 14:24

Re: Fenster aktiv halten?
 
Probier es mal mit WM_ACTIVATE.

gandime 11. Dez 2008 16:59

Re: Fenster aktiv halten?
 
joa das läuft schon ganz gut:
Delphi-Quellcode:
procedure TForm1.InActive(var Msg:TWMActivate);
begin
  if not (Msg.Active=WA_ACTIVE) then
  begin
    SetForegroundWindow(application.Handle);
  end;
  inherited;
end;
blos SetForegroundWindow() funktioniert nicht so wie ich es mir vorgestellt habe^^
gibts da ne andere Funktion o.ä.?

scrat1979 11. Dez 2008 17:13

Re: Fenster aktiv halten?
 
Hallo!!

Du verwendest das Handle der Applikation, versuch mal das Handle des Hauptformulars (oder eben des entsprechenden Fensters), vielleicht hast Du dann mehr Glück :-)

gandime 11. Dez 2008 17:43

Re: Fenster aktiv halten?
 
ne das geht leider alles ned so recht
sobald ich SetForegroundWindow() auf meine Form anwende und wieder ein anderes Fenster anklicke müsste ja egl wieder Msg.Active=WA_ACTIVE ausgelöst werden was aber nicht der fall ist.
Aber es wird immer ca. 35 mal ausgelöst wenn ich die Funktion benutze, wie sie dort steht.

Edit:
mit einer Boolean-Abfrage kann ich das mehrfache Aufrufen der Rutine verhindern aber das Fenster ist trotzdem nicht Aktiv dadurch:
Delphi-Quellcode:
var
  b:Boolean;

procedure TForm1.InActive(var Msg:TWMActivate);
begin
  if not (Msg.Active=WA_ACTIVE) and b then
  begin
    b:=false;
    SetForegroundWindow(application.Handle);
    b:=true;
  end;
  inherited;
end;

gandime 24. Dez 2008 15:22

Re: Fenster aktiv halten?
 
so jetzt hab jetzt nen Tastatur-Hook genommen :-/ die anderen Varianten wollten nicht so wie ich es wollte^^


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