Es funktioniert jetzt bei mir. Allerding verwende ich einen kleine Trik.
Ich habe in Delphi eine Dll gemacht die zwei Parameter (GUID und RemoteComputerName) übernimmt. In dieser Funktion rufe ich die Delphi Funktion CreateComObject auf. Diese hat ebenfalls diese zwei Parameter. Intern verwendet diese Funktion die API Funktion CoCreateInstaceEx. Als Rückgabe dieser Funktione habe ich eine IUnknown Schnittstelle.
Ich habe dies Funktion dann über DLLImport in dot net eingebunden. Nun funktioniert alles so wie es funktionieren soll.
Habe den Sourcecode jetzt leider nicht auf diesem Rechner auf dem ich jetzt bin.
Werde in dann später posten.
mfg.
Hansen
Hallo.
Falls es jemanden interessiert, ich habe jetzt eine Lösung für das Problem. Diese Lösung ist vieleicht nicht die beste, aber sie funktioniert.
Ich Verwende jetzt einfach die API Funktion CoCreateInstanceEx. (DLLImport)
Hat jemand eine Ahnung wie ich die ProgID hier ermitteln kann?
Danke,
mfg.
Hansen
Danke. Werde ich gleich einmal ausprobieren.
Wie bekomme ich allerdings die ProgID?
mfg.
Hansen
Hallo.
Ich habe eine Anwendung (Server) der auf einem Remote- PC läuft. Der Server darf nur einmal gestartet werden. Wenn der Server nicht läuft und ich starte meinen Client, dann wird der Server auf dem Remote PC gestartet und es läuft alles wie es soll.
Wenn ich nun meinen Client beende wird die Verbindung am Server getrennt, der Server bleibt gestartet. Soweit ist alles ok.
Wenn ich nun aber meine Client erneut starte, dann wird versucht auf dem Remote PC einen zweite instanz des Servers zu starten, da dies nicht erlaubt ist wird dieser prozess auf dem Server beendet und ich bekomme eine Fehlermeldung.
Nun meine Frage. Wie kann ich mich mit einem laufenden Prozess verbinden?
Ich habe schon mit Activator.GetObject probiert. Dies hat aber nich funktioniert. 😦
Mein Code:
C#-Code:
Type dcomType = Type.GetTypeFromCLSID(guid, ComputerName, false);
Object dcomObj = null;
dcomObj = Activator.CreateInstance(dcomType);
Habe schon herausgefunden, dass wenn der server auf singelton eingestellt ist, es funktionieren sollte. Nur kann ich am Server leider nichts ändern 😦
Mit Delphi funktioniert es auch so. Möchte es aber in .net machen
Gibt es sonst noch eine möglichkeit wie man dies mit c# machen kann?
Bin für jede hilfe dankbar.
Danke,
Hansen
Hallo,
Versuchs mit:
System.IO.Directory.Exists(
oder
System.IO.DirectoryInfo
mfg.
Hansen
Hallo.
Ich habe eine Anwendung (Server) der auf einem Remote- PC läuft. Der Server darf nur einmal gestartet werden. Wenn der Server nicht läuft und ich starte meinen Client, dann wird der Server auf dem Remote PC gestartet und es läuft alles wie es soll.
Wenn ich nun meinen Client beende wird die Verbindung am Server getrennt, der Server bleibt gestartet. Soweit ist alles ok.
Wenn ich nun aber meine Client erneut starte, dann wird versucht auf dem Remote PC einen zweite instanz des Servers zu starten, da dies nicht erlaubt ist wird dieser prozess auf dem Server beendet und ich bekomme eine Fehlermeldung.
Nun meine Frage. Wie kann ich mich mit einem laufenden Prozess verbinden?
Ich habe schon mit Activator.GetObject probiert. Dies hat aber nich funktioniert. 😦
Mein Code:
Type dcomType = Type.GetTypeFromCLSID(guid, ComputerName, false);
Object dcomObj = null;
dcomObj = Activator.CreateInstance(dcomType);
Habe schon herausgefunden, dass wenn der server auf singelton eingestellt ist, es funktionieren sollte. Nur kann ich am Server leider nichts ändern 😦
Mit Delphi funktioniert es auch so. Möchte es aber in .net machen
Bin für jede hilfe dankbar.
Danke,
Hansen