Registriert seit: 31. Okt 2005
Ort: München
1.024 Beiträge
Delphi 7 Personal
|
Re: Vom Form Handle zum Icon
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.
|
|
Zitat
|