Einzelnen Beitrag anzeigen

Cuchulainn

Registriert seit: 26. Aug 2003
182 Beiträge
 
Delphi 5 Enterprise
 
#1

Ist ein bestimmtes Fenster geöffnet?

  Alt 8. Mär 2004, 10:51
Ich habe wieder einmal ein Problem. Mein Programm soll herausfinden, ob ein bestimmtes Fenster geöffnet ist. Es handelt sich dabei um ein Fenster mit der Titelleiste 'BISS: Fehlermeldung'. Das funktioniert gut. Sobald das Fenster gefunden wird, erscheint eine Meldung 'FEHLER'.
Das geschieht in der Callback-Funktion zu EnumChildWindows.
So weit so gut.
Jetzt will ich, dass die Funktion FBissFehlermeldung true zurückgibt, wenn das besagte Fenster erschienen ist. Wie erfährt FBissFehlermeldung jetzt, dass FEnumChilds das Fenster gefunden hat? Ich nehme an, dass ich eine Variable brauche, die beide Funktionen benutzen können und die ich setze, wenn das Fenster gefunden wurde, statt die Nachricht auszugeben. Aber ich habe keine Möglichkeit gefunden wie beide Funktionen auf dieselbe Variable zugreifen können.
Hier ist mein bisheriger Quellcode.

Delphi-Quellcode:
function TFrmMain.FBissFehlermeldung: Boolean;
  function FEnumChilds(hchild: HWND; lParameter: lparam): boolean; stdcall;
  var StrTitelleiste: String;
      pText: pChar;
      IntTextLaenge: Integer;
  begin
    Result := true;
    IntTextLaenge := SendMessage(hCHild, WM_GETTEXTLENGTH, 0,0 );
    GetMem(pText, IntTextLaenge + 1);
    SendMessage(hChild, WM_GETTEXT, IntTextLaenge + 1, Integer(pText));
    if pos('BISS+: Fehlermeldung', pText) <> 0 then
    begin
      Showmessage('Fehler');
    end;
    FreeMem(pText);
  end;

var hWindow: HWND;
begin
  hWindow := Application.Handle;
  while hWindow <> 0 do
  begin
    hWindow := GetNextWindow(hWindow, GW_HWNDNEXT);
    EnumChildWindows(hWindow, @FEnumChilds, integer(self));
  end;
end;
Ich hoffe, es ist angekommen, was ich meine.
  Mit Zitat antworten Zitat