| Автор | Сообщение |
|
|
| |
Пост N: 7636
Зарегистрирован: 17.05.05
|
|
Отправлено: 12.04.22 17:54. Заголовок: Как поймать событие винды ?
Возможно ли узнать из Harbour момент ухода компа в гибернацию , перезагрузку , выключение компа ? А то некоторые товарищи не закрывают программу , поэтому иногда портится база......
|
 |

|
|
Ответов - 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 Думаю гибернация или сон не смертелен для локальной проги и открытых баз , так что бог с ним , пусть гибернируют ))
|
 |

|
|
|
| |
Пост N: 327
Зарегистрирован: 05.10.06
|
|
Отправлено: 14.04.22 19:48. Заголовок: Dima пишет: так что..
Dima пишет: | цитата: | | так что бог с ним , пусть гибернируют )) |
| сделай таймер по активности пользователя, если бездействует то завершай прогу
|
 |

|
|
|
| |
Пост N: 7648
Зарегистрирован: 17.05.05
|
|
Отправлено: 14.04.22 19:53. Заголовок: MIKHAIL пишет: сдел..
MIKHAIL пишет: | цитата: | | сделай таймер по активности пользователя, если бездействует то завершай прогу |
| давно уже сделан. 1 час неактивности и выброс из проги.
|
 |

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

|
|
|
| постоянный участник
|
Пост N: 7491
Зарегистрирован: 12.09.06
|
|
Отправлено: 27.07.23 16:49. Заголовок: Сетка из 2-х компов...
Сетка из 2-х компов. Сервер Win11 , локальный комп Win10. Прога МиниГуи на Win10 иногда зависает, экран белым становиться и вот такое окно появляется. А можно как то отловить это событие ? 
|
 |

|
|
|
| moderator
|
Пост N: 2176
Зарегистрирован: 11.02.10
|
|
Отправлено: 27.07.23 17:04. Заголовок: Andrey пишет: отлов..
Andrey пишет: Уже обсуждалось здесь
|
 |

|
|
|
| |
Пост N: 8096
Зарегистрирован: 17.05.05
|
|
Отправлено: 08.05.25 18:48. Заголовок: А посылает ли винда ..
А посылает ли винда какое то сообщение приложению и можно ли его ловить в случае если приложение насильно снимают через диспетчер задач ?
|
 |

|
|
|
| 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, которая немедленно завершает процесс на уровне операционной системы. Это обход стандартного механизма завершения — никакие окна не уведомляются, никакие обработчики сообщений не вызываются. |
| 
|
 |

|
|
|
| |
Пост N: 8097
Зарегистрирован: 17.05.05
|
|
Отправлено: 08.05.25 21:50. Заголовок: gfilatov2002 Понял ..
gfilatov2002 Понял , спасибо. То есть отреагировать приложение не сможет.....ну и ладно 
|
 |

|
|
|
| |
Пост 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 , пересобрал , чекнул , всё ловит отлично.
|
 |

|
|
|
| постоянный участник
|
Пост N: 4726
Зарегистрирован: 17.02.12
|
|
Отправлено: 09.05.25 17:31. Заголовок: Dima :sm36: GTWVG..
Dima GTWVG - это продвинутый наследник gtwvt, так что "Правильным путем идете, товарищ"
|
 |

|
|
|
|
|
| |
Пост 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
|
 |

|
|
|
| постоянный участник
|
Пост 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
|
 |

|
|
|
| |
Пост N: 8101
Зарегистрирован: 17.05.05
|
|
Отправлено: 13.05.25 19:09. Заголовок: SergKis Понял пробн..
SergKis Понял пробну (тоже интересно), но все же успел переделать как выше и писал
|
 |

|
|
|
| |
Пост N: 8102
Зарегистрирован: 17.05.05
|
|
Отправлено: 14.05.25 12:50. Заголовок: SergKis пишет: Что ..
SergKis пишет: | цитата: | | Что дает в EXIT PROCEDURE (я не пробовал) посмотри |
| Собственно ни чего интересного И если строго по твоему коду то вернет 1 , имя EXIT процедуры 2, пусто Я переделал i++ на ++i и тогда вернет 1 , имя EXIT процедуры А вот приёмчик с переменной сработал нормально и теперь можно понять откуда ноги растут
|
 |

|
|
|
| постоянный участник
|
Пост N: 4731
Зарегистрирован: 17.02.12
|
|
Отправлено: 14.05.25 14:39. Заголовок: Dima пишет Собственн..
Dima пишет | цитата: | | Собственно ни чего интересного |
| Странно, по идее, __QUIT() должна была отметиться в списке | цитата: | | А вот приёмчик с переменной сработал нормально и теперь можно понять откуда ноги растут |
| т.к. ты собираешь свой hb, то переменную перенести можно в добавленный код обработки (ее значения, например) WM_QUERYENDSESSION -> 2 WM_ENDSESSION -> 1 __QUIT() -> 0 тогда в прикладной программе никаких переменных с присваиванием не было бы
|
 |

|
|
|
| |
Пост N: 8103
Зарегистрирован: 17.05.05
|
|
Отправлено: 14.05.25 16:52. Заголовок: SergKis Поправка :..
SergKis Поправка Код вставил не туда а в функцию которая вызывается из EXIT PROCEDURE Если его вставить непосредственно в EXIT PROCEDURE , то стёк процедур пуст. Вероятно он просто обнуляется при выполнении __QUIT()
|
 |

|
|
|
| постоянный участник
|
Пост N: 4732
Зарегистрирован: 17.02.12
|
|
Отправлено: 14.05.25 18:44. Заголовок: Dima Тогда вариант с..
Dima Тогда вариант с переменной остается 
|
 |

|
|
|
| |
Пост N: 8106
Зарегистрирован: 17.05.05
|
|
Отправлено: 27.05.25 14:18. Заголовок: SergKis пишет: Powe..
SergKis пишет: | цитата: | | Power Management Events не ловились события, как и WM_QUERYENDSESSION, WM_ENDSESSION на разных PC где то есть, но в большинстве случаях нету. Потому и закрыл эту лавочку, как писал в самом начале. |
| На ряде компов появились ложные срабатывания и прога просто закрывалась после запуска. Тоже закрыл эту лавочку в плане Power Management Events
|
 |

|
|
|
| |
Пост 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
|
 |

|
|
Ответов - 40
, стр:
1
2
All
[только новые]
|
|