On-line: гостей 1. Всего: 1 [подробнее..]
АвторСообщение
администратор




Пост N: 7636
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 12.04.22 17:54. Заголовок: Как поймать событие винды ?


Возможно ли узнать из Harbour момент ухода компа в гибернацию , перезагрузку , выключение компа ?
А то некоторые товарищи не закрывают программу , поэтому иногда портится база......

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 40 , стр: 1 2 All [только новые]


администратор




Пост N: 7647
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 14.04.22 14:52. Заголовок: SergKis пишет: if (..


SergKis пишет:

 цитата:
if ( (wParam == PBT_APMSUSPEND) || (wParam == PBT_APMSTANDBY) || (wParam == PBT_APMQUERYSUSPEND) || (wParam == PBT_APMQUERYSTANDBY))


Это я отключил пока
SergKis пишет:

 цитата:
т.е. не входит в case WM_POWERBROADCAST


да не входит
SergKis пишет:

 цитата:
Кинь свой test пробну у себя, что выдаст


Теста нет , на живой проге тестю .......правленный gtwwt.c я иак понял тебя не устроит так же как и либа gtwvt под Mingw

PS
Думаю гибернация или сон не смертелен для локальной проги и открытых баз , так что бог с ним , пусть гибернируют ))

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 327
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 14.04.22 19:48. Заголовок: Dima пишет: так что..


Dima пишет:

 цитата:
так что бог с ним , пусть гибернируют ))



сделай таймер по активности пользователя, если бездействует то завершай прогу

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7648
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 14.04.22 19:53. Заголовок: MIKHAIL пишет: сдел..


MIKHAIL пишет:

 цитата:
сделай таймер по активности пользователя, если бездействует то завершай прогу


давно уже сделан.
1 час неактивности и выброс из проги.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 328
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 14.04.22 21:27. Заголовок: Dima попробуй в план..


Dima попробуй в планировщике создать задание по записи события в журнале системы по коду события

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7491
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 27.07.23 16:49. Заголовок: Сетка из 2-х компов...


Сетка из 2-х компов. Сервер Win11 , локальный комп Win10.
Прога МиниГуи на Win10 иногда зависает, экран белым становиться и вот такое окно появляется.

А можно как то отловить это событие ?

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 2176
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 27.07.23 17:04. Заголовок: Andrey пишет: отлов..


Andrey пишет:

 цитата:
отловить это событие ?


Уже обсуждалось здесь

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 8096
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 08.05.25 18:48. Заголовок: А посылает ли винда ..


А посылает ли винда какое то сообщение приложению и можно ли его
ловить в случае если приложение насильно снимают через диспетчер задач ?

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 2437
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 08.05.25 19:43. Заголовок: Когда приложение при..



 цитата:
Когда приложение принудительно закрывается в Диспетчере задач Windows, оно получает сообщение WM_ENDSESSION с параметром lParam, установленным в ENDSESSION_CLOSEAPP. Это сообщение сигнализирует приложению о том, что сеанс Windows завершается и приложение должно закрыться.

Если приложение не обрабатывает это сообщение или не закрывается в течение определенного времени, Windows отправляет сообщение WM_QUIT, которое завершает работу приложения.


Увы, это не соответствует действительности.
На самом деле,

 цитата:
При принудительном завершении через Диспетчер задач:

Windows не отправляет WM_CLOSE, WM_QUIT, или другие сообщения Windows API.

Вместо этого используется функция TerminateProcess, которая немедленно завершает процесс на уровне операционной системы.

Это обход стандартного механизма завершения — никакие окна не уведомляются, никакие обработчики сообщений не вызываются.




Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 8097
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 08.05.25 21:50. Заголовок: gfilatov2002 Понял ..


gfilatov2002
Понял , спасибо.
То есть отреагировать приложение не сможет.....ну и ладно

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 8098
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 09.05.25 17:06. Заголовок: SergKis Решил я сно..


