Zwischen Processen Kommunizieren
-
Ich fasse zuammen:
Du willst (aus obskuren Gründen) Programme mit nativem C++ schreiben und dabei die WinAPI benutzen.Hier findest Du den Einstieg in die WinAPI Doku:
http://msdn.microsoft.com/en-us/library/aa139672.aspxUnd hier ein Bsp. einer Seite, welche die Funktion WSASocket(..) dokumentiert:
http://msdn.microsoft.com/en-us/library/ms742212(VS.85).aspxSimon
-
LiGERWooD schrieb:
C/C++
C und C++ sind zwei eigenständige Dinge. Nur weil ein Teil von C eine Teilmenge von C++ ist, muss man nicht immer C/C++ sagen.
Der Grund, Visual C# sei langsam, ist auch kein wirklicher.
-
mad_martin schrieb:
LiGERWooD schrieb:
C/C++
C und C++ sind zwei eigenständige Dinge. Nur weil ein Teil von C eine Teilmenge von C++ ist, muss man nicht immer C/C++ sagen.
Der Grund, Visual C# sei langsam, ist auch kein wirklicher.
Schön. Aber was ergibt das für einen sinn wegen solchen Problemen die Sprache zu wechseln? Jetzt kann ich C. Und dann noch mal C# zu lernen um dan wieder ins Visual ab zu tauchen nur um die gleichen Probleme noch mal zu bekommen - nein Danke! Es ist ja dann nämlich immer noch .Net und da ist ja die Quelle meines Problems. Und ich glaube das ich auch deshalb mit solchen fehlern nicht klar komme weil, weil ich an sich nicht die ganze Funktion kenne die hinter den Klassen der Ipc steckt, geschweige denn .Net
-
LiGERWooD schrieb:
Schön. Aber was ergibt das für einen sinn wegen solchen Problemen die Sprache zu wechseln? Jetzt kann ich C. ...
Für den Einsatz der WinApi reicht C völlig aus. Obwohl man natürlich schnell auch die Vorteile von C++ nutzen möchte. Sage mal konkret, was in welchem Umfang Du kommunizieren möchtest. Für einfache Dinge (integer oder kleine Byte-Folgen) ist SendMessage ausreichend und sehr effektiv. Für mehr FileSharing oder Sockets. Aber das wurde Dir schon gesagt.
Wer programmiert, sollte auch wissen wo er die Dokus findet. Bei mir liefert die der Compiler (Borland).
-
berniebutt schrieb:
LiGERWooD schrieb:
Schön. Aber was ergibt das für einen sinn wegen solchen Problemen die Sprache zu wechseln? Jetzt kann ich C. ...
Für den Einsatz der WinApi reicht C völlig aus. Obwohl man natürlich schnell auch die Vorteile von C++ nutzen möchte. Sage mal konkret, was in welchem Umfang Du kommunizieren möchtest. Für einfache Dinge (integer oder kleine Byte-Folgen) ist SendMessage ausreichend und sehr effektiv. Für mehr FileSharing oder Sockets. Aber das wurde Dir schon gesagt.
Wer programmiert, sollte auch wissen wo er die Dokus findet. Bei mir liefert die der Compiler (Borland).Danke. Ich wil wirklich nur einen char array der eine größe von bis zu 256 Zeichen(1. Byte) (char[255]) einem anderen Process übergeben.
Das mit der Doku, ich hatte ja den Visual Studio und das ja msdn und da ist dass für cli und die objekte kommen auserdem aus .Net
Gut also SendMessage ist in WinAPI enthalten?
-
Das mit der Doku, ich hatte ja den Visual Studio und das ja msdn und da ist dass für cli und die objekte kommen auserdem aus .Net
Ja, weil die .NET Doku auch gleich dabei ist. Ist aber nicht so schlimm, oder?
Gut also SendMessage ist in WinAPI enthalten?
Google doch einfach nach "MSDN SendMessage" (ohne Anführungszeichen), dann wirst Du sehr schnell eine Antwort auf diese Frage bekommen.
Ausserdem möchte ich mal anmerken, dass deine Sätze sehr schwer zu lesen sind und Du dir ruhig ein wenig mehr Mühe geben könntest.
Simon
-
Also gut!
- Für einmalig 256 Bytes eignet sich SendMessage gut
- SendMessage ist eine WinApi-Funktion
- Die Syntax ist: SendMessage(HWND,MSG,WPARAM,LPARAM) mit
HWND = Fenster des Zielprozesses
MSG = benutzerdefinierte Nachricht
WPARAM = Unterscheidung, was gesendet ist
LPARAM = Jedes einzelne Character-Byte
Versuche in Deinem Fall möglichst diesen Weg. Die Character-Bytes kommen zielgenau an und brauchen dann nur noch mit. z.B. SetDlgItemText als zuvor zusammengestellter String eingesetzt zu werden. Alle anderen Wege verlangen meist eine Synchronisation der Schreib- und Lesezugriffe. Wenn Du willst, kannst Du alternativ eine simple Datei anlegen. Der eine Prozess schreibt die Datei, der andere liest sie.
Mache es einfach, auch mit wenig Erfahrung kriegt man das sauber hin! Du hast ja gesagt "C kann ich schon".
-
Einfach WM_COPYDATA verwenden. Dann benötigt man nicht mehrere Nachrichten.
-
Sorry,
kann das sein, dass wir uns missverstanden haben? Weil zum Zielfenster? Ich meine halt, dass ich wirklich von einem gestarteten Process (.exe) etwas an einen andereren gestarteten Process (.exe) schicken möchte. Also nicht von einem Fenster zum anderen Fenster, was aus dem selben Process gestartet wurde.
-
LiGERWooD schrieb:
Sorry,
kann das sein, dass wir uns missverstanden haben? Weil zum Zielfenster? Ich meine halt, dass ich wirklich von einem gestarteten Process (.exe) etwas an einen andereren gestarteten Process (.exe) schicken möchte. Also nicht von einem Fenster zum anderen Fenster, was aus dem selben Process gestartet wurde.
Ey, lies doch endlich einfach die Doku. WM_COPYDATA funktioniert über Prozessgrenzen hinweg!
Simon
-
theta schrieb:
LiGERWooD schrieb:
Sorry,
kann das sein, dass wir uns missverstanden haben? Weil zum Zielfenster? Ich meine halt, dass ich wirklich von einem gestarteten Process (.exe) etwas an einen andereren gestarteten Process (.exe) schicken möchte. Also nicht von einem Fenster zum anderen Fenster, was aus dem selben Process gestartet wurde.
Ey, lies doch endlich einfach die Doku. WM_COPYDATA funktioniert über Prozessgrenzen hinweg!
SimonEr kann vielleicht nicht lesen? Soll ja mal vorkommen!
-
berniebutt schrieb:
theta schrieb:
LiGERWooD schrieb:
Sorry,
kann das sein, dass wir uns missverstanden haben? Weil zum Zielfenster? Ich meine halt, dass ich wirklich von einem gestarteten Process (.exe) etwas an einen andereren gestarteten Process (.exe) schicken möchte. Also nicht von einem Fenster zum anderen Fenster, was aus dem selben Process gestartet wurde.
Ey, lies doch endlich einfach die Doku. WM_COPYDATA funktioniert über Prozessgrenzen hinweg!
SimonEr kann vielleicht nicht lesen? Soll ja mal vorkommen!
Ich habe kein interesse dadran mit dir aus zu gehen!
-
Ob Du mit mir ausgehen möchte, ist mir egal.
Du hattest eine Frage gestellt. Die wurde hinreichend und ausreichend von allen hier beantwortet! Windows ist es egal, ob ein im System verfügbares Fenster im selben Prozess liegt oder in einem anderen.
daddeldu - ich habe fertig
hattu doku, mutte lesen!
-
berniebutt schrieb:
Ob Du mit mir ausgehen möchte, ist mir egal.
Du hattest eine Frage gestellt. Die wurde hinreichend und ausreichend von allen hier beantwortet! Windows ist es egal, ob ein im System verfügbares Fenster im selben Prozess liegt oder in einem anderen.
daddeldu - ich habe fertig
hattu doku, mutte lesen!Was hinteressiert mich das?! Dann rollen Köpfe, notfalls mit Messer und Kabel, dann wird Merkel einfach nur noch ausgeflogen und verpisst sich.