![]() |
SendMessages und ListView
Hallo,
ich arbeite grad mit sendmessage im zusammenhang mit einem listview. das ist soweit kein problem. Wenn ich jedoch funktionen wie lvm_getitem benutze ruf ich diese wie folgt auf:
Delphi-Quellcode:
hwnd ist das handle des listviews, oder?
SendMessage(hwnd,lvm_getitem,0,x);
laut ![]() Was für eine variable setzte ich nun in delphi hier ein? Ein TListItem geht nicht, laut delphi 7 muss die variable vom typ integer sein. Aber wie komm ich dann an den inhalt (text) des items? Das gleiche problem, oder ein ähnliches hab ich bei dem befehl:
Delphi-Quellcode:
Link zu der funktion
SendMessage(hwnd,lvm_getcolumn,0,y);
![]() hwnd ist wieder das handle des listviews. y soll angeblich ein pointer zu einem LVColumn sein, aber was ist das in delphi? bzw wie komm ich an den inhalt (text) der spalte(column)? MfG - Ghost007 |
Re: SendMessages und ListView
Zitat:
Zitat:
Sag mal liest du eigentlich die Antworten: ![]() |
Re: SendMessages und ListView
wie du schon sagtest, einen pointer auf eine variable vom typ lvitem. Laut Hilfe ist es ein struct was in Delphi einem Record entspricht. Und Records etc. fangen mit T an. Dementsprechend ein Pointer auf eine Variable vom Typ TLVItem
|
Re: SendMessages und ListView
Zitat:
Das war ne frage ob es das handle des listviews sein muss, oder ob vll das handle von etwas anderem. Es gibt nämlich auch ne funktion, die einem das edithandle eines einzelnen items liefert. --> vll muss man ja das handle nehmen. Ja es ist ein listview in einem fremden prozess. Und ja ich leses auch die antworten ... sonst würd ich den treat nicht aufmachen. @SirThornberry: bin grad noch inner arbeit, werd dann daheim das mit dem TLVItem testen, danke schonmal. MfG - Ghost007 [EDIT] wie definier ich einen variable als pointer auf eine TLVItem? also mit
Delphi-Quellcode:
ist es nicht getan, das hab ich grad getestet. :(
x:TLVItem;
[/EDIT] |
Re: SendMessages und ListView
du musst den Pointer auf die Variable angeben (also die Adresse wo deine Variable liegt damit an diese Adresse die Daten geschrieben werden können). Und die Adresse einer Varialben bekommt man durch vorranstellen des @
da SendMessage einen Integer erwartet musst du die Adresse dann noch auf Integer casten
Delphi-Quellcode:
Zum Thema Pointer und Pointertypen:
SendMessage(ListViewHandle, MessageID, 0, Integer(@DeinLVItem));
![]() Wenn das Listview im Speicher des anderes Prozesses liegt muss die Variable auch unbedingt im Speicherbereich des anderen Prozesses liegen sonst kann das Listview aus dem anderen Prozess logicher Weise nichts an die Stelle schreiben weil es keinen Schreibzugriff auf den Speicher deines Prozesses hat. |
Re: SendMessages und ListView
Zitat:
![]() |
Re: SendMessages und ListView
danke für deine kurze einführung, SirThornberry.werd mir den link mal durchlesen und dann schaun wie ich die von Luckie beschriebene Speicherreservierung hinbekomme.(da der listview in nem anderen prozess liegt)
MfG - Ghost007 [EDIT] eine frage noch:von welchem typ muss die variable DeinLVItem sein? pointer oder welcher? [/EDIT] |
Re: SendMessages und ListView
Hi.
in SirT Beispiel würde der Typ TLVItem funktionieren; |
Re: SendMessages und ListView
hm,
und wie les ich dann die eigenschaften aus dem LVItem aus? (z.B. den titel/text des items) in der delphi hilfe find ich nix zu TLVItem :( MfG - Ghost007 [EDIT] soweit ich das verstanden hab, sind in dem LVItem alle items aus dem listview gespeichert,oder? wie komm ich da nu an die einzelnen? mit
Delphi-Quellcode:
funktionierts net.
LVItem[index].caption;
[/EDIT] |
Re: SendMessages und ListView
Eventuell solltest du dir erstml klar machen, wie die Win-API funktioniert und dich mit den Grundlagen vertraut machen. Hilfreich wäre es bestimmt auch, wenn du dir zu mindest das Kapitel über Listviews in meinen "
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:28 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz