![]() |
Anwendung minimiert ?
Hi,
ich möchte mit folgender If-Abfrage herausfinden, ob meine Anwendung minimiert ist und wenn ja etwas machen.
Delphi-Quellcode:
Die If-Abfrage trifft allerdings immer zu, also auch wenn die Anwendung nicht minimiert ist.
if (GetWindowLong(wnd, GWL_EXSTYLE) and WS_MINIMIZE) = 0 then
Warum ? Geht es überhaupt auf diese Art und Weise, wenn nein, wie dann ? |
Re: Anwendung minimiert ?
Moin Nils,
so kann es schon mal nicht gehen. Mit GWL_EXSTYLE liest man die WS_EX_xxx und nicht die WS_xxx Werte aus, ausserdem müsstest Du nicht auf = 0, sondern auf = angegebener Style testen. Dein Beispiel müsste also lauten
Delphi-Quellcode:
Da hiermit aber nicht der aktuelle Zustand abgefragt, sondern wie das Fenster initial dargestellt wird, nutzt Dir das auch nichts.
if (GetWindowLong(hWnd,GWL_STYLE) and WS_MINIMIZE) = WS_MINIMIZE then
Die Funktion die Du suchst heisst schlicht ![]() |
Re: Anwendung minimiert ?
Zitat:
Zitat:
Delphi-Quellcode:
Es passiert allerdings nichts. Woran könnte es liegen ?
var wnd : HWND;
i : Integer; begin if IsIconic(wnd) then begin m.Lines.Add(IntToStr(i)); inc(i); end; |
Re: Anwendung minimiert ?
Delphi-Quellcode:
public
procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND; end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.WMSysCommand; begin if (Msg.CmdType = SC_MINIMIZE) then ShowMessage('Klein'); if (Msg.CmdType = SC_MAXIMIZE) then ShowMessage('Groß'); DefaultHandler(Msg); end; |
Re: Anwendung minimiert ?
Diese Methode ist nicht allgemein genug, da diese Message nur eintritt, wenn man auf den Minimier-Button klickt. Bei der Taskleiste funktioniert es dann schon wieder nicht.
|
Re: Anwendung minimiert ?
Was willst du tun, prüfen der Form oder der Application ?
|
Re: Anwendung minimiert ?
Eigentlich Application, da schließlich die gesamte Anwendung in Tray minimiert wird und ich deshalb wissen muss, ob diese minimiert ist oder nicht.
|
Re: Anwendung minimiert ?
Anwendung in Tray... also in die TNA oder in die Taskleiste ?
Abfrage, hier mal mit einem Timer, der Application:
Delphi-Quellcode:
Eine weitere Möglichkeit sind die Applications Events.
procedure TFormX.TimerXTimer(Sender: TObject);
begin if isIconic(Application.Handle) then Application.Title := 'Minimiert' else Application.Title := 'nicht Minimiert'; end; ![]() |
Re: Anwendung minimiert ?
Genau das habe ich gesucht. Danke! :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:09 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