Re: Что прописать в начале и в конце единственной в проекте main проги | |
---|---|
lulgu Сообщений: 1838 Дата регистрации: 30.11.2016 |
Еще чуть-чуть, и AdamAry станет спец-агентом ЦРУ, коварно внедренным в сплоченные ряды фоксклуба.
"Если у вас шизофрения это не значит что за вами не следят." (с) Странно только, что у асов форума вызвал затруднения вопрос, вынесенный в заголовок темы, только pasha_usue пытается нащупать ответ по существу. Вопрос же в своем туманном стиле ТС задал про загрузчик приложения - "Что прописать в начале и в конце единственной в проекте main проги?" В начале программы прописывается процедура ее загрузки, где после READ EVENTS начинается считывание событий (обычно она бывает функцией "по-умолчанию"), в конце - процедура закрытия, которая завершает работу и после CLEAR EVENTS прекращает считывание событий. Еще желательно предусмотреть процедуры обработки ошибок и выходы по команде пользователя и по ON SHUTDOWN, возможно еще что-то. |
Re: Что прописать в начале и в конце единственной в проекте main проги | |
---|---|
Igor Korolyov Автор Сообщений: 34580 Дата регистрации: 28.05.2002 |
Нельзя никаких "команд" использовать. Можно лишь конструкции PROCEDURE, FUNCTION или DEFINE CLASS использовать (первые две имеют "необязательный" терминатор ENDPROC/ENDFUNC - необязательность проявляется в том, что вместо них можно просто начать "очередную" PROCEDURE/FUNCTION или описание класса - но если они всё же используются, то строго определяют "конец кода процедуры/функции").
------------------ WBR, Igor |
Re: Что прописать в начале и в конце единственной в проекте main проги | |
---|---|
lulgu Сообщений: 1838 Дата регистрации: 30.11.2016 |
В "PROCEDURE, FUNCTION или DEFINE CLASS" тоже нельзя команды вписывать? |
Re: Что прописать в начале и в конце единственной в проекте main проги | |
---|---|
Перминов Игорь Сообщений: 1591 Откуда: Красная Орловка Дата регистрации: 16.09.2001 |
[attachment 27936 2_troll_cr.jpg]
------------------ Без коментариев.. |
Re: Что прописать в начале и в конце единственной в проекте main проги | |
---|---|
AdamAry Сообщений: 843 Дата регистрации: 14.12.2015 |
У меня в реальности появляются только окна com объекта. В этом случае тоже не нужно использовать READ EVENTS и ON SHUTDOWN CLEAR EVENTS ? Цитата:Это (DOEVENTS) касается и окон com объекта? Исправлено 3 раз(а). Последнее : AdamAry, 06.07.17 09:06 |
Re: Что прописать в начале и в конце единственной в проекте main проги | |
---|---|
AdamAry Сообщений: 843 Дата регистрации: 14.12.2015 |
Не знал что если программа выполняется более 5 секунд то windows начинает думать что это зависание. Спасибо pasha_usue. |
Re: Что прописать в начале и в конце единственной в проекте main проги | |
---|---|
AdamAry Сообщений: 843 Дата регистрации: 14.12.2015 |
Плюс Igor. |
Re: Что прописать в начале и в конце единственной в проекте main проги | |
---|---|
pasha_usue Сообщений: 3649 Откуда: Е-бург Дата регистрации: 06.10.2006 |
Я не так сказал. Я сказал, что когда винда закрывает сессию, она посылает приложениям WM_QUERYENDSESSION. И от всех приложений она ожидает ответа приблизительно 5 секунд (если не настроено другое). Если приложение в течение 5 секунд не закрылось и не выставило флаг завершения своей работы, винда начинает действовать силовыми методами. |
Re: Что прописать в начале и в конце единственной в проекте main проги | |
---|---|
AdamAry Сообщений: 843 Дата регистрации: 14.12.2015 |
Не в состоянии понять в деталях и точно как это происходит, если не затруднит нет ли возможности как то объяснить, может быть на примитивном примере или как то ещё чтобы дошло? 1. Когда у запущенного приложения есть 5 секунд? Что с ним происходит в этот момент? И в ответ на какие действия пользователя? 2. Когда уинда закрывает сессию? 3. Для чего уинда посылает приложениям WM_QUERYENDSESSION ? 4. В каких случаях приложение в течение 5 секунд не закрывается и не выставляет флаг завершения своей работы? 5. Каким образом уинда начинает действовать силовыми методами? Т.е. что она для этого использует? 6. Может быть что то ещё, что я упустил? Если конечно объяснить на пальцах сложно, то может быть хотя бы цель 5 секунд? Исправлено 5 раз(а). Последнее : AdamAry, 06.07.17 09:46 |
Re: Что прописать в начале и в конце единственной в проекте main проги | |
---|---|
Igor Korolyov Автор Сообщений: 34580 Дата регистрации: 28.05.2002 |
Смотря как работает этот ком объект. Скорее всего не нужно (если он работает синхронно - т.е. в фоксе стоит какой-то вызов метода, и пока он не завершится фокс будет ждать на этой самой строке). Если же он работает на событиях, то нужно (примерно как показано в примере с фоксовым таймером). Нет. Это касается прежде всего того как работает фоксовый рантайм. Касаться работы COM сервера это может лишь в части обработки инициированных этим ком-объектом событий - если навешены фоксовые обработчики, и "параллельно" с работой ком-объекта продолжает работать какой-то фоксовый код (фокс не находится в состоянии ожидания). При завершении сессии приложению посылается событие WM_QUERYENDSESSION на которое оно должно отреагировать - сказать что готово к закрытию, либо сказать что НЕ готово - в этом случае винда постарается "отменить" процесс закрытия сессии. Пользователь инициирует либо "завершение сеанса/переключение пользователя", либо "выключение компьютера и выход из системы" - т.е. явно говорит что завершает свою работу. ПОСЛЕ этого приложениям рассылается сообщение WM_ENDSESSION, оно уже "безусловно" говорит что сейчас всё будет вырублено - с этого момента начинает работать таймер определения "подвисших" процессов, позволяющий их принудительно закрыть (в новых ОС так, насколько я в курсе). Когда пользователь или какое-то программное событие (например сигнал от UPS, или посланная системным администратором по сети команда выключения/перезагрузки компьютера) инициирует выход из системы. Для того чтобы известить приложения о том что сейчас произойдёт завершение сессии (и этим приложениям нужно будет завершиться, если они не сервисы). Ну и получить от них подтверждение что они "всё поняли". При этом им даётся шанс попросить винду "не завершать сессию". Если это будет возможно, то закрытие сессии (или перезагрузка/выключение системы) будут отменены. msdn.microsoft.com Странный вопрос. Если код этого приложения не завершает свою работу в течении 5 секунд после поступления сигнала WM_ENDSESSION. А флаг не выставляется если приложение вообще не реагирует на данное сообщение. АПИ функцию TerminateProcess. Наверняка. В MSDN есть очень много страниц которые следует прочесть, чтобы хоть минимально разбираться в обсуждаемых вопросах... Начать стоит с msdn.microsoft.com ------------------ WBR, Igor Исправлено 1 раз(а). Последнее : Igor Korolyov, 06.07.17 13:28 |
Re: Что прописать в начале и в конце единственной в проекте main проги | |
---|---|
akvvohinc Сообщений: 4218 Откуда: Москва Дата регистрации: 11.11.2008 |
На самом деле причина была в том, что вы совсем по-разному понимаете, что такое "программа" в данном контексте, и, соответственно, где находится ее конец. (раньше не задумывался над тем, можно ли писать программы, не до конца понимая, что такое программа, но, видимо, можно). Кто ж мог предположить, что концом программы вы считаете некое физическое место в конце prg-файла? Только Леонид. В какой-то теме я уже предлагал вам учиться (если вы собираетесь учиться) нормальным образом - от простого к сложному, с первого класса по десятый (или какой там сейчас последний) и дальше. Но ваши одновременные вопросы за первый класс и "для академиков" показывают, что нормальный путь - не для вас. Ну, не полетит ваша ракета, если не изучить основы физики и проч.! |
Re: Что прописать в начале и в конце единственной в проекте main проги | |
---|---|
akvvohinc Сообщений: 4218 Откуда: Москва Дата регистрации: 11.11.2008 |
Код писать можно - нельзя надеяться, что этот код будет выполнен. Более того, если выполнять такую прогу из исходников, то вы даже не узнаете об ошибке. Попробуйте выполнить программу из одной единственной строки:
А теперь такую:
Ошибки не будет. Точнее, ошибка компиляции "Statement is not in a procedure." будет игнорироваться. То есть, компилятор по-разному реагирует на, казалось бы одну и ту же ошибку в зависимости от того места, где написана команда. Хотя в обоих случаях она написана "в конце программы" (в вашем понимании того, что такое программа). Исправлено 1 раз(а). Последнее : akvvohinc, 06.07.17 20:00 |
Re: Что прописать в начале и в конце единственной в проекте main проги | |
---|---|
AndyNigmatec Сообщений: 1573 Откуда: Волгоград Дата регистрации: 28.06.2015 |
Ну встряну тож во флуд )))
можно систрей для таких вещей пользовать ))) так и делал кста |
Re: Что прописать в начале и в конце единственной в проекте main проги | |
---|---|
Igor Korolyov Автор Сообщений: 34580 Дата регистрации: 28.05.2002 |
Систрей сам по себе не позволит отлавливать нажатие esc
По большому счёту это просто иконка (и её тултип) и механизм отлова нажатий на неё. Оттуда уже и формы показываются, и, если надо, "завершение/прерывание" программы делается... ------------------ WBR, Igor |
© 2000-2024 Fox Club  |