:: Visual Foxpro, Foxpro for DOS
Закрыть приложение
Centory
Автор

Сообщений: 88
Откуда: г. Зеленоград
Дата регистрации: 20.08.2004
Может кто знает, как закрыть программу принудительно, при том что можешь находится где угодно (от messagebox'a до Report Preview) ?
Этакий аварийны выход из системы ?



Отредактировано (29.03.05 16:09)


------------------
Ratings: 0 negative/0 positive
Re: Centory
Hel!Riser

Сообщений: 10452
Откуда: Нижний Новгород
Дата регистрации: 11.03.2001
forum.foxclub.ru примерна такой же вопрос




------------------
Осторожно - глисты!
Ratings: 0 negative/0 positive
Re: Centory
Centory
Автор

Сообщений: 88
Откуда: г. Зеленоград
Дата регистрации: 20.08.2004
Неа не такой...... мне надо принудительно закрыть, а не по таймауту, пусть даже в это время пользователь работает.
Ratings: 0 negative/0 positive
Re: Centory
Penner

Сообщений: 4102
Откуда: Muenster
Дата регистрации: 26.04.2002
Зачем?!
Хочешь базу испортить?
Ratings: 0 negative/0 positive
Re: Centory
Centory
Автор

Сообщений: 88
Откуда: г. Зеленоград
Дата регистрации: 20.08.2004
Почему испортить? close all и все, дальше выход однозначно будет. А перед этим я 2 минуты даю по таймеру, чтоб сохранились.
Вот только пока закрыть немогу......
Ratings: 0 negative/0 positive
Re: Centory
Burn

Сообщений: 5644
Откуда: Днепр
Дата регистрации: 02.01.2002
>Вот только пока закрыть немогу......
QUIT пробовал?




------------------
В борьбе бобра с козлом побеждает бобро
Ratings: 0 negative/0 positive
Re: Centory
JS

Сообщений: 12264
Откуда: Эстония
Дата регистрации: 04.09.2000
Насколько я понимаю из вопроса - прогу закрыть удаленно?

Можно придумать что-то вроде записи в таблице на сервере,
которая периодически проверяется программой у пользователя.
Таблица - read-only для пользователя.
Если записи нет - уходим с сохранением всего и всея в shutdown.
А запись удаляет администратор, который имеет доступ read-write
к таблице.




------------------
Knowledge is better than ignorance!
Website: juri.foxhelp.eu
Ratings: 0 negative/0 positive
Re: Centory
Centory
Автор

Сообщений: 88
Откуда: г. Зеленоград
Дата регистрации: 20.08.2004
QUIT я пробовал. В результате, на на некоторых формах выскакиевае Can't quit VFP (неможет закрыть форму).

А так да - закрыть прогу удаленно ?)
Таймер раз в минуту лезет в служебную табличку и если там флажок - то даем пользователю минуту на сохранение и пр. и отваливаемся.
Ratings: 0 negative/0 positive
Re: Centory
borman

Сообщений: 11046
Откуда: Москва
Дата регистрации: 29.07.2004
Или проста файл-флаг... по тимеру проверяеш его наличие, если появляется - все выходишь.....




------------------
Многие вещи нам непонятны не потому, что наши понятия слабы, а потому, что сии вещи не входят в круг наших понятий.
Ratings: 0 negative/0 positive
Re: Centory
AleksM

Сообщений: 17881
Дата регистрации: 11.11.2003
Ну одного QUIT недостаточно, как минимум еще и CLEAR EVENTS, формы и базы опять же желательно закрыть.




------------------
Лучше переесть, чем недоспать.
Не спеши, а то успеешь.
Ratings: 0 negative/0 positive
Re: Centory
Centory
Автор

Сообщений: 88
Откуда: г. Зеленоград
Дата регистрации: 20.08.2004
Ну закрытие там идет так - всеравно ругается.
CLOSE ALL
CLEAR WINDOW
CLEAR MACROS
CLEAR
ET PROCEDURE TO
ON SHUTDOWN
QUIT

И всеравно, если пользователь надолго покинул рабочее место при выведенном на экран messagebox.....
Ratings: 0 negative/0 positive
Re: Centory
borman

Сообщений: 11046
Откуда: Москва
Дата регистрации: 29.07.2004
Тада тока в лоб ему!однозначно!
Плюс юзай свои мессагебоксы, которые через определенное время без реакции пользователя гаснут сами....




