Ich habe eine Anwendung, die eine COM-Bibliothek verwenden, nur fragen, wie kann ich wissen, ob diese Anwendung diese COM-Bibliothek als LocalServer oder In-Proc verwenden?
Ich habe mir den Code angesehen, der auf diese Weise erstellt wurde:
%Vor%Es hängt teilweise davon ab, welchen Ausführungskontext Sie beim Erstellen Ihres Objekts angeben. Weitere Informationen finden Sie hier: Ссылка
Sie können die Klassen-ID für Ihre Komponente in der Registrierung nachsehen und prüfen, ob sie einen LocalServer-Unterschlüssel enthält. Also in Ihrem Fall würden Sie suchen:
%Vor%Wenn es sich um eine In-Proc COM-Komponente handelt, wird stattdessen der folgende Schlüssel verwendet:
%Vor%Lesen Sie diese Dokumentation für weitere Details: Ссылка
Es kann auf verschiedene Arten herausgefunden werden
Wenn Sie sich den Code ansehen, prüfen Sie, welcher Klassenkontext beim Aufruf von " CreateInstance " oder " CoCreateInstance " (CLSCTX_INPROC_XXXX) übergeben wird DLL, die in den Prozessbereich der aufrufenden Anwendungen geladen wird CLSCTX_LOCAL_SERVER, CLSCTX_REMOTE_SERVER - dann wird der COM-Server als separater Prozess ausgeführt Es gibt einige #defines, die ein oder mehrere Flags kombinieren. Einfach googlen)
ITEmulationPtr.CreateInstance(uuid(TEmulation), 0, CLSCTX_XXX)
Wenn Sie Zugriff auf den Computer haben, auf dem die COM-Komponente installiert ist, können Sie die Schritte ausführen, die Peter in obiger Antwort