Alle:GetActiveObject() vs. GetObject() - MK_E_UNAVAILABLE Fehler
ich einige Probleme habe einige VBA-Code in C# zu übersetzen.
Wir haben eine Drittanbieter-App, die als lokaler COM-Server fungiert.
Im VBA-Code verwenden wir GetObject() einen Verweis auf das bestehende Objekt zu erhalten
z.B.
Set appHandle = GetObject("", ProgId)
das funktioniert gut.
Ich habe einen Verweis auf die 3rd Party App in unserem C# -Code hinzugefügt und Marshal.GetActiveObject() verwendet, um zu versuchen, einen Verweis auf eine laufende Instanz zu erhalten.
z.B.
var appModel = (IAppCoModel)Marshal.GetActiveObject(ProgId);
aber ich halte einen MK_E_UNAVAILABLE Fehler.
ein neues Objekt anlegen funktioniert gut in der C# -Code
z.B.
var appModel = new AppCoModel()
dies startet den 3rd-Party-App und ermöglicht es mir, mit ihm zu kommunizieren. Es ist nur ein Verweis auf eine laufende Instanz, die fehlschlägt.
Was ich
Verschiedene Sicherheitskontexte
VS läuft im Admin-Modus versucht haben, ist die 3rd-Party-App nicht. Ich habe versucht, unsere C# -App über die Befehlszeile (nicht-Admin) auszuführen. Immer noch versagt.
Überprüfen Sie die Inhalte ROT
(vorgeschlagen von Marshal.GetActiveObject() throws MK_E_UNAVAILABLE exception in C#)
Die 3rd-Party-App erscheint nicht drin. Ich weiß nicht genug COM, um sicher zu sein, dass es nötig ist.
Überprüft alle Registry-Einträge
Gut aussehen (soweit ich sehen kann) und sie sind gut genug, um zu erstellen und Instanz der 3rd-Party-App und für die VBA es zu finden. Alles was ich hier überprüfen sollte?
Alle Vorschläge, die Menschen machen können, würden geschätzt werden.
http://social.msdn.microsoft.com/Forums/en-US/vsx/thread/ccccc9bd-f21a-4f74-a3f0-64a594fa1b16 –