------------------
Многие вещи нам непонятны не потому, что наши понятия слабы, а потому, что сии вещи не входят в круг наших понятий.
Ratings: 0 negative/0 positive
Re: Centory
AleksM

Сообщений: 17881
Дата регистрации: 11.11.2003
Цитата:
Can't quit VFP
1. Это говорит об активном READ EVENTS.
2. MESSAGEBOX() имеет 4-й параметр - таймаут.




------------------
Лучше переесть, чем недоспать.
Не спеши, а то успеешь.
Ratings: 0 negative/0 positive
Re: Centory
Centory
Автор

Сообщений: 88
Откуда: г. Зеленоград
Дата регистрации: 20.08.2004
тоже не катит..... я например затруднюсь автоматом ответить на вопрос "Сохранить заявку?"

А сижу я пот VFP6, там нету таймаутоа вроде



Отредактировано (29.03.05 17:22)


------------------
Ratings: 0 negative/0 positive
Re: Centory
AleksM

Сообщений: 17881
Дата регистрации: 11.11.2003
Цитата:
я например затруднюсь автоматом ответить на вопрос "Сохранить заявку?"
Если по таймауту, через свой диалог оповещения или через MESSAGEBOX(), ответ д.б. один "Не сохранять" - для дисциплины пользователей.




------------------
Лучше переесть, чем недоспать.
Не спеши, а то успеешь.
Ratings: 0 negative/0 positive
Re: Закрыть приложение
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi Centory!

На самом деле код весьма непрост будет...
Для простоты:
1) Есть формы ввода - они имеют метод, скажем Close() - который корректно
может их закрыть - значит надо пройтись по коллекции _SCREEN.Forms (от КОНЦА
к НАЧАЛУ!) и проверяя type() элемента и по PEMSTATUS наличие метода - его
дёргать.
2) Для "прочих" форм сгодится их метод Release.
3) Для Messagebox - хотя его наверное СТОИТ заменять на свою форму, которой
можно крутить как угодно - KEYBOARD {Enter} PLAIN CLEAR - нажмёт ту кнопку
что была выбрана (а значит надо позаботится о верном выборе для default-а).
4) Если где-то есть валидация с блокировкой (т.е. из Valid возвращаешь .F.
или 0 ну или NODEFAULT в LostFocus) - то надо предусмотреть отключение этой
проверки/блокировки по флагу "идёт процесс закрытия всего приложения".
5) Что-то делать с Print Preview - вроде можно закрыть его по KEYBOARD {Esc}
PLAIN CLEAR...




------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Закрыть приложение
Centory
Автор

Сообщений: 88
Откуда: г. Зеленоград
Дата регистрации: 20.08.2004
Все оазалось легко
DECLARE ExitProcess IN kernel32 INTEGER uExitCode

и в выходе по таймеру
ExitProcess(0)

Конечно, не есть красивое решение, но короткое (2 строки) и в моем случае оно подошло.
А кто не спрятался - я не виноват



Отредактировано (29.03.05 18:33)


------------------
Ratings: 0 negative/0 positive
Re: Закрыть приложение
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi Centory!

Это нехорошее решение для фокса - побьются таблицы, пропадёт вся работа, или ещё какая большая гадость приключится Ты бы ещё KillProcess применил
Попробуй например из командного окна - заметив что при штатном закрытии фокс (начиная с 7-й версии) сохраняет всё что ты ввёл (историю команд) - а при таком методе - нет. Можно ещё попробовать запустить циклический процесс вставки записей в таблицу, и таким макаром "убить" процесс - посмотри потом - не покалечится ли файл. И попадут ли туда реально введённые записи.




------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Закрыть приложение
Centory
Автор

Сообщений: 88
Откуда: г. Зеленоград
Дата регистрации: 20.08.2004
В моем случае это вполне приемлимое решение - на момент срабатывания процедуры я четко уверен что работа с базами не ведется (она в принципе не ведется - сначала оперируются с курсорами, а птом уже вставка в базу), то что пользователь не сохранился..... у них было время, это во первых, а во вторых я предупреждаю еще......
Ratings: 0 negative/0 positive
Re: Закрыть приложение
borman

Сообщений: 11046
Откуда: Москва
Дата регистрации: 29.07.2004
Я б назвал такой метод - "Ядрена бомба" ....Но коли устраивает......




------------------
Многие вещи нам непонятны не потому, что наши понятия слабы, а потому, что сии вещи не входят в круг наших понятий.
Ratings: 0 negative/0 positive


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

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

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