:: Visual Foxpro, Foxpro for DOS
Как из Фокса узнать, что спрятанный (Visible=.F.) Иксел задает вопрос?
Ydin
Автор

Сообщений: 7648
Откуда: Киев
Дата регистрации: 16.12.2005
Для скорости прячу Иксел, макет доступен Юзеру. Он там что-то меняет и идет ошибка или сообщение, фиг его знает.
Может, вообще, "сбой активации продукта".
У меня проблема в том, чтобы определить этот момент:
- Состояние Иксел - он ждет
- Иксел выдал сообщение (тоже ждет, но с подтекстом).
- или как ему вслепую передать какой-нибудь {Enter}



Исправлено 1 раз(а). Последнее : Ydin, 22.09.17 15:59
Ratings: 0 negative/0 positive
Re: Как из Фокса узнать, что спрятанный (Visible=.F.) Иксел задает вопрос?
Ydin
Автор

Сообщений: 7648
Откуда: Киев
Дата регистрации: 16.12.2005
IMHO, это сложный вопрос.
Со стороны Иксел - их Basic. В него можно рисовать то, что делаешь. По сравнению с Опеном - хорошо.
Но мне не напишут мое нажатие Enter, да любое нажатие. Чудес не бывает.
По Опену там было с кем общаться напрямую с вопросами (не помню имени, но полезный и хороший человек).
Тут, вроде, нет.

Может, что-то подсунуть Икселу по Try\catch, чтобы он как-то гавкнул...
Пока не придумал как. Но где-то даже проще гавкнул или нет?
Он же висит с вопросом о "переключении". Вот тут его и поймать до своих действий.
Типа по try\catch спросить как дела. Если catch - показать его, сделать видимым
Если б тут не писал до такого бы не дошел.
Подожду корячеться с этим, еше не все прочитали. Может простое уже кто-то проходил



Исправлено 3 раз(а). Последнее : Ydin, 22.09.17 16:12
Ratings: 0 negative/0 positive
Re: Как из Фокса узнать, что спрятанный (Visible=.F.) Иксел задает вопрос?
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Часть "ненужных вопросов" убирает настройка DisplayAlerts (просто НЕ показывает диалоги).
Хорошее подспорье для "долгоиграющих" отчётов даёт настройка IgnoreRemoteRequests - она приводит к тому, что данный (невидимый) экземпляр экселя не будет использоваться системой когда юзер решит открыть какой-нить xls файл. Т.к. вклинивание юзера с его "наиважнейшим докУментом" в работающий под управлением фокса эксель, даже если код и не оперирует Selection-ами (которые, совершенно очевидно, будут сбиты при таком вмешательстве, т.к. это "интерактивное выделение ячеек" и есть), ни к чему хорошему не приводит.
Для полноты изложения стоит упомянуть про ScreenUpdating - это не "диалоги", но может немного ускорить процесс формирования книжки.
Главное не забыть и вернуть все эти установки в исходное положение после завершения генерации отчёта.

К сожалению влезть в УЖЕ запрашивающий чего-то через диалоги эксель (тем более если его окно скрыто) крайне сложно и небезопасно. Поэтому проблемы "активации и обновления офиса", или "первого запуска" - когда он там инициалы юзера запрашивает никак не побороть. Не, пытаться искать окна и давить там кнопку OK можно - вот только это не решение проблемы, а усугубление её
Лучше по максимуму обезопасить себя от ПОЯВЛЕНИЯ этих ненужных окон.
Ну или, как вариант, отказаться от формирования отчётов путём "автоматизации экселя", а использовать какой-то генератор или компоненту напрямую формирующие xls (или, что проще, xlsx) файлы... Хотя это, конечно, крайне проблематично и для "сложных" документов, и для подхвата гибких "шаблонов"... Всей "мощи" экселя эти инструменты, естественно, не заменяют.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Как из Фокса узнать, что спрятанный (Visible=.F.) Иксел задает вопрос?
Ydin
Автор

Сообщений: 7648
Откуда: Киев
Дата регистрации: 16.12.2005
Igor Korolyov
Часть "ненужных вопросов" убирает настройка DisplayAlerts (просто НЕ показывает диалоги).
Это первое дело. Оно стоит сразу.
Igor Korolyov
Хорошее подспорье для "долгоиграющих" отчётов даёт настройка IgnoreRemoteRequests - она приводит к тому, что данный (невидимый) экземпляр экселя не будет использоваться системой когда юзер решит открыть какой-нить xls файл. Т.к. вклинивание юзера с его "наиважнейшим докУментом" в работающий под управлением фокса эксель, даже если код и не оперирует Selection-ами (которые, совершенно очевидно, будут сбиты при таком вмешательстве, т.к. это "интерактивное выделение ячеек" и есть), ни к чему хорошему не приводит.
Не въехал и я не знаю что это за настройка IgnoreRemoteRequests. Вам приходилось "вживую" ею пользоваться.
Цитата:
упомянуть про ScreenUpdating
Не знаю, что это.
Цитата:
отказаться от формирования отчётов путём "автоматизации экселя", а использовать какой-то генератор или компоненту напрямую формирующие xls (или, что проще, xlsx) файлы...
Легче застрелится


