AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Speichern von Pointerinhalten in eine Datei
Thema durchsuchen
Ansicht
Themen-Optionen

Speichern von Pointerinhalten in eine Datei

Ein Thema von Gebhard · begonnen am 8. Okt 2009 · letzter Beitrag vom 4. Nov 2009
Antwort Antwort
Gebhard

Registriert seit: 28. Nov 2005
42 Beiträge
 
Delphi 7 Personal
 
#1

Speichern von Pointerinhalten in eine Datei

  Alt 8. Okt 2009, 14:49
Hallo,

ich habe ein Problem und bitte Euch um Hilfe. Vielleicht ist die Lösung einfach und ich habe mich beim lesen unterschiedlicher Foren und Quellcodes nur "verrannt".

Ich möchte gerne Informationen, die (vermutlich) im Arbeitsspeicher abgelegt wurden, in eine Datei speichern. Auf den Pointer kann ich mit dem Befehl "p:=Addr(x);" zugreifen. In diesem Fall handelt es sich um ein Email, welches ich unter Umgehung der Outlook - Sicherheitsabfrage speichern möchte. Leider fehlt es mit am Wissen mit dem Ungang mit Pointern.

Nach meiner Einschätzung muß ich den Pointerinhalt in einen TMemoryStream schreiben und dann mit einem "SaveAsFile" - Befehl speichern, aber wie komme ich an den Inhalt und an deren Größe?

Anbei ein Beispielcode. Weil es ausschließlich um den Umgang mit Pointern geht, habe ich den Inhalt von Mapi nach Outlook umgeändert und sehr viele Bestandteile (z.B. Freigabe des Speichers) weggelassen.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
  var
    oOutlook:variant;
    oOrdner:variant;
    oMail:variant;
    p:Pointer;
  begin
    oOutlook:=CreateOleObject('Outlook.Application');
    oOrdner:=oOutlook.GetNamespace('MAPI').GetDefaultFolder(6);
    oMail:=oOrdner.Items[1];
    p:=Addr(oMail);

{
    ......
}


    end;
Vielen Dank für eure Hilfe.

Gebhard
Olli
  Mit Zitat antworten Zitat
Chris.R

Registriert seit: 8. Sep 2009
Ort: Nürnberg
68 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Speichern von Pointerinhalten in eine Datei

  Alt 8. Okt 2009, 15:57
Hallo,

sehr abenteuerlicher Ansatz Du hast ja nur einen Zeiger auf das Interface der E-Mail, nicht auf die Daten.
Bei deinem Ansatz kommt im besten Fall Müll in der Datei an, oder es gibt einfach nur eine Zugriffsverletzung.

Um die Sicherheitsabfrage zu Umgehen kannst du direkt über MAPI arbeiten. Hierfür gibts eine sehr gute Lösung,
die die Interfaces des Outlook Com-Objekts nachbildet: Outlook Redemption (kostet allerdings Geld).

Ich hab auch mal irgendwo ein Add-In für Outlook gesehen, das die Security Warnungen unterdrückt, weiß aber grad nicht mehr wo.

Ciao Chris
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

Re: Speichern von Pointerinhalten in eine Datei

  Alt 8. Okt 2009, 17:45
Wenn du einen normalen Pointer (in das RAM, das deinem Prozess gehört) hast, dann kannst du die Daten dahinter so abgreifen:
Delphi-Quellcode:
var
  p:Pointer;
  s : string;
begin
  p := ....
  SetString(s, PChar(p), 1024 {Anzahl Bytes});
  // jetzt sind die Daten im String s
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: Speichern von Pointerinhalten in eine Datei

  Alt 8. Okt 2009, 17:50
aber nicht die EMail sondern Daten die er nicht haben will
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Gebhard

Registriert seit: 28. Nov 2005
42 Beiträge
 
Delphi 7 Personal
 
#5

Re: Speichern von Pointerinhalten in eine Datei

  Alt 9. Okt 2009, 08:12
Hallo Chris.R, shmia, Sir Thomberry,

vielen Dank für eure Hilfe.

Schade, das es nicht klappt. Ich habe es mir wohl etwas zu einfach vorgestellt.

Schöne Wochenende

Gebhard
Olli
  Mit Zitat antworten Zitat
17. Okt 2009, 13:25
Dieses Thema wurde von "fkerber" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Sonstige Fragen zu Delphi" verschoben.
Das ist eher eine Frage als ein Vorschlag für die Codelib.
helgew

Registriert seit: 30. Jul 2008
125 Beiträge
 
#7

Re: Speichern von Pointerinhalten in eine Datei

  Alt 18. Okt 2009, 19:10
Hi,

es geht vielleicht etwas an deinem Problem vorbei, aber wenn du im Speicher fremder Prozesse herumlesen willst, geht das wie folgt:

Delphi-Quellcode:
EnableTokenPrivilege(SE_DEBUG_NAME);
hProcess := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,...);
MapViewOfFile(...);
ReadProcessMemory(...);
Das sollen nur ein paar Hinweise zur Recherche sein, die ich aus einem Codestück abfiltriert habe, im Grunde geht es darum, die Rechte einzuholen, einen Prozess zu öffnen und im richtigen Adressraum davon zu lesen. Ich frage mich dabei nur, wie du nun die emails finden willst Vielleicht ist die von den Vorrednern vorgeschlagene Vorgehensweise doch die bessere ...
  Mit Zitat antworten Zitat
Gebhard

Registriert seit: 28. Nov 2005
42 Beiträge
 
Delphi 7 Personal
 
#8

Re: Speichern von Pointerinhalten in eine Datei

  Alt 4. Nov 2009, 20:52
Hallo helgew,

vielen Dank für Deine Hilfe. Leider hilft mir Deine Idee nicht in diesem speziellen Fall, aber vielleicht kann ich (oder ein anderer Leser) Deinen Script in der Zukunft einmal nutzen.

Tschüss

Gebhard
Olli
  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 03:04 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