Arbeitsspreicher auslesen

Ahoi, ich habe ma ne Frage mich würde es mal interessieren ob und wenn ja wie man mit c++ den Arbeitsspeicher auslesen kann. Ich progge unter Win 2000 mit Visual C++ 6.0 prof.
Danke im Vorraus.

Hallo Fragewurm,

Ahoi, ich habe ma ne Frage mich würde es mal interessieren ob
und wenn ja wie man mit c++ den Arbeitsspeicher auslesen kann.
Ich progge unter Win 2000 mit Visual C++ 6.0 prof.

Mit C geht das schon, aber nicht mit dem Betriebsystem :wink:

Dein Programm bekommt den Arbeitsspeicher virtuell zugeteilt, das besteht absolut kein zusammenhang mit dem physikalischen Speicher.

MfG Peter(TOO)

Prinzipiell hast Du ja Recht, aber es ist immer die Frage, was man genau machen will.
Es gibt nämlich sehr wohl die Möglichkeit, dass mehr als ein Programm auf den selben Speicher zugreift (Stichwörter: Shared Memory, Memory Mapped Files, GlobalAlloc(),…).

Für eine vollständige und richtige Beantwortung müsste man m.M. nach mehr wissen.

Weil streng nach der Fragestellung liest man in jedem Programm den Hauptspeicher aus - oder nicht?

Also, Fragewurm, erleuchte uns bitte, was Du genau willst :wink:

Martin

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Ahoi,
also ich möchte ein Programm schreiben, dass nachguckt welche Dateien gerade im Arbeitsspeicher sind und diese auf dem Bildschirm auflistet.

Ahoi,
also ich möchte ein Programm schreiben, dass nachguckt welche
Dateien gerade im Arbeitsspeicher sind und diese auf dem
Bildschirm auflistet.

Wie, alle Dateien, die irgendeine Anwendung eingelesen hat? Programm-Module, die zu laufenden Anwendungen gehören?
Sorry, wenn Du nicht genau angibst, was Du willst (weisst Du denn genau, was Du willst? Hört sich nämlich bisher ziemlich nebulös an), dann wird man Dir hier auch kaum helfen können…

Martin

Ahoi, also sorry wenn ich mich nicht deutlich ausgedrückt habe. Also ich möchte ein Programm erstellen welches die Dateien ausgibt die gerade in Ram sind. Sollte also ungefähr so aussehen:

Gerade sind folgende Dateien geöffnet:
Microsoft Word :
Igendwas.doc
Nochwas.doc
Microsoft Exel:
Wasanderes.exl
usw.

Hoffe es ist jetzt etwas deutlicher.

Ok, wenn es sich um die momentan geöffneten Office-Dokumente handelt, dann kannst Du Dir diese von den gerade laufenden Office-Applikationen geben lassen. Die arbeiten alle als COM-Server und darüber kannst Du z.B. bei Word die gerade von der Word Application verwalteten Documents geben lassen. Etwas ähnliches geht mit Excel auch. Lies’ Dir dazu vielleicht am besten bei MS die Office API Beschreibung durch.

Wenn Du aber eine Liste ohne Zutun der jeweiligen Anwendung haben willst, dann kannst Du es so ziemlich vergessen, da Du (a) nicht allgemein auf den Speicher anderer Anwendungen zugreifen kannst und es (b) keine allgemeingültige Regel gibt, nach der man geladene Dokumente einer Anwendung finden könnte.

Das einzige was vielleicht noch möglich wäre, wäre die Suche nach offenen Dateihandles, aber nur die wenigsten Anwendungen werden nach dem Einlesen einer Datei den Handle nicht wieder schließen, so dass das auch nichts bringen dürfte.

Oder die Suche nach Fenstertiteln. Aber dann musst Du einen Weg haben, wie Du aus dem Fenstertitel auf das Dokument schließen kannst.
Geht auch nicht generisch.

Also: Nur anwendungsspezifisch möglich und i.d.R. auch nur dann, wenn die Anwendung entsprechende Funktionen zur Verfügung stellt.

Martin

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Alles klar danke schön.