Marschall.GetActiveObject() throws MK_E_UNAVAILABLE Ausnahme in C#
Den folgenden vbscript-code funktioniert prefectly fein:
Dim App
Set App = GetObject("","QuickTest.Application")
App.Quit
Aber wenn ich es übersetzen in C# - code, wie unten:
class Program
{
[STAThread]
static void Main(string[] args)
{
object qtApp = Marshal.GetActiveObject("QuickTest.Application");
(qtApp as QuickTest.Application).Quit();
}
}
Bekomme ich die exception:
Eine nicht behandelte Ausnahme des Typs 'System.- Laufzeit.InteropServices.COMException' ist in mscorlib.dll
Zusätzliche Informationen: (Ausnahme von HRESULT: 0x800401E3 (MK_E_UNAVAILABLE))
Ich glaube nicht, dass das problem mit ROT, weil der vbscript-code funktioniert. Also, was ist falsch mit der C# - code?
InformationsquelleAutor der Frage TomCaps | 2011-10-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Marschall.GetActiveObject verwenden progID , überprüfen Sie Ihre Programm-id, z.B. könnte man diesen code verwenden für die Anzeige von Objekten in ROT
InformationsquelleAutor der Antwort MishaU
Fand ich, dass die Ausführung der debugger/IDE mit erhöhten rechten (z.B. Admin-Modus) können dieses problem verursachen, wenn der Prozess, den Sie versuchen zu erkennen, läuft ohne erhöhte Rechte.
InformationsquelleAutor der Antwort F Snyman
Kann man das Problem auch dadurch ausgelöst werden, dass nicht mit erhöhten Privilegien. Dies scheint über die Jahre verändert haben, so versuchen Sie, alle Permutationen von denen entweder das IDE-oder das Ziel-Programm mit oder ohne erhöhte Rechte.
Ab August 2017, um die laufende Instanz von Outlook 365 unter Visual Studio 2015-debugger, ich musste Folgendes tun, um zu vermeiden, die MK_E_UNAVAILABLE Fehler:
Mein Programm läuft im debugger war dann in der Lage, die ausgeführte Instanz von Outlook erfolgreich.
InformationsquelleAutor der Antwort Reg Edit