Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi SendMessages und ListView (https://www.delphipraxis.net/93935-sendmessages-und-listview.html)

ghost007 13. Jun 2007 14:33


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:
SendMessage(hwnd,lvm_getitem,0,x);
hwnd ist das handle des listviews, oder?
laut msdn soll x ein pointer zu einem LVITEM sein.
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:
SendMessage(hwnd,lvm_getcolumn,0,y);
Link zu der funktion hier
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

Luckie 13. Jun 2007 14:40

Re: SendMessages und ListView
 
Zitat:

Zitat von ghost007
hwnd ist das handle des listviews, oder?

Woher sollen wir das wissen?

Zitat:

laut msdn soll x ein pointer zu einem LVITEM sein.
Ist es ein Listview in einem fremden Prozess?

Sag mal liest du eigentlich die Antworten: http://www.delphipraxis.net/internal...=734059#734059

SirThornberry 13. Jun 2007 14:42

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

ghost007 13. Jun 2007 14:47

Re: SendMessages und ListView
 
Zitat:

Zitat von Luckie
Zitat:

Zitat von ghost007
hwnd ist das handle des listviews, oder?

Woher sollen wir das wissen?

Zitat:

laut msdn soll x ein pointer zu einem LVITEM sein.
Ist es ein Listview in einem fremden Prozess?

Sag mal liest du eigentlich die Antworten: http://www.delphipraxis.net/internal...=734059#734059

... danke für deine überaus freundlichen antworten ...
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:
x:TLVItem;
ist es nicht getan, das hab ich grad getestet. :(
[/EDIT]

SirThornberry 13. Jun 2007 14:59

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:
SendMessage(ListViewHandle, MessageID, 0, Integer(@DeinLVItem));
Zum Thema Pointer und Pointertypen:
http://www.dsdt.info/grundlagen/sprache/zeiger.php

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.

Luckie 13. Jun 2007 15:00

Re: SendMessages und ListView
 
Zitat:

Zitat von ghost007
Und ja ich leses auch die antworten ... sonst würd ich den treat nicht aufmachen.

Hast du denn schon mit MSDN-Library durchsuchenVirtualAlloc Speicher im fremden Prozess reserviert?

ghost007 13. Jun 2007 15:09

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]

bitsetter 13. Jun 2007 15:32

Re: SendMessages und ListView
 
Hi.

in SirT Beispiel würde der Typ TLVItem funktionieren;

ghost007 13. Jun 2007 17:12

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:
LVItem[index].caption;
funktionierts net.

[/EDIT]

Luckie 13. Jun 2007 21:16

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 "Win32-API Tutorials für Delphi" durchliest.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:17 Uhr.
Seite 1 von 2  1 2      

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