Announcement

Collapse
No announcement yet.

Nachrichten...

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

  • Nachrichten...

    Hallo Cracks,

    auf einem Win2k Server funktioniert auf einmal der API-Call
    SendMessage nicht mehr. Bei ausführung des Befehls bleibt das
    Programm stehen. Nach dem Neustart alles wieder OK. woran kann das liegen ???

    Würde mich über Infos freuen...
    Sascha

  • #2
    Welches SendMessage wird denn wohin gesendet
    Günther

    Comment


    • #3
      Es laufen zwei programme die sich mit Sendmessage also der Windows InterProzessKommunikation unterhalten. Bekommt das eine Programm neue Daten so wid eine Nachricht an dan andere Programm geschickt.

      MFG
      Sasch

      Comment


      • #4
        Übrigends meine ich mit "Neustart" den Server und nicht das Programm

        Comment


        • #5
          Anwendung A hat also etwas neues entdeckt und will Anwendung B darüber informieren. Braucht Anwendung A denn nun eine Rückmeldung von Anwendung B, ob diese die Information erhalten, verarbeitet oder akzeptiert hat ? Wenn NEIN, würde ich auf jeden Fall PostMessage statt SendMessage verwenden. Wenn JA, würde ich es trotzdem mal mit PostMessage versuchen, Anwendung B sollte dann ebenfalls via PostMessage seine Antwort zurückschicken. In diesem Zusammenhang ist es vermutlich interessant feststellen zu können ob die andere Anwendung noch reagiert. Siehe dazu die Diskussion "Anwendung reagiert nicht mehr" im Ordner "Windows - Win32API - Delphi". PostMessage ist vom Typ BOOL, der Rückgabewert besagt nur, ob die Funktion erfolgreich war. PostMessage wird auf dem "Windows - Message - Stack" (?) abgelegt und hoffentlich irgendwann abgearbeitet. SendMessage hat den Rückgabewert LRESULT ( ist auch nicht viel mehr als ein int) wird sofort abgearbeitet und wartet solange bis das Zielfenster darauf geantwortet hat. Ob dies auch Anwendungsübergreifend funktioniert weiß ich nicht. Gruß - Günthe
          Günther

          Comment


          • #6
            Habe ein wenig nachgelesen festgestellt, das es Deadlocs gibt. Anwendung A mach SendMessage zu Anwendung B. das heist Anwendung A legt sich Schlafen bis Anwendung B diese nachricht abgearbeitet hat.
            Wir in der Verarbeitung des Machricht in Anwendung B auch wiederum eine Nachricht an Anwendung A gesendet so kann es zu Deadlock führen. resultat ist das Beide Anwendungen Schlafen. Pech gehabt ! Es gibt aber die möglichkeit SendmessageTimeout zu benutzen um eine Zeitspanne mitzugeben. Somit bin ich aus dem Schneider.

            Danke für Infos und Aufwand
            Sasch

            Comment

            Working...
            X