Unterschied in der Behandlung von SendMessage und PostMessage? (+ Frage zu FindWindow)
-
Hallo!
Da der Versuch mit den Threads gescheitert ist, mache ich nun den Loggingkram in einer anderen Anwendung, der ich per SendMessage(WM_COPYDATA, ...) den Kram schicke.
Funktioniert soweit wunderbar, ist auch schneller als der Threadkram.
Aber wirklich schnell ist das trotzdem noch nicht, weil nämlich die schickende Anwendung auf die andere wartet.
Also wollte ich PostMessage nehmen - darauf reagiert der Empfänger aber nicht.Was muss ich denn ändern? Oder gibt es noch eine andere Möglichkeit?
Und, ich habe beim Stöbern im Forum gefunden, dass man FindWindow nicht nutzen soll, weil das Probleme macht.
Aber in dem Post habe ich keine für mich nutzbare Alternative gefunden: http://www.c-plusplus.net/forum/viewtopic.php?t=48762&highlight=sendmessage+postmessage
Oder ist der Zeiger auf den Empfänger immer gleich während die Anwendung läuft?
Müßte ich den also nur einmal raussuchen?Danke!
-
Du kommst ja echt auf merkwürdige Ideen.
Das müsste doch jetzt noch ein kleines bisschen langsamer sein als wenn du es in der eigentlichen Anwendung machst?!?WM_COPYDATA Message
An application sends the WM_COPYDATA message to pass data to another application.
-
Diese Antwort hat mir irgendwie gar nicht geholfen.
sender schrieb:
Du kommst ja echt auf merkwürdige Ideen.
Hast du eine bessere? Ich bin ganz Ohr!
sender schrieb:
Das müsste doch jetzt noch ein kleines bisschen langsamer sein als wenn du es in der eigentlichen Anwendung machst?!?
Ist es auch, aber ich wollte es eh optional machen, dass gelogged wird.
Also, folgendes ist die Idee:
Anwendung A ist die eigentliche Anwendung.
Anwendung B ist die Anwendung, die protokolliert, was Anwendung A macht.A funktioniert immer gleich und immer gleich schnell (jedenfalls subjektiv).
B muss zusätzlich gestartet werden und gibt dann die "TRACES" von A aus. Das erleichtert die Fehlersuche, denn unsere Anwender können eigentlich alles, nur keine Fehlerbeschreibungen liefern.
Außerdem haben sie immer "nichts gemacht".So, daher kommt die Idee.
sender schrieb:
WM_COPYDATA Message
An application sends the WM_COPYDATA message to pass data to another application.
Was soll ich daraus lernen? Gelesen hatte ich das schon in der MSDN.