Возврат фокуса DOS-программе в полном экране

Программирование на Visual Basic for Applications
jSergey
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 01.09.2005 (Чт) 6:34

Возврат фокуса DOS-программе в полном экране

Сообщение jSergey » 01.04.2013 (Пн) 13:26

Ситуация такая. Из DOS-программы, запущенной в полноэкранном режиме, написанной на FoxPro 2.5 (for DOS), открывается xls-файл, вызывая Microsoft Excel 2007. При этом фокус DOS-приложения теряется, передаётся Excel, что мне не надо. Мне надо, чтобы при открытии xls-файла, запускалась процедура Auto_Open(), код на VBA отрабатывал, делалось, что положено и Excel закрывался, причём всё это (запуск Excel, работа кода VBA, закрытие Excel) должно делаться полностью автоматически. Всё это сделать не проблема. Проблема в том, что как потом программно фокус передать назад DOS-программе, причём так, чтобы эта программа оказалась в полноэкранном режиме (другими словами, как сделать так, чтобы всё вернулось к тому, как было до запуска Excel), причём только программно (без участия пользователя)? Либо, если такое возможно, чтобы при открытии xls-файла и запуске Excel фокус ему не передавался, а оставался у DOS-программы. Программа на FoxPro в неоткомпилированном виде, т.е. в неё возможно вносить любые изменения. Но думаю, что это не понадобится, т.к. из DOS-программы никак нельзя управлять Windows. Если только VBA-код при закрытии Excel сможет помочь. Операционная система - Windows XP SP3.

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: Возврат фокуса DOS-программе в полном экране

Сообщение FireFenix » 01.04.2013 (Пн) 14:59

Что за наркоманство из DOS открывать Windows приложения?

Как вообще вы работаете с дос и каким образом открывается Excel?
Если всё это делает сторонняя программа, то пусть она и передаёт фокус или вообще запускает Excel без окна
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 01.04.2013 (Пн) 16:42

Для вызова аналога system промежуточная программа не нужна. А вот запустить промежуточную windows-программу, чтобы она открыла Excel без окна - может сработать...

jSergey
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 01.09.2005 (Чт) 6:34

Re: Возврат фокуса DOS-программе в полном экране

Сообщение jSergey » 01.04.2013 (Пн) 18:40

FireFenix писал(а):Что за наркоманство из DOS открывать Windows приложения?
На работе у нас (торговля, подсобные производства) до сих пор используется DOS-программа для ведения складов. Конечно, лучше перейти на что-нибудь более современное, например 1С. Но стоить это будет более 50000$. Так что от меня (оператор ЭВМ) здесь ничего не зависит и приходится работать с тем, что есть. Я хочу сделать, чтобы автоматически формировались и печатались качественные удостоверения (КУ) на производимую продукцию (кондитерским цехом). Эти удостоверения в настоящее время у нас вообще пишут вручную на бланках. Конечно, можно было бы сделать, чтобы всё это формировалось и печаталось из DOS-программы, но во-первых из Excel красивее, а во вторых я уже сделал ранее шаблон Excel для формирования КУ. Этот шаблон никак не связан с DOS-программой, т.е. некоторые данные в него приходилось набирать вручную. Лаборанты, которые помоложе, им пользовались, им нравилось, а сейчас лаборантом работает женщина предпенсионного возраста, ей лучше писать от руки на распечатанных бланках, хоть это бывает и тяжело, когда КУ надо выписать много и быстро. И решил я увязать шаблон КУ с программой, чтбы всё делалось полностью автоматически. Схема работы такая: FoxPro-программа (она же DOS-программа) формирует базу данных с информацией для КУ, командой из этой же программы открывается файл шаблона КУ, в котором срабатывает процедура Auto_Open(), открывается созданная база данных (Excel поддерживает базы FoxPro), с использованием этой информации VBA формирует КУ и выводит его на печать, далее шаблон и база с Excel-ем закрываются, всё это делается автоматом, и как возвратиться в DOS-программу? Конечно, ничего страшного не случится, если и не получится, нажать Alt-Tab и (или) Alt-Enter не тяжело, но хотелось бы чтобы всё было эффектно (да и самому интересно). Задача-то по сути своей очень простая, но в Windows средства для её решения не на поверхности или они, возможно, даже отсутствуют.
FireFenix писал(а):Как вообще вы работаете с дос и каким образом открывается Excel?
Если всё это делает сторонняя программа, то пусть она и передаёт фокус или вообще запускает Excel без окна
Программа запускается ярлыком на рабочем столе Windows XP (сам я могу запускать из панели FAR, когда занимаюсь доработкой или отладкой программы), Dos-Box или виртуальные машины не используются.
Из FoxPro xls-файл открывается командой:
Код: Выделить всё
!c:\windows\system32\cmd.exe /c start ku.xls

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 01.04.2013 (Пн) 19:40

Код: Выделить всё
cmd /c start /min excel ku.xls

jSergey
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 01.09.2005 (Чт) 6:34

Re: Возврат фокуса DOS-программе в полном экране

Сообщение jSergey » 01.04.2013 (Пн) 21:40

Да, Qwertiy, СПАСИБО БОЛЬШОЕ! При таком запуске Excel фокус, судя по всему, не забирает. Завтра на работе попробую более подробно.

jSergey
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 01.09.2005 (Чт) 6:34

Re: Возврат фокуса DOS-программе в полном экране

Сообщение jSergey » 02.04.2013 (Вт) 14:58

Попробовал более подробно - всё нормально. Главное, чтобы Excel не выдавал диалоговые окна, требующие вмешательства (внимания) пользователя, типа там, что макросы заблокированы и т.п. На работе, правда, Office 2003, но это не имеет значения. Ещё раз спасибо.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 02.04.2013 (Вт) 20:43

Не за что. А окна про макросы отключить можно, вроде.

jSergey
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 01.09.2005 (Чт) 6:34

Re: Возврат фокуса DOS-программе в полном экране

Сообщение jSergey » 03.04.2013 (Ср) 13:28

Можно, выбрав соответствующий уровень безопасности, и (или) подписав макросы.


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 60

    TopList