AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Anwendung minimiert ?

Ein Thema von Nils_13 · begonnen am 3. Mär 2007 · letzter Beitrag vom 3. Mär 2007
Antwort Antwort
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#1

Anwendung minimiert ?

  Alt 3. Mär 2007, 13:22
Hi,

ich möchte mit folgender If-Abfrage herausfinden, ob meine Anwendung minimiert ist und wenn ja etwas machen.
if (GetWindowLong(wnd, GWL_EXSTYLE) and WS_MINIMIZE) = 0 then Die If-Abfrage trifft allerdings immer zu, also auch wenn die Anwendung nicht minimiert ist.

Warum ? Geht es überhaupt auf diese Art und Weise, wenn nein, wie dann ?
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Anwendung minimiert ?

  Alt 3. Mär 2007, 13:53
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

if (GetWindowLong(hWnd,GWL_STYLE) and WS_MINIMIZE) = WS_MINIMIZE then Da hiermit aber nicht der aktuelle Zustand abgefragt, sondern wie das Fenster initial dargestellt wird, nutzt Dir das auch nichts.

Die Funktion die Du suchst heisst schlicht MSDN-Library durchsuchenIsIconic
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#3

Re: Anwendung minimiert ?

  Alt 3. Mär 2007, 14:10
Zitat:
If the window is iconic, the return value is nonzero.

If the window is not iconic, the return value is zero.
Zitat:
Wenn die Anwendung minimiert ist, dann ist das Ergebnis <> 0

Wenn die Anwendung nicht minimiert ist, dann ist das Ergebnis 0
Dann müsste es ja so funktionieren:
Delphi-Quellcode:
var wnd : HWND;
    i : Integer;
begin
  if IsIconic(wnd) then
  begin
    m.Lines.Add(IntToStr(i));
    inc(i);
  end;
Es passiert allerdings nichts. Woran könnte es liegen ?
  Mit Zitat antworten Zitat
Blackheart

Registriert seit: 4. Mai 2005
846 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Anwendung minimiert ?

  Alt 3. Mär 2007, 14:20
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;
Blackheart
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#5

Re: Anwendung minimiert ?

  Alt 3. Mär 2007, 14:24
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.
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#6

Re: Anwendung minimiert ?

  Alt 3. Mär 2007, 14:27
Was willst du tun, prüfen der Form oder der Application ?
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#7

Re: Anwendung minimiert ?

  Alt 3. Mär 2007, 14:29
Eigentlich Application, da schließlich die gesamte Anwendung in Tray minimiert wird und ich deshalb wissen muss, ob diese minimiert ist oder nicht.
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#8

Re: Anwendung minimiert ?

  Alt 3. Mär 2007, 15:08
Anwendung in Tray... also in die TNA oder in die Taskleiste ?

Abfrage, hier mal mit einem Timer, der Application:
Delphi-Quellcode:
procedure TFormX.TimerXTimer(Sender: TObject);
begin
  if isIconic(Application.Handle)
    then Application.Title := 'Minimiert'
    else Application.Title := 'nicht Minimiert';
end;
Eine weitere Möglichkeit sind die Applications Events. Delphi-Referenz durchsuchenTApplicationEvents OnMinimize OnRestore
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#9

Re: Anwendung minimiert ?

  Alt 3. Mär 2007, 15:15
Genau das habe ich gesucht. Danke!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:46 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