AGB  ·  Datenschutz  ·  Impressum  







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

DLL: Gemeinsamer Speicher?

Ein Thema von blablab · begonnen am 4. Mär 2010 · letzter Beitrag vom 4. Mär 2010
Antwort Antwort
blablab

Registriert seit: 3. Jan 2006
509 Beiträge
 
Delphi 7 Enterprise
 
#1

DLL: Gemeinsamer Speicher?

  Alt 4. Mär 2010, 13:32
Hallo!

Ich hab ein Keyboard-Hook-Programm, das auf bestimmte Tasteneingaben reagiert. Mein Problem ist, dass dieser Hook bestimmte Einstellungen benötigt, die er aus einer INI lädt. Am Anfang hatte ich damit große Probleme und inzwischen hab ich das so verstanden: Immer wenn die dll benötigt wird, wird der Programmcode der dll in die Anwendung kopiert, die gerade im Vordergrund ist und die Tasteneingaben mitkriegt. Die globalen Variablen der dll gelten also nur in der jeweiligen Kopie der dll und ich muss somit pro Kopie der dll die INI neu laden.

Das würde ich gerne verhindern und eine Art "Gemeinsamer Speicher" verwenden auf den dann jede Kopie der dll zugreifen kann. Könnt ihr mir da bitte weiterhelfen? Wie kann ich zB ein Integer "dll-übergreifend" speichern?

Und noch eine andere Frage: Ist es vielleicht auch möglich, dass die dll gar nicht erst kopiert wird und somit nur eine Kopie der dll im Speicher ist, auf die dann alle Anwendungen direkt zugreifen?

Vielen Dank schonmal!
Grüße
blablab
  Mit Zitat antworten Zitat
Hobby-Programmierer

Registriert seit: 19. Jan 2006
Ort: München
392 Beiträge
 
Delphi XE Starter
 
#2

Re: DLL: Gemeinsamer Speicher?

  Alt 4. Mär 2010, 14:03
Zitat von blablab:
Hallo!
Das würde ich gerne verhindern und eine Art "Gemeinsamer Speicher" verwenden auf den dann jede Kopie der dll zugreifen kann. Könnt ihr mir da bitte weiterhelfen? Wie kann ich zB ein Integer "dll-übergreifend" speichern?
blablab
Ich vermute du musst das Handle übertragen? @Astat hatte in den letzten Tagen mal den Lösungsansatz zu den KeyHooks erklärt! Suche mal den Thread oder einfach nach MemoryMappedFile ...

LG Mario
Mario
'Lesen Sie schnell, denn nichts ist beständiger als der Wandel im Internet!'
  Mit Zitat antworten Zitat
blablab

Registriert seit: 3. Jan 2006
509 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: DLL: Gemeinsamer Speicher?

  Alt 4. Mär 2010, 14:32
Also ich hab mir das mit dem MemoryMappedFile mal angeschaut und werds gleich mal ausprobiern. Allerdings hätte ich vorher noch eine Frage. Unz zwar ist mir noch aufgefallen, dass ich eine Boolean-Variable habe, die ich im Prinzip bei jedem Tastendruck (Taste reindrücken, Taste gedrückt lassen und Taste loslassen) überprüfen muss. Das bedeutet die Variable müsste ich ziemlich schnell zwischen den verschiedenen DLLs hin- und herschieben. Ist dazu ein MemoryMappedFile geeignet oder wäre das zB zu langsam?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.167 Beiträge
 
Delphi 12 Athens
 
#4

Re: DLL: Gemeinsamer Speicher?

  Alt 4. Mär 2010, 14:44
MMFs mappen einen Speicherbereich aus einer Datei (besser gesagt aus der WindowsFileCache) oder dem RAM in den virtuellen Adressraum der Anwendung.

Es gibt also sozusagen nur einen physischen Speicher, welcher bei allen Anwendungen mit einer virtuellen Speicheradressse verknüpft ist.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
blablab

Registriert seit: 3. Jan 2006
509 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: DLL: Gemeinsamer Speicher?

  Alt 4. Mär 2010, 14:48
...das heißt es ist sehr schnell, weils im Prinzip ein ganz normaler Speicherzugriff ist. Hab ich das richtig verstanden???

[Edit]
@himitsu: Falls du dich auf "hin- und herschieben" beziehst, das meinte ich nicht wörtlich. Es ist ja eher speichern und laden. Ich wollte damit nur ausdrücken, dass ich oft auf die Variable zugreifen muss, sowohl lesend als auch schreibend, und da frag ich mich ob dazu MMF geeignet ist...

[Edit]
Habs inzwischen zum laufen gebracht mit MMF. Das ist ja wirklich nur ein ganz normaler Speicherzugriff. Genial! Danke für eure Hilfe!
  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 11:07 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