Создание COM объекта из запущенного приложения
Здравствуйте Уважаемые!
есть установленная(на сервер) лицензионная программа 1с83 ключ на 5 лицензий подключение и запуск программы на других компах происходит по ссылке.
есть необходимость по работе с этой 1с через COM
но как COM объект данная 1С зарегистрирована только на сервере
Теперь собственно вопрос:
возможно ли на языке c++ или C# получить доступ к запущенному приложению как COM объекту.
на C# нашел кусочек кода но он не работает
public static uint GetProcessID() {
return (uint)Process.GetProcessesByName("1C Предприятие (8.3.16.1063)")[0].Id;
}
[DllImport("kernel32.dll")]
public static extern IntPtr OpenProcess(UInt32 dwDesiredAccess, Int32 bInheritHandle, UInt32 dwProcessId);
private static Type GetTypeFromHandle2(IntPtr handle) {
unsafe {
var method = typeof(Type).GetMethod("GetTypeFromHandleUnsafe",
BindingFlags.Static | BindingFlags.NonPublic);
//вылетает здесь
return (Type)method.Invoke(null, new object[]{handle});
}
}
public void MyFunc(){
//указатель получаем без проблем
IntPtr process_handle = OpenProcess(0x001F0FFF, 0, GetProcessID());
var v83comConnector = Type.GetTypeFromHandle2(process_handle);
}
''' пытался на c++ реализовать. загвоздка в CLSID можно ли его выковырять из запущенного приложения.
Возможно на c++ можно сделать обертку в виде COM объекта и в эту обертку затащить запущенную программу.
Помогите пожалуйста разобраться в данном вопросе.