Einzelnen Beitrag anzeigen

neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#7

Re: Wo ist hier der (Denk-)Fehler? Aufruf von EnumWindowsPro

  Alt 5. Feb 2004, 17:13
Delphi-Quellcode:
type
  TWaechter = class(TObject)
  private
...
    class function EnumWindowsProc(hWindow : DWORD; fWaechter : TWaechter) : Longbool; stdcall;
      // const macht nur sinn bei Datentypen größer 4 Byte
...
  end;

var
  liste : array of String;

implementation

class function TWaechter.EnumWindowsProc(hWindow : DWORD; fWaechter : TWaechter) : Longbool; stdcall;
var sCaption : String;
    dwSize : DWORD;
begin
  Result := true; // TRUE = weitermachen

  if not IsWindowVisible(hWindow) then exit;

  dwSize := SendMessage(hWindow, WM_GETTEXTLENGTH, 0, 0);

  if dwSize > 0 then
     begin
       SetLength(sCaption, dwSize);

      // Lass das plus 1 weg
      SendMessage(hWindow, WM_GETTEXT, dwSize, Integer(PChar(sCaption)));
    end
  else
     sCaption := '';

   fWaechter.kontrolle(sCaption);
end;

procedure TWaechter.TZeitgeberOntimer(Sender : TObject);
begin
  EnumWindows(@EnumWindowsProc, Integer(Self));
end;

procedure TWaechter.kontrolle(const sText : String);
// hier ist const angebracht
var i :integer;
    bo : boolean;
begin
  //Weitere Verarbeitungen mit dem Namen des Fensters
end;

constructor TWaechter.create;
begin
  TZeitgeber := TTimer.create(nil);
  with TZeitgeber do
  begin
    interval := 500;
    onTimer := TZeitgeberOnTimer;
    enabled := false;
  end;
  SetLength(liste, 0);
end;

destructor TWaechter.destroy;
begin
  SetLength(liste, 0);
end;

procedure TWaechter.enabled(res: boolean);
begin
  TZeitgeber.enabled := res;
end;

end.
Ich hoffe ich habe nicht zu viel geändert.
Vorsicht: ungetest
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat