Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi IE schließen (https://www.delphipraxis.net/18252-ie-schliessen.html)

F.W. 16. Mär 2004 15:46


IE schließen
 
Hallo

mein Programm soll auf Knopfdruck den Internet Explorer schließen (wenn mehr als ein IE geöffnet ist, dann sollen alle geschlossen werden).

Hab' mir das so vorgestellt:
Delphi-Quellcode:
 SendMessage(FindWindow('IEFrame', ''), WM_Close, 1, 0);
[Edit] Hab's erst mit NIL an Stelle von '' gemacht, hat aber auch niht geklappt[/Edit]

Klappt aber leider nicht. Wie könnte ich das anstellen?

Hier im Forum habe ich auch danach gesucht, habe aber nichts gefunden.

PS: ich meine den richtigen IE vom MS

Danke!

Luckie 16. Mär 2004 16:13

Re: IE schließen
 
Was klappt nicht? Bekommst du ein gültiges Handle?

WM_CLOSE erwartet keine Parameter, also müssen alle 0 sein.

MathiasSimmack 16. Mär 2004 16:50

Re: IE schließen
 
Zitat:

Zitat von F.W.
Hab' mir das so vorgestellt: [...]

Ich hab´s so gemacht, wobei auf Wunsch alle Fenster oder nur die typischen Browser geschlossen werden:
Delphi-Quellcode:
var
  WebBrowsersOnly : boolean = false;

function CloseAll(Wnd: hWnd; lparam: LPARAM): longbool; stdcall;
const
  browser_classes : string = 'IEFrame|MozillaWindowClass|BLDOPERA';
var
  buf : array[0..MAX_PATH - 1]of char;
begin
  if(WebBrowsersOnly) then GetClassName(Wnd,buf,80);

  if(not WebBrowsersOnly) or
    (pos(buf,browser_classes) > 0) then
  begin
    if((GetWindowLong(Wnd, GWL_STYLE) and (WS_VISIBLE or WS_SYSMENU)) =
      (WS_VISIBLE or WS_SYSMENU)) then
    PostMessage(Wnd, WM_SYSCOMMAND,lParam,0);
  end;

  Result := true;
end;

{ ... }

// nur Browser ->
WebBrowsersOnly := true;
EnumWindows(@CloseAll,SC_CLOSE);

// alle Fenster
WebBrowsersOnly := false;
EnumWindows(@CloseAll,SC_CLOSE);
Man kann übrigens auch minimieren:
Delphi-Quellcode:
EnumWindows(@CloseAll,SC_MINIMIZE);
usw.

F.W. 16. Mär 2004 17:45

Re: IE schließen
 
Oh, ja das mit der 1 ist mir auch noch bei rumwerkeln aufgefallen, hatte ich mal probiert und nicht wieder zurück gestellt.

Ich werde gleich mal testen ob das geht... *Teste*

Hat geklappt!

Danke! :thuimb:


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