Frage

I ein Ereignis in einem Prozess erstellt und zu testen, geschickt, um das Ereignis-Handle über ein Rohr zu einem völlig separaten Prozess (kein Kind Gewinde)

Als ich das Ereignis im ersten Feuer, nicht WaitForSingleObject das Ereignis nicht erkennen, so dass ich die Antwort erraten bin nicht, es sei denn ich etwas Trick in der SECURITY_ATTRIBUTES Struktur?

Oder vielleicht brauche ich ein benanntes Ereignis zu verwenden, und rufen Sie Openevent ()?

In diesem Fall kann ich nicht Fenster-Nachrichten verwenden, weil ich einen Windows-Dienst, um zu signalisieren versuchen. Ich konnte das Rohr verwenden, aber es wird viele dieser Anwendungen sein, und ich möchte eine „low cost“ Lösung, wenn möglich, finden.

Andere Optionen wie Memory Mapped-Dateien haben noch mehr Aufwand als das Rohr?

Wie würden Sie das tun?

War es hilfreich?

Lösung

Sie müssen ein benanntes Ereignis erstellen und es in beiden Prozessen zu öffnen. Wenn Sie mehrere Prozesse Hören haben, können Sie erwägen eine Semaphore .

Andere Tipps

Ja, das funktioniert:

  #COMPILE EXE "NamedEvent.exe"

  #INCLUDE "win32api.inc" 

  %EVENT_ALL_ACCESS = &h0001F0003

  FUNCTION PBMAIN() AS LONG  

    LOCAL lRet AS LONG, lError AS LONG, lEventName AS ASCIIZ * %MAX_PATH
    lEventName = "TestEvent"
    lRet   = CreateEvent (BYVAL %NULL, %False, %False, lEventName)
    lError = GetLastError ()
    IF ISFALSE lRet THEN
      MSGBOX "Unable to create Event, error:" + STR$(lError),,"CreateEvent error"
    ELSE
      IF lError = %ERROR_ALREADY_EXISTS THEN
        lRet = OpenEvent(BYVAL %EVENT_ALL_ACCESS, %False, lEventName)
        lError = GetLastError()
        IF lRet THEN
          MSGBOX "Opened existing Event, handle:" + STR$(lRet),,"OpenEvent:"
        ELSE
          MSGBOX "Unable to open Event, error:" + STR$(lError),,"OpenEvent error" : EXIT FUNCTION
        END IF
      ELSE
        MSGBOX "Created new Event, handle:" + STR$(lRet),,"CreateEvent:"
      END IF
    END IF    

  END FUNCTION

In der Regel, was hat eine geringere Overhead:

Rohre (unter der Annahme, geringe Größe angegeben)

MemMapFiles

Veranstaltungen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top