Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Fenster immer on Top (https://www.delphipraxis.net/104511-fenster-immer-top.html)

ddcool 5. Dez 2007 14:28


Fenster immer on Top
 
Hallo zusammen,

ich habe mal eine Frage :) Ich möchte dass eine Form aus meiner Anwendung immer maximiert im Vordergrund steht.
Wozu ich das brauche: Naja kurz und knapp. Mitarbeiter haben Tablet-Pcs, akku wird schwach, Windows Meldung kommt, ignoration der Mitarbeiter, Pc fährt in Standyby, Akku wird getauscht, pc wird angemacht, wlan noch nicht da, versuch weiter zu arbeiten, fehler. Ich will einfach nur dass bei einem bestimmten Akkustand sich ein Fenster in den Vordergrund schiebt, dass die den Akku wechseln müssen ohne taskmanager aufrufen zu können etc. Einfach gar nichts. Wie bekomme ich das mit dem Fenster so hin? Akkuabfrage etc funktioniert alles super.


Danke & Gruß

ddcool

DevidEspenschied 5. Dez 2007 14:33

Re: Fenster immer on Top
 
Du musst im Objektinspektor des Hauptformulars die Eigenschaft "FormStyle" auf "fsStayOnTop" setzen.

Dann dürfte es klappen.

BullsEye 5. Dez 2007 14:36

Re: Fenster immer on Top
 
Du kannst einfach, wenn was bestimmtes passiert das sich dann das fenster immer "On Top" ist.

Delphi-Quellcode:
IF CheckBox1.Checked THEN
Form1.FormStyle := fsStayOnTop
ELSE
Form1.FormStyle := fsNormal;
das ist jetzt "on top" wenn die CheckBox angeklickt ist.
Mit dem Maxiemiert musst du bissel rumgucken aber das kann man ja eig standardmäßig setzen...in den Eigenschaften
müsstest du unter "WindowState" finden und das dann auf "wsMaximed" setzten

Jelly 5. Dez 2007 14:39

Re: Fenster immer on Top
 
Zitat:

Zitat von ddcool
...ohne taskmanager aufrufen zu können etc. Einfach gar nichts.

Das wird allerdings schon etwas kniffliger, wenn überhaupt machbar :gruebel:

DevidEspenschied 5. Dez 2007 14:44

Re: Fenster immer on Top
 
Ich denke, Du meinst damit vergleichsweise den sicheren Desktop von Vista, der jeglichen Zugriff auf die Taskleiste und aktive Programme verhindert.

Die Sache mit dem Taskmanager dürfte unter XP garnicht zu realisieren sein. Das würde ja bedeuten, dass man alles andere blockieren muss, etwa komplette Windows Subsysteme. No Chance...

BullsEye 5. Dez 2007 14:47

Re: Fenster immer on Top
 
Da kann ich ja gleich meinen Windows Ordner löschen?! :wiejetzt:

DevidEspenschied 5. Dez 2007 14:53

Re: Fenster immer on Top
 
Zitat:

Zitat von BullsEye
Da kann ich ja gleich meinen Windows Ordner löschen?! :wiejetzt:

Wenn Du den Ordner überhaupt löschen kannst, weil Windows hunderte Dateien davon in Benutzung hat, wird das Windows-System irreparabel beschädigt und dürfte zu 100 Prozent den nächsten Bootvorgang verhindern. Im Unternehmensumfeld eine kleine Katastrophe - milde ausgedrückt.

Unter XP dürfte das vorgeschlagene nicht gehen, da bin ich mir sehr sicher.

BullsEye 5. Dez 2007 14:56

Re: Fenster immer on Top
 
Man könnte zwar die explorer.exe beenden aber das hindert ja niemanden daran, den Taskmanager aufzurufen.
Evtl könntest du die explorer.exe beenden und die Tastertur sperren dann könnte es evtl gehen. zumindestens fällt mir gerade nix ein wie man dann noch was beenden könnte außer du besitzt einen Button Beenden oder ne Shutdown funktion o.ä.

ddcool 5. Dez 2007 15:09

Re: Fenster immer on Top
 
Also momentan habe ich es so:

FormStyle := fsStayOnTop
WindowState := wsMaximized


und ein Timer mit der alle 1ms das macht:

Cursor := crNone;
Self.BringToFront;
Self.SetFocus;
Application.ProcessMessages;

das klappt auch ziemlich gut, nur wenn der taskmanager aufgerufen wird, fängt die form an zu flackern, weil der taskmanager sich ja auch versucht in den vordergrund zu schieben. Vielleicht gibt es ja eine Möglichkeit das auch noch zu verhindern.

DevidEspenschied 5. Dez 2007 15:23

Re: Fenster immer on Top
 
Zitat:

Zitat von BullsEye
Man könnte zwar die explorer.exe beenden aber das hindert ja niemanden daran, den Taskmanager aufzurufen.
Evtl könntest du die explorer.exe beenden und die Tastertur sperren dann könnte es evtl gehen. zumindestens fällt mir gerade nix ein wie man dann noch was beenden könnte außer du besitzt einen Button Beenden oder ne Shutdown funktion o.ä.

Diesen Weg hatte ich mir auch überlegt, das Problem ist aber, dass wir hier von einer produktiven Umgebung mit offenen Applikationen und Dateien reden. Nach einem Explorer-Neustart wird das Systray unten rechts ebenfalls neu geladen, und bis zu diesem Zeitpunkt offene Systray-Programme mit temporären Dateien sind verloren.

Edit: Ich würde mir in meiner Herangehensweise die Datei taskmgr.exe im Windows\System32-Verzeichnis greifen und bspw. die Lesemöglichkeit mit normalen Rechten verhindern. Damit kann der normale Anwender den Taskmanager nicht mehr starten, und falls es doch mal zum Einfrieren einer Anwendung kommt, muss sowieso der Admin ran und kann einen Benutzerwechsel zum Admin-Konto durchführen und dort mit dem Taskmanager rumtoben.

Das wäre jetzt meine Vorgehensweise, wenn ich das Problem hätte. In meiner damaligen Windows-Citrix-Novell Administration haben wir den Anwendern den Zugriff auf den Taskmanager komplett genommen - zumal die Anwender damit auch überfordert gewesen wären.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:24 Uhr.
Seite 1 von 2  1 2      

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