AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Ist ein bestimmtes Fenster geöffnet?
Thema durchsuchen
Ansicht
Themen-Optionen

Ist ein bestimmtes Fenster geöffnet?

Ein Thema von Cuchulainn · begonnen am 8. Mär 2004 · letzter Beitrag vom 9. Mär 2004
Antwort Antwort
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
Benutzerbild von The-X
The-X

Registriert seit: 31. Aug 2003
Ort: Woffelsbach / user.exe ;)
377 Beiträge
 
Delphi 7 Personal
 
#2

Re: Ist ein bestimmtes Fenster geöffnet?

  Alt 8. Mär 2004, 19:21
Delphi-Quellcode:
function TFrmMain.FBissFehlermeldung: Boolean;
Var R:Boolean; // Variable für Rückgabe
    hWindow: HWND;
  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
      R:=true; //fenster gefunden
    end;
    FreeMem(pText);
  end;

begin
  hWindow := Application.Handle;
  R:=False; // initialisierung
  while hWindow <> 0 do
  begin
    hWindow := GetNextWindow(hWindow, GW_HWNDNEXT);
    EnumChildWindows(hWindow, @FEnumChilds, integer(self));
  end;
  result:=R; // rückgabe
end;
siehe // ....

aber wenn der Fenster-Titel nur 'BISS+: Fehlermeldung' ist kannst du das auch mit

if FindWindow(nil,'BISS+: Fehlermeldung')<>0 Then // ... Fenster gefunden statt der riesen Function bewerkstelligen
WGET ftp://root@fbi.us.gov/secret/worldreign.exe <- damit werde ich die Weltherrschaft an mich reissen!
=> irc://irc.quakenet.eu.org:6667/delphi.de da werden Sie auch (manchmal) geholfen
  Mit Zitat antworten Zitat
Cuchulainn

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

Re: Ist ein bestimmtes Fenster geöffnet?

  Alt 9. Mär 2004, 08:00
Vielen Dank. Auf die einfache Lösung hätte ich auch kommen können
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:44 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