Einzelnen Beitrag anzeigen

Benutzerbild von mika
mika

Registriert seit: 25. Okt 2002
176 Beiträge
 
Delphi 6 Professional
 
#12

Re: Overload bei Funktion, beide Parameter sind Ganzzahl

  Alt 2. Sep 2005, 14:38
So wenn man die Funktion ReadToplevelPrograms so umbaut:

Delphi-Quellcode:
Function TRunningPrograms.ReadToplevelPrograms: Boolean;
Type
  PMyEnumParam = ^TMyEnumParam;
  TMyEnumParam = Record
    Handles: TStringlist;
    Captions: TStringlist;
  End;

Var
  ndx: Integer;
  Handlelist,
  Captionlist: TStringlist;
  Params: TMyEnumParam;

  function GetWindows(const hWnd : THandle; Param: PMyEnumParam): LongBool; stdcall;
  var
    cLen: Longint;
    strCaption: String;

  begin
    Result := True;
    if (IsWindowVisible(hWnd)) and
       ((GetWindowLong(hWnd, GWL_HWndPARENT) = 0) or
       (GetWindowLong(hWnd, GWL_HWndPARENT) = GetDesktopWindow)) and
       (GetWindowLong(hWnd, GWL_EXSTYLE) and WS_EX_TOOLWINDOW = 0) then
    begin
      cLen := SendMessage(hWnd, WM_GETTEXTLENGTH, 0, 0);
      if cLen > 0 then
      begin
        SetLength(strCaption, cLen);
        SendMessage(hWnd, WM_GETTEXT, cLen + 1, Longint(Pchar(strCaption)));
        Param.Handles.Add(IntToStr(hWnd));
        Param.Captions.Add(strCaption);
      end;
    end;
    // mit Result = False kann die Callbackfunktion vorzeitig verlassen werden
  end;

Begin
  If Assigned(oPrograms) then
  begin
    Params.Handles := TStringList.Create;
    Params.Captions := TStringList.Create;

    EnumWindows(@GetWindows, LPARAM(@Params));
    for ndx := 0 to Params.Handles.Count - 1 do
    begin
      AddProgram(StrToInt(Params.Handles.Strings[ndx]), Params.Captions.Strings[ndx]);
    end;

    Params.Handles.Free;
    Params.Captions.Free;
    Result := True;
  end else
    Result := False;
End;
Dann funktioniert das auch mit dem AddProgram. Danke an alle die mir Antworten gegeben haben, ich programmier jetzt mal weiter.

Cu!
:: don't Panic ::
  Mit Zitat antworten Zitat