Использование (вызов) WinAPI-функций в 1С8.2
Господа программисты!
Помогите решить следующую задачу:
Мне нужно запустить 1С8.2 базу и зафиксировать ID этого процесса
Стал эту задачу решать так:
WinAPI = ПолучитьCOMОбъектИзМакета("DynamicWrapperX", "DynamicWrapperX"); // подключение DynamicWrapperX (это всё работает)
Если WinAPI <> Неопределено Тогда
WinApi.Register("Kernel32.DLL", "CreateProcess", "i=sspplppspp", "f=l", "r=l");
I0=WinAPI.Space(256);
I1=WinAPI.Space(256);
I2=WinAPI.Space(256);
I3=WinAPI.Space(256);
I4=WinAPI.Space(256);
I5=WinAPI.Space(256);
I6=WinAPI.Space(256);
StartupInfo=WinAPI.Space(256*4+128);
Info=WinAPI.Space(256); // необходимо 4 DWord
pStr=WinAPI.StrPtr(Info); // Запоминаю указатель (в будущем потребуется)
WinApi.Register("Kernel32.DLL", "CreateProcess", "i=ssppllpspp", "f=s", "r=l"); // регистрация прошла успешно
I=WinAPI.CreateProcess("",СтрокаЗапуска,I1,I2,0,0,I5,Директория,StartupInfo,Info); // Вот это НЕ РАБОТАЕТ
КонецЕсли;
Если блок заработает, то из Info получу ID потока.
Но блок не работает!
Где-то ошибаюсь с параметрами функции CreateProcess типа указатель, неправильно вызываю ...
Может у кого-нибудь был опыт использования функций WinApi или решение проще ...
Помогите решить следующую задачу:
Мне нужно запустить 1С8.2 базу и зафиксировать ID этого процесса
Стал эту задачу решать так:
WinAPI = ПолучитьCOMОбъектИзМакета("DynamicWrapperX", "DynamicWrapperX"); // подключение DynamicWrapperX (это всё работает)
Если WinAPI <> Неопределено Тогда
WinApi.Register("Kernel32.DLL", "CreateProcess", "i=sspplppspp", "f=l", "r=l");
I0=WinAPI.Space(256);
I1=WinAPI.Space(256);
I2=WinAPI.Space(256);
I3=WinAPI.Space(256);
I4=WinAPI.Space(256);
I5=WinAPI.Space(256);
I6=WinAPI.Space(256);
StartupInfo=WinAPI.Space(256*4+128);
Info=WinAPI.Space(256); // необходимо 4 DWord
pStr=WinAPI.StrPtr(Info); // Запоминаю указатель (в будущем потребуется)
WinApi.Register("Kernel32.DLL", "CreateProcess", "i=ssppllpspp", "f=s", "r=l"); // регистрация прошла успешно
I=WinAPI.CreateProcess("",СтрокаЗапуска,I1,I2,0,0,I5,Директория,StartupInfo,Info); // Вот это НЕ РАБОТАЕТ
КонецЕсли;
Если блок заработает, то из Info получу ID потока.
Но блок не работает!
Где-то ошибаюсь с параметрами функции CreateProcess типа указатель, неправильно вызываю ...
Может у кого-нибудь был опыт использования функций WinApi или решение проще ...
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Решения пока у меня нет и никто не дал :)
В отчаянии закрыл тему, но проблема не решена!
Думаю, надо пойти другим путем:
Получить список всех запущенных процессов 1С и вытащить PID и командную строку процесса при помощи WinApi
На языке 1С: получу ТЗ с двумя колонками "PID","CMD".
Мне нужно это соответствие в своей задаче.
Таким образом, получу что-то вроде монитора работающих 1С
Как только пройду этот порог, отпишусь, если интересно.
Проблема - с указателями ...
В отчаянии закрыл тему, но проблема не решена!
Думаю, надо пойти другим путем:
Получить список всех запущенных процессов 1С и вытащить PID и командную строку процесса при помощи WinApi
На языке 1С: получу ТЗ с двумя колонками "PID","CMD".
Мне нужно это соответствие в своей задаче.
Таким образом, получу что-то вроде монитора работающих 1С
Как только пройду этот порог, отпишусь, если интересно.
Проблема - с указателями ...
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот