Delphi-PRAXiS

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/)
-   -   erste oder günstigste WM_ Message (https://www.delphipraxis.net/87844-erste-oder-guenstigste-wm_-message.html)

EWeiss 6. Mär 2007 10:12


erste oder günstigste WM_ Message
 
Muss nochmal nerven ;)
Was würdet ihr mir für eine WM_ Message empfehlen mit der ich
Delphi-Quellcode:
ShowWindow(WinHandle, SW_HIDE);
mein Window am schnellsten und vor allem am sichersten unsichtbar schalten kann.

Oder welche möglichkeit gibt es noch mit der man am schnellsten auf das erstellen und Show ereignis reagieren kann ?

WM_ACTIVATEAPP geht nicht damit schalte ich das Anwendungsfenster unsichtbar.


gruss

sakura 6. Mär 2007 10:18

Re: erste oder günstigste WM_ Message
 
Gehe in den SourceCode Deiner EXE und ändere den wie folgend:
Code:
program CapSIGN;

uses
  Forms,
  FormMain in 'FormMain.pas' {Form1};

{$R *.res}

begin
  Application.Initialize;
  [color=red]Application.ShowMainForm := False;[/color]
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
...:cat:...

EWeiss 6. Mär 2007 10:23

Re: erste oder günstigste WM_ Message
 
Zitat:

Zitat von sakura
Gehe in den SourceCode Deiner EXE und ändere den wie folgend:
Code:
program CapSIGN;

uses
  Forms,
  FormMain in 'FormMain.pas' {Form1};

{$R *.res}

begin
  Application.Initialize;
  [color=red]Application.ShowMainForm := False;[/color]
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
...:cat:...

Hmmmm .. Supi ;)
Zeig mal wie das in ner DLL funktioniert dann werd ich deinen Beispiel folgen.
Habe auch nach WM_ Messagen gefragt (liegt nahe) das es sich dann nicht unbedingt um eine Echse dreht.

aber sonst guter Tip :zwinker:
Hätte noch beischreiben sollen um was es sich handelt. 'DLL'

gruss

Luckie 6. Mär 2007 10:29

Re: erste oder günstigste WM_ Message
 
Du hast in einer DLL ein Fenster oder wie soll man das verstehen? Entweder erzeugst du es nicht oder du setzt die Eigenschaft Visisble auf False.

EWeiss 6. Mär 2007 10:36

Re: erste oder günstigste WM_ Message
 
Zitat:

Zitat von Luckie
Du hast in einer DLL ein Fenster oder wie soll man das verstehen? Entweder erzeugst du es nicht oder du setzt die Eigenschaft Visisble auf False.

Hehehehe nein ;)
Meine DLL startet ne andere die hat ein Fenster das ich schnell .. sehr schnell unsichtbar schalten will.
Aber ihr wißt genau um was es geht oder? :zwinker:

Seit ich hier im Forum bin beschäftige ich mich hauptsächlich mit meiner BassVis.dll

Bitte erbarmt euch meiner und gebt mir verständliche Infos...
Welche WM _Message gestattet mir den schnellstmöglichen zugriff auf die DLL welche von BAssVis gestartet wird
um das Fenster dieser unsichtbar zu schalten. :mrgreen:

gruss

marabu 6. Mär 2007 10:43

Re: erste oder günstigste WM_ Message
 
Hallo Emil,

wenn die fragliche DLL das Fenster-Handle exportiert, dann könntest du die Nachricht WM_SHOWWINDOW verwenden.

Freundliche Grüße

EWeiss 6. Mär 2007 11:00

Re: erste oder günstigste WM_ Message
 
Zitat:

Zitat von marabu
Hallo Emil,

wenn die fragliche DLL das Fenster-Handle exportiert, dann könntest du die Nachricht WM_SHOWWINDOW verwenden.

Freundliche Grüße

Danke marabu es müßte etwas davor liegen.
Bei WM_SHOWWINDOW ist das window schon sichtbar.

Wenn ich es erst dann verstecke gibt es einen unschönen nebeneffekt auf den Desktop.
Möglichst sollte es so sein das man nicht sieht wie das Fenster in den fremden container verschoben wird.

Habe das auch mal versucht scheint sich dann aber immer wieder recursiv aufzurufen
wenn ich es in WM_SHOWWINDOW versuche zu verstecken.

Gibts da irgendwas nach WM_ACTIVATEAPP? Quasi dann wenn das handle der DLL bekannt ist?
Allerdings könnte es dann auch schon zu spät sein..

Echt ein problem das richtige zu finden.

gruss

Muetze1 6. Mär 2007 13:03

Re: erste oder günstigste WM_ Message
 
Um nochmal was klarzustellen: Willst du eine Nachricht wissen, welche du dem Fenster senden kannst um es zu verstecken - oder - willst du wissen auf welche Nachricht an das Fenster du reagieren solltest, um es schnellstmöglich zu verstecken?

Mit anderen Worten zur zweiten Möglichkeit: Du bekommst nun schon alle Windows Messages von dem besagten Fenster (Hook whatever)?

Du fragst nach einer Nachricht um ein Fenster zu verstecken aber erklärst, als wenn du eine Nachricht als "Trigger" wissen willst um zeitlich das verstecken auszulösen bzw. an anzuzeigen zu verhindern. Was denn nun? :gruebel:

EWeiss 6. Mär 2007 13:28

Re: erste oder günstigste WM_ Message
 
Zitat:

Zitat von Muetze1
Um nochmal was klarzustellen: Willst du eine Nachricht wissen, welche du dem Fenster senden kannst um es zu verstecken - oder - willst du wissen auf welche Nachricht an das Fenster du reagieren solltest, um es schnellstmöglich zu verstecken?

Mit anderen Worten zur zweiten Möglichkeit: Du bekommst nun schon alle Windows Messages von dem besagten Fenster (Hook whatever)?

Du fragst nach einer Nachricht um ein Fenster zu verstecken aber erklärst, als wenn du eine Nachricht als "Trigger" wissen willst um zeitlich das verstecken auszulösen bzw. an anzuzeigen zu verhindern. Was denn nun? :gruebel:

Ja es ist etwas schwierig zu erklären.

Die plugins werden initialisiert.
Delphi-Quellcode:
Result := Vismod[VismodIndex]^.init(Vismod[VismodIndex]);
Zu diesen zeitpunkt ist mir das WinHandle des Fensters was dann erstellt wird noch nicht bekannt.
Dieses kann ich erst zu einen späteren zeitpunkt ermitteln da es vom Plugin selbst nicht übergeben wird.
Dieses mache ich über EnumWindows, was auch funktioniert.

Wenn das Plugin initialisiert wurde schickt es doch seine WindowMessagen!
In dem moment möchte ich wenn möglich reagieren um das Fenster des plugin schnellstmöglich zu verstecken.

Dann werden die WindowStyle verändert und das Plugin in den Container verschoben.
Erst dann soll es wieder sichtbar geschaltet werden.

Mit welcher WM_ Message oder anderen möglichkeit kann ich da schnell genug einfluss drauf nehmen das Fenster zu verstecken.
Mein problem ist halt das ich nicht schnell genug an das Handle des Fensters gelange.
Es aber zu diesen zeitpunkt schon sichtbar ist.


gruss

DP-Maintenance 6. Mär 2007 18:18

DP-Maintenance
 
Dieses Thema wurde von "Phoenix" von "Programmieren allgemein" nach "VCL / WinForms / Controls" verschoben.
Hier gehts um die Application, also VCL


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:39 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