![]() |
Fenster sichtbar machen
Ein Programm soll periodisch eine Webcam überwachen, und damit das funktioniert, muss das entsprechende Fenster im Vordergrund sichtbar sein (Das Programm läuft auf einem File Server, auf dem normalerweise nicht gearbeitet wird, also stört das nicht wirklich).
Solange man das Programm laufen lässt und nichts anrührt, funktioniert alles wunderbar, aber wenn jemand das Programmfenster (irrtümlich) minimiert, geht nichts mehr. Deshalb wollte ich zu Beginn jedes Zyklus vor dem Auslesen der Kamera per
Delphi-Quellcode:
sicherstellen, dass das Fenster nicht minimiert ist. Bloß kümmert sich das Fenster nicht im geringsten um diese Anweisung. Wenn es minimiert war, dann bleibt das so. Was muss man noch machen, um zu erreichen, dass ein minimiertes Programmfenster (das Hauptformular der Anwendung) wieder im Zustand wsnormal angezeigt wird?
windowstate:=wsnormal;
|
AW: Fenster sichtbar machen
Guck mal hier. Ich mache das immer hiermit. Funktioniert von Windows XP bis Windows 10.
![]() |
AW: Fenster sichtbar machen
Danke, gleich ausprobiert, leider hilft mir das auch nicht weiter. Diese Funktionen bringen das Fenster in den Vordergrund, wenn es vorher nicht minimiert im Hintergrund war. Aber wenn das Fenster minimiert ist, bleibt es minimiert.
|
AW: Fenster sichtbar machen
Zitat:
Also sobald jemand das Fenster minimieren will setze es auf Hide. und auf visible wenn du es in den Vordergrund bringen willst. gruss |
AW: Fenster sichtbar machen
Ich vermute mal, dass du die ganzen Überwachungsaktionen im Main Thread machst. Dadurch ist deine Anwendung wahrscheinlich so ausgelastet, dass keine Zeit mehr für das Zeichnen der Form bzw. zum Verarbeiten von Messages bleibt. Unschöne Abhilfe könnte ein
Delphi-Quellcode:
nach einer bestimmten Anzahl von Zeichendurchläufen bringen.
Application.ProcessMessages;
Besser wäre es aber, wenn du die Webcam in einem anderen Thread abfrägst und die Daten dort verarbeitest. Dann bleibt auch dein Programm bedienbar. |
AW: Fenster sichtbar machen
Zitat:
Beim Ändern der Größe würde wahrscheinlich das Gleiche passieren. Bei Systemen vor Vista (mit DWM) würde das Fenster vermutlich weiß bleiben und sich gar nicht mehr neuzeichnen wenn ein anderes Fenster drübergelegt wird. |
AW: Fenster sichtbar machen
Davon ab ist es unmöglich ein Fenster in den Vordergrund zu bringen wenn es minimiert ist.
Deshalb habe ich gesagt er soll dafür sorge tragen das es nicht minimiert wird. Wie oder in welcher weise er sein Fenster zeichnet ist erst mal nebensächlich. Zitat:
Zitat:
Bin mir jetzt nicht sicher wie oder wo du windowstate:=wsnormal; setzt. EDIT: Glaube aber das deine Anwendung wenn sie keinen Focus hat damit nichts erreichen wird. Versuche es einfach mal auf die alt bewährte weise mit ShowWindow und sorge dafür das sie einen Focus hat was im minimierten zustand schwerlich zu erreichen ist wenn du keine Callback oder ähnliches dafür eigerichtet hast. gruss |
AW: Fenster sichtbar machen
Zitat:
Wenn er das Fenster nicht erneut aus der Taskleiste bekommt nachdem es minimiert wurde, ist doch wohl eindeutig der Hauptthread total mit Müll blockiert. |
AW: Fenster sichtbar machen
Zitat:
Möchte ich das bezweifeln. Aber egal ohne Antwort von ihm werden wir das wohl nicht erfahren. Daher ist es nur reine Spekulation. Zitat:
Es scheint mir so als wenn ihr nicht lest was hier geschrieben wird. gruss |
AW: Fenster sichtbar machen
Zitat:
Zitat:
Delphi-Quellcode:
erreicht werden, oder?
windowstate:=wsnormal;
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:11 Uhr. |
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