Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.116.90.141] |
|
Сообщ.
#1
,
|
|
|
Здравствуйте Уважаемые!
есть установленная(на сервер) лицензионная программа 1с83 ключ на 5 лицензий подключение и запуск программы на других компах происходит по ссылке. есть необходимость по работе с этой 1с через COM но как COM объект данная 1С зарегистрирована только на сервере Теперь собственно вопрос: возможно ли на языке c++ или C# получить доступ к запущенному приложению как COM объекту. на шарпе нашел кусочек кода но он не работает 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 объекта и в эту обертку затащить запущенную программу. |