Einzelnen Beitrag anzeigen

Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Taskmanager ListView auslesen

  Alt 23. Mär 2008, 13:14
Hi,

Ich versuche gerade den Text des markierte Items in der Prozess-ListView im Taskmanager zu erhalten.
Folgendes Vorgehen funktioniert auch im Explorer bei markierten Dateien. Wenn ich das hier ausführe, dann stürzt der Taskmanager ab.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var wnd,Button,ListView: hwnd;
    Item: TLVItemA;
    Buffer: PChar;
    Index: Integer;
begin
  wnd := FindWindow('#32770',nil);
  wnd := FindWindowEx(wnd,0,'#32770',nil);
  ListView := FindWindowEx(wnd,0,'SysListView32',nil);
  if ListView <> 0 then
  begin
    GetMem(Buffer,255);
    Index := SendMessage(ListView,LVM_GETSELECTIONMARK, 0, 0);
    with Item do
    begin
      mask := LVIF_TEXT;
      iItem := Index;
      iSubItem := 0;
      pszText := Buffer;
      cchTextMax := 256;
    end;
    ListView_GetItem(Listview,Item);
    ShowMessage(Buffer);
  end;
end;
Also die Handles stimmen. Ich kann sogar die Schrift und Hintergrundfarbe des Listviews ändern aber bei

ListView_GetItem(Listview,Item); stürzt mein Taskmanager immer ab

PS: @toms: Dein Winspy hat mir keinen funktionierenden Code ausgespuckt für die ListView!

Delphi-Quellcode:
var
  wnd: HWND;
begin
  wnd := FindWindow('#32770','');
  // da fehlt:
  // wnd := FindWindowEx(wnd,0,'#32770',nil);
  wnd := FindWindowEx(wnd, 0, 'SysListView32', nil);
  if wnd <> 0 then
  begin
   // ShowMessage('Window found. Handle: ' + IntToStr(wnd));
     writeln('Window found. Handle: ' + IntToStr(wnd));
     FlashWindow(wnd);
  end;
end.

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat