Форум программистов, компьютерный форум, киберфорум
Наши страницы
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
BVladimir2
16 / 16 / 0
Регистрация: 26.02.2013
Сообщений: 357
1

8.3 Упр.прил.: - Окно теряет фокус после запуска Excel ?

17.07.2013, 01:59. Просмотров 1796. Ответов 6
Метки нет (Все метки)

Третий день вожусь с тем чтобы при открытии Excel фокус с упр.формы переходил на него - решил, через WSH и WMI. А шутка юмора в том, что когда запущенный Excel открывает свой первый файл, то фокус с формы уходит и на него переносится - можно вводить что-то на листе, НО, при этом на экране все еще остается моя форма. Нажать кнопку на форме, выполняющую функцию переключения окон - на экране Эксел и все ОК. Т.е. первоначально фокус с формы ушел, но она по прежнему на экране и даже "ВводДоступен" выдает истину, хотя если нажать, к примеру, Tab, то фокус перемещается не по форме а по невидимому листу Эксел. При этом, функция переключения (AppActivate из WSH) выполнилась (по PID Excel) и вернула успех, и если ее же использовать для переключения на клиент 1С, то она не
выполняется, ведь, вроде как, клиент и так на экране ! Если же открыть второй файл и далее то все нормально работает.
Есть варианты/идеи, как вернуть фокус на форму, чтобы потом корректно отработала функция переключения ?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.07.2013, 01:59
Ответы с готовыми решениями:

8.3 Упр.прил - Конвертация из 7.7
Конфигурация на 7.7 имеет свою структуру на 8.3 пишется сейчас и имеет свою. Вопрос как можно...

8.3 Упр.прил.: ДеревоЗначений и .НайтиСтроки
Ситуация такая, нужно вывести на экран дерево с отбором строк. Делаю это путем полного...

8.3 Упр.прил.: Дерево из Запроса ?
Есть справочник с группами и элементами - нужно получить дерево с видом: Группа Элемент...

8.3 Упр.Прил.: COMSafeArray и массив из COM объектов ?
Есть СОМ объект, некое его свойство само по себе массив из других СОМ объектов. Вопрос, можно ли...

8.3 Упр.прил. - Оптимизация работы с переменными ?
Все на клиенте: Одна процедура заполняет массив неизвестного размера, другая должна его...

6
BVladimir2
16 / 16 / 0
Регистрация: 26.02.2013
Сообщений: 357
18.07.2013, 02:09  [ТС] 2
Вообщем, вопрос решился- после появления Эксела, в потерявшей фокус форме открывается еще одно окно, маленькая пауза, окно закрывается и фокус уже на первоначальной форме. Дальше- с помощью скриптового SendKeys сворачиваю окно моей конфигурации и на экране остается Эксел ! Хотя почему то прямое переключение через AppActivate все равно не срабатывает...
0
Dethmontt
Модератор
Эксперт 1С
2653 / 2443 / 418
Регистрация: 10.03.2011
Сообщений: 8,746
Записей в блоге: 1
Завершенные тесты: 1
18.07.2013, 15:26 3
Оно срабатывает, только управление передается обратно 1С
0
BVladimir2
16 / 16 / 0
Регистрация: 26.02.2013
Сообщений: 357
18.07.2013, 15:31  [ТС] 4
Цитата Сообщение от Dethmontt Посмотреть сообщение
Оно срабатывает, только управление передается обратно 1С
Хитро ! А если добавить обработчика при бездействии системы и из него переключать окно сработает ?
0
Dethmontt
Модератор
Эксперт 1С
2653 / 2443 / 418
Регистрация: 10.03.2011
Сообщений: 8,746
Записей в блоге: 1
Завершенные тесты: 1
18.07.2013, 15:57 5
неа. Нет такого обработчика который бы сработал без действия системы =(

Добавлено через 1 минуту
Хотя попробуй через ПодключитьобработчикОжидания() но думаю не прокатит
0
BVladimir2
16 / 16 / 0
Регистрация: 26.02.2013
Сообщений: 357
18.07.2013, 17:43  [ТС] 6
Цитата Сообщение от Dethmontt Посмотреть сообщение
Хотя попробуй через ПодключитьобработчикОжидания() но думаю не прокатит
Про него и думал. Но если эксел уже открыт то переключение срабатывает нормально, не работает только когда в первый раз окно Эксел запускается. Если в платформе блокируется переход на др. окна, то значит, что эта блокировка
не все время действует? Буду игратся...

Добавлено через 1 час 28 минут
Вообщем, если кому интересно, заработало так:

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
&НаКлиенте
Процедура ФоновыйПереключатель()    
    тмп = Общий.АктивироватьОкно(ПроцессИД);    
    //ЭтаФорма.ОтключитьОбработчикОжидания("ФоновыйПереключатель");
    ЭтаФорма.ПодключитьОбработчикОжидания("ФоновыйПереключатель2", 0.1, Истина);
КонецПроцедуры
 
&НаКлиенте
Процедура ФоновыйПереключатель2()   
    ЭтаФорма.Окно.Активизировать(); 
    тмп = Общий.АктивироватьОкно(ПроцессИД);    
    //ЭтаФорма.ОтключитьОбработчикОжидания("ФоновыйПереключатель2");    
КонецПроцедуры
Первый ФоновыйПереключатель подключается также- для онократного срабатывания через 0.1 секунду бездействия системы. Кстати говоря, а нужно ли отключать эти обработчики, если они по одному разу сработали ?

Добавлено через 1 минуту
АктивироватьОкно(ПроцессИД) - это AppActivate из WSH...

Добавлено через 6 секунд
АктивироватьОкно(ПроцессИД) - это AppActivate из WSH...
0
Dethmontt
Модератор
Эксперт 1С
2653 / 2443 / 418
Регистрация: 10.03.2011
Сообщений: 8,746
Записей в блоге: 1
Завершенные тесты: 1
18.07.2013, 17:55 7
отключать не нужно.
1
18.07.2013, 17:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.07.2013, 17:55

ОбработкаЗаполнения. СтандартнаяОбработка (упр. прил: ДанныеЗаполнения)
Иерархическому справочнику Номенклатура добавили реквизит Услуга (Булево). Этому реквизиту задали...

8.3 Упр.Прил.: Сохранить реквизит формы типа СписокЗначений ?
Тут такая вещь возникла - у формы реквизит с типом СписокЗначений (не у объекта) стоят галочки...

8.3 Упр.прил - обработчик Автоподбор, можно ли менять ожидание ?
Сейчас по умолчанию обработчик "АвтоПодбор" срабатывает через 0,2 секунды после ввода символа - его...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru