Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Das Minimieren des Fensters abfangen (https://www.delphipraxis.net/166451-das-minimieren-des-fensters-abfangen.html)

Popov 14. Feb 2012 10:53

Das Minimieren des Fensters abfangen
 
Und zwar geht es um den Dektop-Button in der Quick Launch. Diese Anweisung minimiert alle Fenster, auch eine zweite Taskbar von mir, die eigentlich immer sichtbar sein sollte. Weiß einer was da passiert? Wie gesagt, SC_MINIMIZE ist es in dem Fall nicht.

himitsu 14. Feb 2012 12:55

AW: Das Minimieren des Fensters abfangen
 
SC_...
Von Windows kommen WM_-Nachrichten.

Davon könntest du die Entsprechende abfangen/ignorieren.

Darlo 14. Feb 2012 13:21

AW: Das Minimieren des Fensters abfangen
 
Erst lesen dann antworten...
Die Antwort kannst Du ignorieren, sorry;


####################################
Vielleicht in etwa so:

Code:
procedure TForm.FormResize(Sender: TObject);
begin
if form.windowstate = wsminimized then
  SendMessage(Handle,WM_SYSCOMMAND,SC_MINIMIZE,0);
end;

procedure TForm.MyWM_SYSCOMMAND(var aMsg: TMessage);
begin
  if aMsg.WParam = SC_MINIMIZE then
    Application.Minimize
  else
    inherited;
end;
Gruß

Popov 14. Feb 2012 13:46

AW: Das Minimieren des Fensters abfangen
 
Zitat:

Zitat von himitsu (Beitrag 1151020)
SC_...
Von Windows kommen WM_-Nachrichten.

Da steht auch nirgendwo das Wort Message oder Nachricht. Ich meinte die SC_MINIMIZE Konstate der WM_SYSCOMMAND Message. Ich dachte das war ersichtlich.

Zitat:

Davon könntest du die Entsprechende abfangen/ignorieren.
Nun, das ist ja das Problem. Das scheint keine WM_SYSCOMMAND Message zu sein.

@Darlo

Das habe ich in etwa auch so versucht, ohne Erfolg.

DeddyH 14. Feb 2012 13:47

AW: Das Minimieren des Fensters abfangen
 
Das dürfte auch nicht ganz so trivial sein: http://www.mombu.com/microsoft/windo...on-567693.html

ConnorMcLeod 14. Feb 2012 15:48

AW: Das Minimieren des Fensters abfangen
 
Vllt reicht es so indem Du Deine Logik einsetzt:

Delphi-Quellcode:
    procedure WMSysCommand ( Var Message : TWMSysCommand ); message WM_SYSCOMMAND;
    procedure SizeMove (var msg: TWMSize); message WM_SIZE;

-----

procedure TForm1.WMSysCommand ( Var Message : TWMSysCommand );
begin
  inherited;
  case Message.CmdType of
    SC_RESTORE:
      begin
      end;
    SC_MAXIMIZE:
      begin
      end;
    SC_MINIMIZE:
      begin
      end;
  end;
end;

procedure TForm1.SizeMove(var msg: TWMSize);
begin
  inherited;
  case msg.SizeType of
    SIZE_RESTORED : ;
    SIZE_MINIMIZED: ;
    SIZE_MAXIMIZED: ;
    SIZE_MAXSHOW : ;
    SIZE_MAXHIDE : ;
  end;
end;

Popov 17. Feb 2012 01:13

AW: Das Minimieren des Fensters abfangen
 
@ConnorMcLeod

Klappt auch nicht. Ich hab in alles was mir einfiel ein Beep-Signal eingebaut, auch in Application.OnMinimize. Alles funktioniert wie es soll, nur nicht denn der Desktopbutton geklickt wird.

Ich gucke mir mal den Link von DeddyH genauer an, auch wenn mein Englisch beschissen ist

EWeiss 17. Feb 2012 06:02

AW: Das Minimieren des Fensters abfangen
 
Zitat:

Und zwar geht es um den Dektop-Button in der Quick Launch
Ich komme damit nicht klar.
Was verstehst du unter Quick Launch?

Meinst du den Button Desktop Anzeigen?
Wenn ja wer sagt dir das hier die Anwendungen Minimiert werden?
Ich möchte das bezweifeln.

Dieser Button schaltet die ZORDER des Desktop.

gruss

ConnorMcLeod 17. Feb 2012 06:42

AW: Das Minimieren des Fensters abfangen
 
Hilft das hier?
Oder das?

Popov 17. Feb 2012 07:53

AW: Das Minimieren des Fensters abfangen
 
Ok, danke Jungs, es hat geklappt.

Zitat:

Zitat von ConnorMcLeod (Beitrag 1151538)
Hilft das hier?
Oder das?

Bedingt, wobei ich mit OnDeActivate und OnMinimaze es auch schon versucht habe.

Zitat:

Zitat von EWeiss (Beitrag 1151536)
Was verstehst du unter Quick Launch?

Ich meine die Schnellstart-Leiste ;)

Ist zum Mäuse melken. Jahre lang schrieb ich immer "Schnellstart-Leiste". Als Antwort bekam ich: "Hä, was ist eine Schnellstartleiste? Meinst du die Quick Launch?". Schreibe ich Quick Launch... ach, ist egal.

Zitat:

Wenn ja wer sagt dir das hier die Anwendungen Minimiert werden?
Ich möchte das bezweifeln.
Ich eigentlich auch, wobei es optisch nach minimieren aussieht. Spätestes nachdem ich gemerkt habe, dass keine Message ankommt.

Zitat:

Dieser Button schaltet die ZORDER des Desktop.
Das war das Stichwort. Obwohl das Stichwort, der Versuch ConnorMcLeod's Tipp auszuführen und die Kleinigkeit, dass eines meine Programme die im Hintergrund laufen beim Versuch oben blieben, ergab, dass das die Lösung ist:

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  SetWindowPos(Handle, HWND_TOPMOST, Left,Top, Width, Height, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
  SetWindowLong(Handle, GWL_HWNDPARENT, 0);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:45 Uhr.
Seite 1 von 4  1 23     Letzte »    

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