2013-11-15 13 views
5

Ich habe eine C# -App, ich möchte einen Funktionsnamen zum Beispiel SendChatMessage (String-Nachricht, Int UserID) aus meiner App aufrufen. Aber diese Funktion gehört zu einem anderen laufenden Client/Server basiert Anwendung auf meinem Computer. Ich konnte den Weg nicht finden, wie ich das machen kann.Remote-Aufruf einer anderen Prozessmethode aus C# -Anwendung

Ich versuche, dies mit Reflection-Bibliothek zu machen, aber gescheitert. Hoffe jemand hilft mir dabei.

Danke für Hilfe.

+3

Steuern Sie den Quellcode in dem anderen Programm, oder möchten Sie die Befehle in den Prozess injizieren? Dann müssen Sie möglicherweise DLL-Injektion verwenden, um "Kontrolle" über die andere Anwendung zu nehmen. – NoLifeKing

+0

Besitzen Sie die andere App? Ist die andere App so konzipiert, dass andere Prozesse Methoden aufrufen können? – Rob

+1

mögliches Duplikat von [Verwendung von C# zum Aufruf einer Funktion von einem anderen Prozess] (http://stackoverflow.com/questions/15767482/using-c-sharp-to-call-a-function-from-another-process) –

Antwort

12

Willkommen in der Welt von Inter-process communication. Es gibt viele Methoden, um dies zu tun, wie Named Pipes, RPC, Shared Memory usw.

Kurz gesagt, läuft Ihr Programm in einem Prozess. Das andere Programm läuft in einem anderen Prozess. Es ist, als ob dein Vater versucht, etwas von dem Jungen von nebenan zu verlangen. Diese Prozesse können miteinander kommunizieren und gegenseitig Methoden aufrufen oder die Daten der jeweils anderen verwenden. Aber nicht willkürlich oder natürlich. Sie brauchen einen gemeinsamen Standard für die Kommunikation.

Werfen Sie einen Blick auf diese Fragen:

What is the simplest method of inter-process communication between 2 C# processes?

What is the best choice for .NET inter-process communication?

What is the easiest way to do inter process communication in C#?

+1

Vielen Dank für die Antwort, aber diese Antwort ist korrekt, wenn ich die Kontrolle über den anderen Programmcode habe. Aber ich habe keine Kontrolle über den Quellcode eines anderen Programms. –

0

Wenn Sie keine Kontrolle über den Code innerhalb des Zielprozesses, dann klingt es wie Sie brauchen, um Verwenden Sie ein Mittel der DLL-Injektion, um Ihren Code hinein zu injizieren.

Wenn der aufrufende Prozess keine Bestätigung oder Antwort benötigt; dann kann das Eingeben von Code, der Methodeninvokationscode ausführt, auftauchen, aber wenn eine Antwort erforderlich ist, ist es wahrscheinlich, dass Sie irgendeine Art von Interprozesskommunikation innerhalb des injizierten Codes implementieren müssen.

Verwandte Themen