SergKis
Решил я снова поиграться с WM_POWERBROADCAST.
И изначально я зациклился на gtwvt.c о котором ты писал и о правках в нём.
Но я же юзаю GTWVG и глянул сырцы и поправил gtwgud.c и gtwvgd.c
в плане реакции на WM_ENDSESSION и WM_POWERBROADCAST с учетом wParam ,
пересобрал , чекнул , всё ловит отлично.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4726
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.05.25 17:31. Заголовок: Dima :sm36: GTWVG..


Dima

GTWVG - это продвинутый наследник gtwvt, так что "Правильным путем идете, товарищ"

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 8100
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 13.05.25 17:55. Заголовок: SergKis Сергей прив..


SergKis
Сергей привет !
А можно как то понять в EXIT PROCEDURE , в неё я попал
в результате __QUIT() (я понимаю что это есть hb_vmRequestQuit) сделанный в самой программе
или я туда попал из модуля GTWVG в результате срабатывания WM_QUERYENDSESSION ||
WM_ENDSESSION и тд и тоже вызовом hb_vmRequestQuit ?

PS
Можно конечно через PUBLIC переменную объявленную в программе и скажем в самой
проге перед __QUIT() присваивать ей например 1 , изначально она 0
Если в Exit Proc видим что переменная имеет значение 0 значит __Quit был
из GTWVG

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4729
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.05.25 18:45. Заголовок: Dima Что дает в EXI..


Dima
Что дает в EXIT PROCEDURE (я не пробовал) посмотри
i := 0
While !Empty( ProcName( i++ )) ; ? i, Procname( i ) ; End

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 8101
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 13.05.25 19:09. Заголовок: SergKis Понял пробн..


SergKis
Понял пробну (тоже интересно), но все же успел переделать как выше и писал

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 8102
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 14.05.25 12:50. Заголовок: SergKis пишет: Что ..


SergKis пишет:

 цитата:
Что дает в EXIT PROCEDURE (я не пробовал) посмотри


Собственно ни чего интересного
И если строго по твоему коду то вернет
1 , имя EXIT процедуры
2, пусто
Я переделал i++ на ++i
и тогда вернет
1 , имя EXIT процедуры
А вот приёмчик с переменной сработал нормально и теперь можно понять откуда ноги растут

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4731
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.05.25 14:39. Заголовок: Dima пишет Собственн..


Dima пишет
 цитата:
Собственно ни чего интересного


Странно, по идее, __QUIT() должна была отметиться в списке

 цитата:
А вот приёмчик с переменной сработал нормально и теперь можно понять откуда ноги растут


т.к. ты собираешь свой hb, то переменную перенести можно в добавленный код обработки (ее значения, например)
WM_QUERYENDSESSION -> 2
WM_ENDSESSION -> 1
__QUIT() -> 0
тогда в прикладной программе никаких переменных с присваиванием не было бы

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 8103
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 14.05.25 16:52. Заголовок: SergKis Поправка :..


SergKis
Поправка
Код вставил не туда а в функцию которая вызывается из EXIT PROCEDURE
Если его вставить непосредственно в EXIT PROCEDURE , то стёк процедур пуст.
Вероятно он просто обнуляется при выполнении __QUIT()

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4732
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.05.25 18:44. Заголовок: Dima Тогда вариант с..


Dima Тогда вариант с переменной остается

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 8106
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.05.25 14:18. Заголовок: SergKis пишет: Powe..


SergKis пишет:

 цитата:
Power Management Events не ловились события, как и WM_QUERYENDSESSION, WM_ENDSESSION на разных PC где то есть, но в большинстве случаях нету. Потому и закрыл эту лавочку, как писал в самом начале.


На ряде компов появились ложные срабатывания и прога просто закрывалась после запуска.
Тоже закрыл эту лавочку в плане Power Management Events

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 702
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 06.06.25 15:16. Заголовок: METHOD HandEvent(nMs..


METHOD HandEvent(nMsg, nWParam, nLParam) class TWindow
if nMsg=WM_QUERYENDSESSION.or.nMsg=WM_ENDSESSION //ловит выключение компа, давно работает без ошибок

endif

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 40 , стр: 1 2 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 187
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет