AGB  ·  Datenschutz  ·  Impressum  







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

Mehrfaches einbinden von DLL verhindern.

Ein Thema von Viktorii · begonnen am 13. Aug 2008 · letzter Beitrag vom 18. Aug 2008
Antwort Antwort
Seite 2 von 2     12   
Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#11

Re: Mehrfaches einbinden von DLL verhindern.

  Alt 18. Aug 2008, 16:23
Zitat von OldGrumpy:
Dazu böte es sich an, einfach das USB-Device (ich vermute mal es wird eh per CreateFile geöffnet?) einfach exklusiv zu öffnen und fertig.
Leider nicht. Die Geräte werden über eine weitere DLL angesprochen ...


Zitat von brechi:
warum denn nicht:

Delphi-Quellcode:
  mHandle := CreateMutex(nil, True, 'bineinetolleDLL');

  if GetLastError = ERROR_ALREADY_EXISTS then
  begin
    CreateMessageDialog('Application already running!', mtWarning, [mbOk]).ShowModal;
    Halt;
  end;
Der Referenzzähler einer DLL ist lokal für jedes Programm.

Gibt so viele Möglicheiten, warum denn nen Mutex nehmen?
Das funktioniert in sofern, dass das doppelte Öffnen Erkannt wird und die Medlung angezeigt wird. Allerdings wird die Anwendung nicht geschlossen, sondern läuft parallel zu der ersten weiter. Wie kann ich es in der DLL bewerkstelligen, dass die Anwendung beendet wird?
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#12

Re: Mehrfaches einbinden von DLL verhindern.

  Alt 18. Aug 2008, 16:55
Zitat von Viktorii:
Zitat von brechi:
Delphi-Quellcode:
  mHandle := CreateMutex(nil, True, 'bineinetolleDLL');

  if GetLastError = ERROR_ALREADY_EXISTS then
  begin
    CreateMessageDialog('Application already running!', mtWarning, [mbOk]).ShowModal;
    Halt;
  end;
Das funktioniert in sofern, dass das doppelte Öffnen Erkannt wird und die Medlung angezeigt wird. Allerdings wird die Anwendung nicht geschlossen, sondern läuft parallel zu der ersten weiter.
Ich glaube dieser Code soll in die Applikation, nicht in die DLL. Sprich: Tritt kein ERROR_ALREADY_EXISTS auf, so darf die Applikation die DLL laden. Beim freigeben der DLL muss sie natürlich auch wieder den Mutex freigeben. Tritt der Fehler jedoch auf, so verfährst du wie es im Code oben steht, bzw. wie du es auch bei deiner "MultipleAppicationNotifyer"-Unit tust.

(Seh ich doch richtig, oder?) ...
Chris
Die Erfahrung ist ein strenger Schulmeister: Sie prüft uns, bevor sie uns lehrt.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 17:29 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