Имя: Пароль:
1C
1С v8
Активация окна в режиме OLE Automation
0 U_KA
 
14.02.18
08:22
Добрый день!
Решаемая задача:
    Есть консолидация, переведена на упр формы, заведены пользователи. Есть РИБы этих пользователей (около 50), в которых пользователи должны запускать обмены. РИБы на обычных формах. Необходимо закрыть доступ в РИБы, за исключением возможности запускать обмен.
    Вносить изменения в РИБы нет возможности (существующих ролей недостаточно полностью закрыть доступ), соответственно было решено открыть формы обменов напрямую из консолидации, при помощи технологии OLE Automation.
    При этом свойство Visible установлено в значение Ложь, чтобы не было возможности открыть другие формы.
Все срабатывает корректно, за исключением активации открываемого окна. Активация окна не срабатывает, приходится использоваться alt+tab, что неудобно.
Что было проверенно:
    1) Используется метод ОткрытьФормуМодально, т.к. ОткрытьФорму не показывает форму
    2) Создание обработки, в которой создана форма обмена, обработка подключается как внешняя. Создается и открывается в РИБе, при этом:
        а) Добавление на форму обработки html документа и его активация
        б) Использование активации окна методом "Активировать" при открытии формы обработки
        в) Использование активации окна с помощью Shell при открытии формы обработки
            Shell = Новый COMОбъект("WScript.Shell");
            Shell.AppActivate(ПолучитьЗаголовокСистемы());
В результате все равно окно не выходит на первый план. Кто встречался с таким, подскажите, как все-таки активировать данное окно?
1 Сияющий в темноте
 
14.02.18
08:56
в современных Windows,чьобы активировать окно другого процесса или потока,нужно подключиться к его потоку ввода,тогда команда активации отработает
2 U_KA
 
14.02.18
09:48
(1) есть примеры подключения к потоку ввода?
3 Йохохо
 
14.02.18
09:50
(2) попробуй на аутоит сделать, в принципе работает без инсталяции, в папку экзешник и скрипт