Hallo, ich möchte gerne ein bestimmtes Item einer ListView in einer fremden Anwendung finden und dort selektieren.
Das erste Problem was ich hier bekomme, ist das finden des Items.
Ich dachte mir das so :
-
handle finden :
hab ich mit findwindow/findwindowex gemacht und komme so auf mein
handle (habs mit x-spy überprüft, und es stimmt auch)
- itemcount ermitteln
hab ich mit
ItemCount := SendMessage(mein_handle,LVM_GETITEMCOUNT,0,0)
gemacht und bekomme auch den richtigen Wert zurückgeliefert
- mit einer Schleife durchlaufen und von jedem Item den Text ermitteln
Delphi-Quellcode:
var
arrCh : Array[0..MAX_PATH] of char;
...
for I := 0 to ItemCount - 1 do
begin
ListView_GetItemText(mein_Handle,i,0,arrCh,MAX_PATH); // hab auch @arrCh versucht
ShowMessage(arrCh);
end;
doch das gibt nur leerstrings zurück
Delphi-Quellcode:
var
arrCh : Array[0..MAX_PATH] of char;
LVItem : TLVItem;
...
for I := 0 to ItemCount - 1 do
begin
SendMessage(mein_Handle,LVM_GETITEMTEXT,iLoop,Integer(@LVItem)
ShowMessage(LVItem.pszText);
end;
gibt aber ebenfalls nur leerstrings zurück. Als letztes hab ich noch das probiert :
[delphi]
var
LVItemInfo : TLVFindInfo;
idx : Integer;
...
LVItemInfo.flags := LVFI_STRING;
LVItemInfo.psz := 'test';
idx := SendMessage(mein_Handle,LVM_FINDITEM,-1,Integer(@LVItemInfO));
[/delphi
idx ist dann aber 0 (obwohl das item mit dem Text 'test' an dritter stelle ist und im Fehlerfall der Funktion -1 zurückgegeben werden sollte.
Was mache ich denn falsch? Oder was könnte ich noch probieren?