Announcement

Collapse
No announcement yet.

DLL Variablen mit mehreren Programmen lesen.

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • DLL Variablen mit mehreren Programmen lesen.

    Hallo,
    hab da ein Problem. Ich benutze eine Exe und eine DLL. Die DLL ist fest in der Exe eingebunden. Ich setze einige Variablen in der DLL für weitere auswertung. Nun möchte ich die gleichen werte die in den DLL Variablen sind nun mit einer weiteren Exe abfragen. Das funktioniert aber nicht so wirklich. Immer wenn ich die Variablen abfrage haben sie den alten wert und nicht den der durch die andere Exe verändert wurde. Ich glaube es wird eine neue instanze der DLL erstellt mit eigenen Variablen, wie kann ich das verhindern??

  • #2
    Gar nicht!<p>
    Andreas Kosch hat in seinem Buch <b>Win32 Lösungen</b> ein Beispiel für <b>Globale Daten einer DLL für mehrere Prozesse</b>. Da es aus seinem Buch ist kann ich Dir den Code leider auch nicht schicken. Nur soviel: Es ist nicht einfach.<p>
    Sollte es um keine große Sache gehen, würde ich vielleicht darüber nachdenken, die Werte über die Registry oder eine Datei zu verteilen.<p>
    Schöne Grüße, Mario Noac
    Schöne Grüße, Mario

    Comment


    • #3
      Genaugenommen bekommt jeder Prozess seine eigene Kopie der DLL. Das wird erreicht indem das Datensegment (mit den globalen Variablen) neu angelegt wird.<br>
      Man kann ein shared segment einrichten. Das geht am einfachten indem man die DLL mit MS VC++ schreibt. Fuer Delphi gibt es ein Tool von Petr Vones als Download in der Borland Community

      Comment


      • #4
        Das Tool von Petr Vones hab ich mir mal angeschaut. Muß es mal probieren obs damit klappt. Habe mir auch überlegt einfach funktionen der Exe als Exports zu deklarieren und diese dann mit dem anderen Programm auszulesen. Hintergrund der ganzen Globalen Variablen geschichte ist es das ich mein Programm welches 24 Stunden läuft per VB Script oder per andere Exe zu verwalten. Da ich eine DLL dafür benutzen wollte muß das Hauptprogramm über die änderungen von Variablen informiert werden. Da ich größere Strukturen benutze sind Dateien,Registry nicht so gut finde ich. Wie kann man das sonst lösen das Programmvariablen durch andere Programme geändert werden können. Ich benutze COM Objekte für die DLL da dies ein einfacher weg ist auch VB Scripte anzunehmen

        Comment


        • #5
          Definier doch einfach Messages und versende diese bei entsprechendem Event. Du kannst sogar Messages unter Win32 registrieren (RegisterWindowMessage), dann funktioniert das sogar unter EXE

          Comment

          Working...
          X