AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Item aus Fremder Listview selektieren
Thema durchsuchen
Ansicht
Themen-Optionen

Item aus Fremder Listview selektieren

Offene Frage von "perle"
Ein Thema von perle · begonnen am 4. Aug 2005 · letzter Beitrag vom 9. Aug 2005
Antwort Antwort
perle

Registriert seit: 8. Apr 2004
183 Beiträge
 
Delphi 7 Enterprise
 
#1

Item aus Fremder Listview selektieren

  Alt 4. Aug 2005, 14:40
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?
(17:05:33) ( deccer ) duuu keine ahnung vonski?
(17:05:46) ( deccer ) duuuu ober dörticode schreibsorinski?
(17:06:02) ( deccer ) bist doch schlimmor wie uall :F
>> brechi : Livecracking is shice, da sieht man immer die Fehler <<
  Mit Zitat antworten Zitat
perle

Registriert seit: 8. Apr 2004
183 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Item aus Fremder Listview selektieren

  Alt 5. Aug 2005, 11:01
scheint keiner zu wissen?

Ich hab mittlerweile selber rausgefunden, wie ich die items ansprechen kann (anhand eines codes, den Luckie und NicoDE mal geschrieben haben)

Jetzt müsste ich nur noch wissen, wie ich das gefundene Item auswähle (so als ob man mit der Maus drauf klickt)

habs etwa mit :

Delphi-Quellcode:
ListView_SetItemState(mein_handle, itemIndex, LVIS_FOCUSED + LVIS_SELECTED,LVIS_FOCUSED + LVIS_SELECTED);
ListView_EnsureVisible(mein_handle,itemIndex,TRUE);
versucht, geht aber nicht

weiß da jemand mehr?
(17:05:33) ( deccer ) duuu keine ahnung vonski?
(17:05:46) ( deccer ) duuuu ober dörticode schreibsorinski?
(17:06:02) ( deccer ) bist doch schlimmor wie uall :F
>> brechi : Livecracking is shice, da sieht man immer die Fehler <<
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#3

Re: Item aus Fremder Listview selektieren

  Alt 8. Aug 2005, 17:25
Hiho,

da ich ja schräg von der Seite im Chat angesprochen wurde will ich mich doch einmal dazu äußern.

Ich habe das Problem bereits einmal für TreeView gelöst. Hier wird oft vernachlässigt, daß alle außer den Basis-Controls (Button, Edit, Static, usw ...) - und also die Common Controls - Probleme haben, weil es ja in Windows die Prozeßgrenzen gibt. Wenn man ein WM_SETTEXT oder WM_GETTEXT auf ein Fenster in einem fremden Prozeß macht, so funktioniert dies primär aus Kompatibilitätsgründen mit Win16. Wenn wir allerdings von den Common Controls sprechen, dann sprechen wir von nativen Win32-Controls. Diese beachten das Systemdesign von Win32 indem sie u.a. die Prozeßgrenzen würdigen. Entsprechend müssen wir dies auch tun. Und zwar tut man dies, indem man mit Win32-Mitteln im Prozeßbereich des anderen Prozesses Speicher alloziert und auch deren Pointer an die Nachrichten übergibt. Denn daß wir nicht einen Pointer aus unserem Prozeß übergeben oder einen fremden entgegennehmen dürfen und dann erwarten, daß dies funktioniert, sollte wohl jedem klar sein

Download
http://assarbad.net/stuff/!export/treeviewtext.rar

Sorry, habe aktuell für weitere Erläuterungen keine Zeit. Vielleicht kommt noch etwas später dazu ...
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Item aus Fremder Listview selektieren

  Alt 8. Aug 2005, 17:35
Siehe dazu LuckieDIPS. Ist mit Source.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
perle

Registriert seit: 8. Apr 2004
183 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Item aus Fremder Listview selektieren

  Alt 9. Aug 2005, 09:49
Danke für eure Antworten. Ich hab mir aus den Sources mal was passendes zusammen gehackstückelt und bekomme jetzt auch den Itemtext bzw den Index eines von mir gesuchten icons angezeigt.

Jetzt wollte ich noch ein bestimmtes gefundenes Item auswählen können also so, als ob man mit der Maus draufklickt, Ich hab es wiedermal mit diversen Messages probiert (z.B. LVM_SETITEMSTATE) aber es ist wieder nichts bei rumgekommen, wäre nett wenn ihr auch dazu eine Lösung hättet.
(17:05:33) ( deccer ) duuu keine ahnung vonski?
(17:05:46) ( deccer ) duuuu ober dörticode schreibsorinski?
(17:06:02) ( deccer ) bist doch schlimmor wie uall :F
>> brechi : Livecracking is shice, da sieht man immer die Fehler <<
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz