Ich versuche, eine Verbindung zu mehreren Instanzen einer geöffneten Anwendung (WRQ Reflection) zu erstellen. Anschluss an die erste Instanz, die geöffnet wurde, ist in Ordnung mit diesem:Verbinden mit mehreren laufenden Instanzen einer Anwendung
Session appInstance = (Marshal.GetActiveObject("Reflection4.Session.8") as Session);
Aber ich möchte in der Lage sein, mehrere Instanzen zu verbinden. Ich habe viel Forschung betrieben und einige hilfreiche Links wie this gefunden, aber diese Lösung wird in dieser Situation nicht funktionieren, da alle offenen Instanzen das gleiche ProgID haben.
Ich habe auch versucht, die Fenstergriffe zu betrachten, die offensichtlich für jede Instanz unterschiedlich sind. Verwenden Sie dies:
Process[] processes = Process.GetProcessesByName("r4win");
foreach (Process p in processes)
{
IntPtr windowHandle = p.MainWindowHandle;
string handle = windowHandle.ToString();
MessageBox.Show(handle);
}
Aber ich konnte nicht herausfinden, wie Sie eine Verbindung zu dem Fenster über den Fenstergriff erstellen.
Jede Hilfe wird geschätzt.
Zusatzcode:
void TestROT()
{
// Look for open instances
string[] progIds = {"Reflection4.Session.8"};
List<object> instances = GetRunningInstances(progIds);
foreach (object refleObjs in instances)
{
Session session = refleObjs as Session;
session.Transmit("12345");
}
}
Für dieses Szenario Ich habe 2 Instanzen der Zielanwendung läuft. Im obigen Code wird die Zeichenfolge 12345 zweimal an dieselbe Instanz der Anwendung gesendet.
Ich brauche es 12345 an die erste Instanz und dann 12345 an die zweite Instanz zu senden.
Was meinst du connect? Um was zu tun? Der Code, den Sie gepostet haben, bezieht sich auf COM-Automatisierung, nicht auf irgendeine Art von Verbindung. Es geht um zB. Word mit Interop fahren. Was versuchst du zu machen?Connection impliziert Dinge wie Sockets, Dienste, WCF usw., keine Automatisierung –
PS selbst in COM, CreateObject wird ein neues Objekt erstellen oder ein vorhandenes verwenden, während GetActiveObject ein neues erstellen wird. In .NET obwohl Leute COM Interop anstelle der rohen COM-Methoden verwenden –
Entschuldigungen, nicht sicher von der richtigen Terminologie. Mit connect meine ich die Fähigkeit, Text und Befehle an die Anwendung zu senden und Informationen vom Bildschirm zu lesen. –