Thema: Delphi Problem mit LoadPackage

Einzelnen Beitrag anzeigen

Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.840 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

Re: Problem mit LoadPackage

  Alt 2. Mai 2005, 16:21
Zitat von NicoDE:
Zitat von MaBuSE:
Wie bekomme ich diese Fehlermeldung weg, ohne den Task csrss.exe zu killen.
Ziemlich eklig:
- ProzessId des CSRSS besorgen (ToolHelp32)
- Fenster global durchgehen (gute Filterkreterien)
- blödes Ding per Fensternachricht verschwinden lassen...
Der CSRSS hat eine Queue solcher Nachrichten (kennt man vom 'Nachrichtendienst', die kommen jeweils erst nach dem Wegklicken).
Delphi scheint nicht mit dieser Queue zu arbeiten Delphi wartet, bis die nachicht weggeklickt wird und wird erst danach wieder aktiv.

Es gibt eine relativ einfache Lösung, da der Fenstertitel bekannt ist:
(hier gefunden: http://www.delphipraxis.net/internal...=357046#357046 )

Delphi-Quellcode:
// schließt alle Fenster mit dem Titel 'delphi...'

procedure TForm1.Button2Click(Sender: TObject);
var
  aHandle: HWnd;
begin
  aHandle := FindWindow(nil, 'delphi32.exe - Komponente nicht gefunden');
  while aHandle <> 0 do
  begin
    SendMessage(aHandle, WM_CLOSE, 0, 0);
    aHandle := FindWindow(nil, 'delphi32.exe - Komponente nicht gefunden');
  end;
end;

// bzw: wenn nur ein Fenster geschlossen werden soll

procedure TForm1.Button2Click(Sender: TObject);
var
  aHandle: HWnd;
begin
  aHandle := FindWindow(nil, 'delphi32.exe - Komponente nicht gefunden');
  if aHandle <> 0 do
  begin
    SendMessage(aHandle, WM_CLOSE, 0, 0);
  end;
end;

//Beide Funktionen sind in der user32.dll enthalten:

function FindWindow; external user32 name 'FindWindowA';
function FindWindow(lpClassName, lpWindowName: PChar): HWND; stdcall;

function SendMessage; external user32 name 'SendMessageA';
function SendMessage(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;

function PostMessage; external user32 name 'PostMessageA';
function PostMessage(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): BOOL; stdcall;
@NicoDE: Danke für den Schupps in die richtige Richtung
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat