Einzelnen Beitrag anzeigen

Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Offene Fenster auslesen + aufs Closen eines best. reagie

  Alt 19. Aug 2007, 11:07
Zitat von xX0815Xx:

Delphi-Quellcode:
function EnumWin1(hWnd: THandle; FindWin: PString): Boolean; stdcall;
var
  WinText: AnsiString;
  Task : TStringList;
begin
  Result := True;
  Task := TStringlist.Create;
Hi,

deine TStringList wird immer wieder neu erzeugt, besser wäre wenn du sie als Parameter mit übergibst und sie danach auswertest, so in etwa:
Delphi-Quellcode:
function EnumWin1(hWnd: THandle; Task: TStringList): Boolean; stdcall;
var
  WinText: AnsiString;
begin
  Result := True;
  if IsWindowVisible(hWnd) and not boolean(GetWindowLong(hWnd, GWL_HWNDPARENT)) then
  begin
    SetLength(WinText, SendMessage(hWnd, WM_GETTEXTLENGTH, 0, 0));
    SendMessage(hWnd, WM_GETTEXT, Length(WinText)+ 1, integer(WinText));
    if (length(WinText)> 0) and (WinText <> 'Program Manager') then
      Task.Add(wintext);
  end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  Task : TStringList;
begin
  Task := TStringlist.Create;
  try
    EnumWindows(@EnumWin1, lParam(Task));
               // aktiv ist ne globale variable, wurde vorher schon ermittelt...
    if Task.IndexOf(aktiv) = -1 then
      ShowMessage('Net da')
  finally
    Task.Free;
  end;
end;
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat