AGB  ·  Datenschutz  ·  Impressum  







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

ListView in Richedit kopieren

Ein Thema von FriFra · begonnen am 8. Jul 2005 · letzter Beitrag vom 12. Jul 2005
Antwort Antwort
Benutzerbild von FriFra
FriFra

Registriert seit: 19. Apr 2003
1.291 Beiträge
 
Delphi 2005 Professional
 
#1

ListView in Richedit kopieren

  Alt 8. Jul 2005, 00:18
Ich will irgendwie einen Listview in ein Richedit kopieren. Dabei sollen alle Images und Statusimages mit kopiert werden
Hat jemand eine Idee, wie man da am besten heran gehen könnte?
Elektronische Bauelemente funktionieren mit Rauch. Kommt der Rauch raus, geht das Bauteil nicht mehr.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: ListView in Richedit kopieren

  Alt 8. Jul 2005, 01:14
Speicher im Prozess des Listwies reservieren (MSDN-Library durchsuchenVirtualAllocEx, dort in eine TListItem Struktur alles reinkopieren (MSDN-Library durchsuchenWriteProcessMemory) und dann mittels MSDN-Library durchsuchenReadProcessmemory in eine identsiche Struktur im eigenen Prozess kopieren. Dann kannst du damit machen, was du willst. Für Details guck dir meine LuckieDIPS an.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von FriFra
FriFra

Registriert seit: 19. Apr 2003
1.291 Beiträge
 
Delphi 2005 Professional
 
#3

Re: ListView in Richedit kopieren

  Alt 8. Jul 2005, 05:20
Zitat von Luckie:
Für Details guck dir meine LuckieDIPS an.
Der Server scheint down zu sein ...
Im Moment weiß ich überhaup noch nicht, worauf das ganze hinaus laufen soll? Ohne ein Beispiel, oder eine Erklärung, wie mich das Schreiben im Prozess des Listview weiter bringen soll kann ich damit nichts anfangen ...
Elektronische Bauelemente funktionieren mit Rauch. Kommt der Rauch raus, geht das Bauteil nicht mehr.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: ListView in Richedit kopieren

  Alt 8. Jul 2005, 12:23
Geht wieder.

Na ist doch ganz klar, du kannst ja nicht direkt auf den Speicher im fremden Prozess zugreifen, sondern nur auf Speicher, den du dir im fremden Prozess auch reserviert hast. Und nachrichten wie LVM_GETITEM und so funktionieren nicht, weil:
Zitat von Luckie:
Der Listview gehört zu den neuen 32-Bit Steuerelementen (Commoncontrols). Das vor weg. Früher, unter 16-Bit Windows, waren die Speicherbereiche der Prozesse noch nicht getrennt, das heißt, ich konnte ohne weiteres auf den Speicherbereich eines anderen Prozesses zugreifen. Mircosoft hat, aus Kompatibilitätsgründen, dieses Verhalten auch unter 32-Bit Windows für die damals schon vorhandenen und unter 32-Bit Windows immer noch vorhandenen Kontrolls implememntiert. Aufrufe wie WM_GETTEXT für Edit-Felder usw. werden dazu in einen gemeinsamen Speicherbereich gemappt. Für die neu hinzugekommen Kontrolls (Listview, Treeview, Statusbar, ...) sah Microsoft diese Notwendigkeit nicht. Da Listview_Gettext eigentlich nur einen Zeiger auf einen Buffer zurückliefert, schlägt logischerweise dieser Aufruf fehl, wenn es sich um einen Listview in einem fremden Prozess handelt. Listview_GetItemCount funktioniert, da der konkrete Wert zurückgeliefert wird und kein Zeiger auf einen Buffer.

Lösung: Reserviere Speicher im fremden Prozess, fülle ihn mit MSDN-Library durchsuchenWriteProcessmemory und kopier ihn mit MSDN-Library durchsuchenReadProcessMemory in eine identische Struktur in den Adressraum deines Prozesses. Wie das genau geht kannst du dir bei meinen LuckieDIPS ( http://programme.luckie-online.de ) ankucken.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von FriFra
FriFra

Registriert seit: 19. Apr 2003
1.291 Beiträge
 
Delphi 2005 Professional
 
#5

Re: ListView in Richedit kopieren

  Alt 12. Jul 2005, 14:44
Worauf das ganze hinaus laufen soll ist mir immer noch nicht klar... Ich könnte ja genauso gut mit einer Schleife übr alle Items laufen und deren Inhalt in mein RichEdit kopieren
Ich hatte halt gehöfft, man könne den ListView quasi "on the fly" als Tabelle in das RichEdit kopieren...
Elektronische Bauelemente funktionieren mit Rauch. Kommt der Rauch raus, geht das Bauteil nicht mehr.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: ListView in Richedit kopieren

  Alt 12. Jul 2005, 14:47
Zitat von FriFra:
Ich könnte ja genauso gut mit einer Schleife übr alle Items laufen und deren Inhalt in mein RichEdit kopieren
Genau darauf läuft es hinaus. Nur eben, dass du den Umweg über den reservierten Speicher im Fremden Prozess gehen musst. Mit den LuckieDIPS hast du ja schin die halbe Miete, nämlich die Captions. Statt sie in eine Ini-Datei zu schreiben, wie ich es mache schreibst du sie in dein RichEdit.
Zitat:
Ich hatte halt gehöfft, man könne den ListView quasi "on the fly" als Tabelle in das RichEdit kopieren...
Diese Funktionalität bringt der SystemListview eben nicht mit. Da musst du eben, wie oben beschrieben, selbst Hand anlegen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  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 23:02 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