![]() |
Fenster mit bestimmten Titel automatisch schließen
Hallo,
ich möchte, dass sich beim FormCreate()-Ereignis alle Fenster mit einem bestimmten Titel schließen - egal wie viele es sind. Kann mir da jemand helfen? Und ja, es soll NetSend-Nachrichten schließen - blöde Spammer! :P |
Re: Fenster mit bestimmten Titel automatisch schließen
du kannst die fenster mit findwindow finden, und dann mit Sendmessage und wm_close schließen. Nach dem das eine fenster geschlossen ist findest du mit findwindow das nächste fenster etc. bis eben keine mehr da sind. einfacher ist es übrigens den nachrichtendienst zu deaktivieren
|
Re: Fenster mit bestimmten Titel automatisch schließen
Danke, ich werde es mal versuchen. ;)
Zitat:
|
Re: Fenster mit bestimmten Titel automatisch schließen
Dann sag das den Admin. Und wenn er meint er bräuchte ihn, dann soll er den Firewall entsprechend einstellen.
|
Re: Fenster mit bestimmten Titel automatisch schließen
So, dass mit dem Fenster finden und schließen hab ich nun hinbekommen. Wie mach ich es aber, dass das Programm so lange es geöffnet ist alle kommenden Fenter schließt? Mein aktueller Code:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var win: hWnd; begin win := FindWindowByTitle('Nachrichtendienst') SendMessage(win, WM_SYSCOMMAND, SC_CLOSE, 0); end; |
Re: Fenster mit bestimmten Titel automatisch schließen
Timer, Thread, Fiber, ...
Und das Funktioniert? Also bei mir hat das Nachrichtenfenster eine Gemeintheit, da ist am Schluss noch ein Leerzeichen. :? |
Re: Fenster mit bestimmten Titel automatisch schließen
Zitat:
Würde es auch gehen, wenn ich eine while-schleife verwende und beim Buttonklick alle diese Fenster schließe? Zitat:
Delphi-Quellcode:
nicht.
FindWindow(nil, 'Nachrichtendienst');
|
Re: Fenster mit bestimmten Titel automatisch schließen
Was ist den FindWindowByTitle?
|
Re: Fenster mit bestimmten Titel automatisch schließen
Hab ich bei SwissDelphiCenter gefunden. Ist von Thomas Stutz.
Delphi-Quellcode:
{
FindWindowByTitle returns the handle of a window that contains a certain "WindowTitle". FindWindowByTitle gibt das Handle jenes Fensters zurück, das im Titel den String "WindowTitle" enthält. } function FindWindowByTitle(WindowTitle: string): Hwnd; var NextHandle: Hwnd; NextTitle: array[0..260] of char; begin // Get the first window NextHandle := GetWindow(Application.Handle, GW_HWNDFIRST); while NextHandle > 0 do begin // retrieve its text GetWindowText(NextHandle, NextTitle, 255); if Pos(WindowTitle, StrPas(NextTitle)) <> 0 then begin Result := NextHandle; Exit; end else // Get the next window NextHandle := GetWindow(NextHandle, GW_HWNDNEXT); end; Result := 0; end; { Example how to search for a window that contains the word "notepad" and maximize it. Beispiel, wie man ein Fenster "notepad" findet und es anschliessend maximiert. } procedure TForm1.Button1Click(Sender: TObject); var h: hwnd; begin h := FindWindowByTitle('notepad'); if h <> 0 then // if we found notepad ShowWindow(h, SW_MAXIMIZE) else ShowMessage('not found.'); end; ![]() |
Re: Fenster mit bestimmten Titel automatisch schließen
Das ist unsicher:
Delphi-Quellcode:
GetWindow(Application.Handle, GW_HWNDFIRST);
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:31 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