Thema: Delphi Vom Form Handle zum Icon

Einzelnen Beitrag anzeigen

Benutzerbild von ghost007
ghost007

Registriert seit: 31. Okt 2005
Ort: München
1.024 Beiträge
 
Delphi 7 Personal
 
#13

Re: Vom Form Handle zum Icon

  Alt 15. Mai 2007, 20:01
also,
ich verwende folgenden code um alle geöffneten programme und deren titel auszulesen.
Der code funktioniert auch gut, aber das mit dem icon auslesen bekomm ich nicht hin ... bekomm ständig ne access violation ...

Delphi-Quellcode:
function EnumWin(hWnd: THandle; FirstWnd: PCardinal): Boolean; stdcall;
var
  WinText: AnsiString;
  ProcId : cardinal;
  icon : Ticon;
begin
  Result := True;
  if IsWindowVisible(hwnd) then
  begin
    if (GetWindowLong(hwnd, GWL_EXSTYLE) and WS_EX_TOOLWINDOW) <> 0 then
      hwnd:= GetWindowLong(hWnd, GWL_HWNDPARENT);
    ProcId := GetWindowThreadProcessID(hWnd, nil);
    SetLength(WinText, SendMessage(hWnd, WM_GETTEXTLENGTH, 0, 0));
    SendMessage(hWnd, WM_GETTEXT, Length(WinText) + 1, integer(WinText));
    if (length(WinText) > 0) and (FirstWnd^ <> ProcId) then
     begin
      Form1.ListBox1.Items.Add(WinText);
      icon.Handle:=SendMessage(hWnd, WM_GETICON, ICON_BIG, 0);
      Form1.ImageList1.AddIcon(icon);
      icon.Free;
     end;
   FirstWnd^ := ProcId;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  FirstWnd : cardinal;
begin
  ListBox1.Clear;
  EnumWindows(@EnumWin, cardinal(@FirstWnd));
end;
MfG - Ghost007

P.S.Help me
Christian
Es gibt möglich Dinge und unmöglich Dinge.
Für unmögliche braucht man lediglich etwas länger.
  Mit Zitat antworten Zitat