Исправлено 2 раз(а). Последнее : Ydin, 22.09.17 16:37
Ratings: 0 negative/0 positive
Re: Как из Фокса узнать, что спрятанный (Visible=.F.) Иксел задает вопрос?
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Ydin
Igor Korolyov
Хорошее подспорье для "долгоиграющих" отчётов даёт настройка IgnoreRemoteRequests
Не въехал и я не знаю что это за настройка IgnoreRemoteRequests. Вам приходилось "вживую" ею пользоваться.
Конечно - без неё печаль беда Началось формирование отчёта, юзер заскучал, ткнул по какому xls в проводнике, и он бодро открылся в том же экселе где сейчас генерится отчёт. Даже если не сломает моменитально процесс, то "светомузыка" и более чем приличное замедление генерации обеспечено.
Это галка в настройках экселя "игнорирвоать DDE запросы от других приложений". Если вдруг всё слетит, и перестанут из проводника xls запускаться - то её глянуть в первую очередь
Ydin
Цитата:
упомянуть про ScreenUpdating
Не знаю, что это.
Да то же что и фоксовый LockScreen по сути.
Ydin
Легче застрелится
Да, понимаю Ещё ладно для новой системы, когда можно выбрать репортер... А если всё уже давно написано, то переход на "гранаты другой системы" практически невозможен...


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Как из Фокса узнать, что спрятанный (Visible=.F.) Иксел задает вопрос?
Ydin
Автор

Сообщений: 7648
Откуда: Киев
Дата регистрации: 16.12.2005
Так красиво ответил. Не каждому дано так излагать. Раньше я на это не обращал внимание. Спасибо.
Ratings: 0 negative/0 positive
Re: Как из Фокса узнать, что спрятанный (Visible=.F.) Иксел задает вопрос?
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
Как в анекдоте:
Интеллигент (видимо питерский) едет по Грузии, и на одной развилке, не зная куда дальше, спрашивает проходящего грузина:
- Уважаемый! Не соблаговолите ли подсказать мне, куда мне следует направить свой путь, чтобы попасть в Батуми?
- Вах! Дарагой! Ты так красиво сказал, так красиво! Что можешь ехать, куда захочешь!


Ydin
Для скорости прячу Иксел, макет доступен Юзеру. Он там что-то меняет и идет ошибка или сообщение, фиг его знает.
Может, вообще, "сбой активации продукта".
У меня проблема в том, чтобы определить этот момент

А вот такие 50 рублей случайно не спасут отца русской демократии?

В реестре есть параметр, определяющий поведение сложенного в панель задач приложения при каком-то собственном выводе в этом приложении.
Есть два варианта - либо приложение моргает при этом, либо его окно открывается.
Цитата:
Для этого нужно в разделе
HKEY_CURRENT_USER\Control Panel\Desktop создать или изменить параметр ForegroundLockTimeout типа DWORD и установить его значение на время задержки до "перехвата" фокуса в миллисекундах: 0 - окно сразу выскакивает вперед, 200 000 - значение по умолчанию.
Также можно установить число миганий кнопки. Для этого надо в этом же разделе создать или изменить DWORD-параметр ForegroundFlashCount и установить его значение на нужное число миганий для привлечения внимания пользователя. Значения устанавливаются в десятичной системе: 0 - заставит кнопку мигать бесконечно, по умолчанию значение равно 3.

Когда-то в одной теме был похожий (возможно - ?) вопрос от Влада Колосова: forum.foxclub.ru
В итоге он сделал тогда свой класс, поместив его в Решения: foxclub.ru


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)
Ratings: 0 negative/0 positive
Re: Как из Фокса узнать, что спрятанный (Visible=.F.) Иксел задает вопрос?
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Crispy
А вот такие 50 рублей случайно не спасут отца русской демократии?
Маловероятно, т.к. это решение для ВИДИМОЙ, но свёрнутой/минимизированной/перекрытой другими окнами программы (когда она сама или кто-то снаружи пытается активировать её окно). Если эксель невидим, то и моргать на панели задач ему нечем будет - там нет его кнопки при Visible = .F.
И в любом случае это крайне сомнительная "помощь" - вывалить перед испуганным юзером ещё и какой-то "странный" диалог экселя на фоне полу-сформированного документа, когда он просто нажал кнопочку "получить отчёт" Он 100% решит что программа страшно сломалась, и надо бежать за помощью (и будет не так уж далёк от истинны)...


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Как из Фокса узнать, что спрятанный (Visible=.F.) Иксел задает вопрос?
Vikong

Сообщений: 318
Откуда: Москва
Дата регистрации: 16.02.2001
Есть еще такое свойство AutomationSecurity msdn.microsoft.com
Устанавливаем в 3
oExcel.AutomationSecurity= 3 && msoAutomationSecurityForceDisable
Ratings: 0 negative/1 positive
Re: Как из Фокса узнать, что спрятанный (Visible=.F.) Иксел задает вопрос?
Ydin
Автор

Сообщений: 7648
Откуда: Киев
Дата регистрации: 16.12.2005
Спасибо!
Ratings: 0 negative/0 positive
Re: Как из Фокса узнать, что спрятанный (Visible=.F.) Иксел задает вопрос?
Ydin
Автор

Сообщений: 7648
Откуда: Киев
Дата регистрации: 16.12.2005
Помогло. Еще раз спасибо!
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 23 (Гостей: 23)

© 2000-2024 Fox Club 
Яндекс.Метрика