AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

SendMessages und ListView

Ein Thema von ghost007 · begonnen am 13. Jun 2007 · letzter Beitrag vom 19. Jun 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von ghost007
ghost007

Registriert seit: 31. Okt 2005
Ort: München
1.024 Beiträge
 
Delphi 7 Personal
 
#1

SendMessages und ListView

  Alt 13. Jun 2007, 15:33
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:

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:
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
Christian
Es gibt möglich Dinge und unmöglich Dinge.
Für unmögliche braucht man lediglich etwas länger.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: SendMessages und ListView

  Alt 13. Jun 2007, 15:40
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
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: SendMessages und ListView

  Alt 13. Jun 2007, 15:42
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
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von ghost007
ghost007

Registriert seit: 31. Okt 2005
Ort: München
1.024 Beiträge
 
Delphi 7 Personal
 
#4

Re: SendMessages und ListView

  Alt 13. Jun 2007, 15:47
Zitat von Luckie:
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
x:TLVItem; ist es nicht getan, das hab ich grad getestet.
[/EDIT]
Christian
Es gibt möglich Dinge und unmöglich Dinge.
Für unmögliche braucht man lediglich etwas länger.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: SendMessages und ListView

  Alt 13. Jun 2007, 15:59
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
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: SendMessages und ListView

  Alt 13. Jun 2007, 16:00
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?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von ghost007
ghost007

Registriert seit: 31. Okt 2005
Ort: München
1.024 Beiträge
 
Delphi 7 Personal
 
#7

Re: SendMessages und ListView

  Alt 13. Jun 2007, 16:09
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]
Christian
Es gibt möglich Dinge und unmöglich Dinge.
Für unmögliche braucht man lediglich etwas länger.
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: SendMessages und ListView

  Alt 13. Jun 2007, 16:32
Hi.

in SirT Beispiel würde der Typ TLVItem funktionieren;
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Benutzerbild von ghost007
ghost007

Registriert seit: 31. Okt 2005
Ort: München
1.024 Beiträge
 
Delphi 7 Personal
 
#9

Re: SendMessages und ListView

  Alt 13. Jun 2007, 18:12
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
LVItem[index].caption; funktionierts net.

[/EDIT]
Christian
Es gibt möglich Dinge und unmöglich Dinge.
Für unmögliche braucht man lediglich etwas länger.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: SendMessages und ListView

  Alt 13. Jun 2007, 22:16
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 18:31 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