Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Anhand von Listview.handle Itemscaptions auslesen (https://www.delphipraxis.net/22028-anhand-von-listview-handle-itemscaptions-auslesen.html)

SirThornberry 11. Mai 2004 15:11


Anhand von Listview.handle Itemscaptions auslesen
 
Hallo,

ich hab ein Programm wir mir informationen in einer Tabelle (Listview) dargestellt werden. Allerdings gibt es in diesem keine Funktion die Einträge irgendwie zu exportieren. Ich brauch allerdings die daten die in dem Listview stehen für eine Statistik.

Ist es irgendwie möglich anhand des Listviewhandles die Captions des Listviews zu erzahlten? Wenn es noch ne Möglichkeit gäbe die Subitems irgendwie abzufragen wäre das noch besser aber mir würde es auch erstmal reichen irgendwie die Captions auszulesen. Es gibt doch bestimmt sowas wie es auch wm_gettext gibt um den Text von Edits zu erhalten...

Gruß Thornberry

Alexander 11. Mai 2004 15:19

Re: Anhand von Listview.handle Itemscaptions auslesen
 
Ich denke man muss dann direkt über die API auf die Listview zu greifen. Vielleicht helfen dir da Luckie's WinAPI-Tutorials ?

Edit: Schau mal hier: http://msdn.microsoft.com/library/de...vm_getitem.asp

Christian Seehase 11. Mai 2004 18:09

Re: Anhand von Listview.handle Itemscaptions auslesen
 
Moin Sir Thornberry,

Zitat:

Zitat von SirThornberry
Es gibt doch bestimmt sowas wie es auch wm_gettext gibt um den Text von Edits zu erhalten...

Nein, gibt es leider nicht.
Das gilt für alle Controls, die es erst seit 32-Bit Windows gibt.
Die "alten" Controls (eben auch EDIT), die es schon unter 16 Bit Windows gab, bieten diese Möglichkeit aus Gründen der Abwärtskompatibilität noch.

Alexanders Vorschlag funktioniert nur innerhalb des eigenen Adressraumes, so dass sich das Problem mit dem Auslesen eines fremden ListViews nur über eine Inject DLL lösen lassen dürfte.

Alexander 11. Mai 2004 18:18

Re: Anhand von Listview.handle Itemscaptions auslesen
 
[quote="Christian Seehase"]Moin Sir Thornberry,

Zitat:

Zitat von SirThornberry
Alexanders Vorschlag funktioniert nur innerhalb des eigenen Adressraumes, so dass sich das Problem mit dem Auslesen eines fremden ListViews nur über eine Inject DLL lösen lassen dürfte.

Oh :oops:

SirThornberry 11. Mai 2004 18:18

Re: Anhand von Listview.handle Itemscaptions auslesen
 
@Christian Seehase: Es geht doch, ich hab inzwischen etwas gefunden. Und zwar gibt es da die LVM-Messages in der unit "CommCtrl". Allerdings klappt da irgendwas auch nicht mehr. Aber das ist jetzt egal. Es war leider doch keine Komponente die vom Listview abgeleitet wurde und somit brauch ich das ganze auch nicht mehr..

Alexander 11. Mai 2004 18:25

Re: Anhand von Listview.handle Itemscaptions auslesen
 
Trotzdem wäre es vielleicht interessant, wenn du den Code hierein oder in die Codelib packst (wenn er denn halbwegs funktioniert...)

Christian Seehase 11. Mai 2004 18:25

Re: Anhand von Listview.handle Itemscaptions auslesen
 
Moin Sir Thornberry,

Zitat:

Zitat von SirThornberry
Es geht doch, ich hab inzwischen etwas gefunden. Und zwar gibt es da die LVM-Messages in der unit "CommCtrl".

nein, es geht nicht.
Wie oben schon beschrieben funktionieren die LVM Messages nicht über Prozessgrenzen hinweg.

Luckie 11. Mai 2004 22:02

Re: Anhand von Listview.handle Itemscaptions auslesen
 
Prinzip: Reservier dir Speicher im fremden Prozess mit MSDN-Library durchsuchenVirtualAllocEx. Schreib deine Infos da rein mit MSDN-Library durchsuchenWriteProcessMemory, dann kiopierts du die Struktur im Speicher des fremden Prozesses mit MSDN-Library durchsuchenReadProcessMemory in eine identische Struktur in einen Speicherbereich deines Prozesses. Und wie das alles praktisch fuktioniert, kannst du dir an meinen LuckieDips ankucken. Zu finden auf meinmer Freeware-Seite mit Source.

SirThornberry 11. Mai 2004 22:04

Re: Anhand von Listview.handle Itemscaptions auslesen
 
@Luckie: schlegt das Counten der Items auch fehl wenn die ListView nicht zum eigenen Prozess gehört?

tommie-lie 11. Mai 2004 22:30

Re: Anhand von Listview.handle Itemscaptions auslesen
 
LVM_GETITEMCOUNT kannst du auch an fremde Prozesse schicken, da es keinen Pointer benutzt.
Das Problem bei solchen Messages ist eigentlich nur, wenn ein Puffer benötigt wird, der in Form eines Pointers angegeben ist. Bei 9x soll man da MMFs benutzen um einen SharedMemory-Block einzublenden, bei NT klappt das leider nicht mehr, da geht dann nur Luckies Variante mit VirtualAllocEx (die wiederum mit 9x nicht mehr geht, alles ziemlich inkonsequent :mrgreen:).
LVM_GETITEMCOUNT benutzt aber keinen Pointer, um den Wert zurückzugeben (z.B. eine Struktur oder sowas), sondern als Ergebnis der Message (somit als Ergebnis der SendMessage-Prozedur), und das klappt auch über Prozessgrenzen hinweg.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:25 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