Цитата: amadey ➤ Не работает представьте себе в вин7
а должно ? нет если конечно код перекочевал с какого либо источника без осмысления, то наверное можно так думать :)
но открывая описание ms видим, что "все уже украдено до нас"
=============
В Windows 7, Windows 8, Windows 8.1 и Windows 10:
Если консольное приложение загружает библиотеку gdi32.dll или user32.dll, функция HandlerRoutine, указанная вами при вызове SetConsoleCtrlHandler, не вызывается для событий CTRL_LOGOFF_EVENT и CTRL_SHUTDOWN_EVENT. Операционная система обрабатывает процессы, которые загружают библиотеку gdi32.dll или user32.dll, как приложения Windows, а не как консольные приложения. Такое поведение также характерно для консольных приложений, которые не вызывают функции непосредственно в gdi32.dll или user32.dll, но вызывают, например, функции оболочки, которые в свою очередь вызывают функции в gdi32.dll или user32.dll.
Чтобы получать события, когда пользователь выходит из системы или устройство завершает работу в таких условиях, создайте скрытое окно в консольном приложении, а затем обеспечьте обработку сообщений окна WM_QUERYENDSESSION и WM_ENDSESSION, которые получает скрытое окно. Вы можете создать скрытое окно, вызвав метод CreateWindowEx с параметром dwExStyle, для которого задано значение 0.
=============
у вас не работает значит используются ф-ции оболочки про которые было написано
Цитата: amadey ➤ Мое приложение не будет использовать то, что совершенно не нужно.
мой совет как раз и был для чисто консольного без оконных и ф-ций оболочки
Цитата: amadey ➤ Вы же и процитировали механизм SetConsoleCtrlHandler(HandlerRoutine, TRUE);
Он же из документации. Почему он не работает?
потому что там написано так :) и ms если честно вам ничем не обязан, как и вы ему, так что вопрос почему - не совсем корректен - вас никто не заставляет использовать винду - пишите под линукс (там в случае чего сможете сами поведение оси поправить) и на основании того что ваши ожидания не оправдываются не стоит делать вывод что продукт не стоит использовать и сидеть на предыдущих версиях - с таким успехом можно было остаться в чистом досе - вот там то точно консоль так консоль :)
меня как пользователя напрягают приложения которые ограничивают использование МОЕГО компьютера и требуют определенной версии винды (или еще чего либо), я бы еще согласился с этим если бы это требовало единственное в мире уникальное приложение или хотя бы приложение уровня самой винды, но в данном случае я сильно сомневаюсь ...
Цитата: amadey ➤ Технические алгоритмы низкого уровня в конечном итоге сводятся именно к такому алгоритму работы с файлами баз данных. ВСЕГДА.Если приложению не дать закончить свой алгоритм, порча будет гарантированно.
как говорил мой учитель - кривую структуру ни одним алгоритмом не исправить
к стыду своему я всегда считал что реорганизация записей в базах обычно только при операциях типа compact (что является процедурой обслуживания) а не при обычной работе, похоже что я последние 30 лет сильно заблуждался, обещаю исправить и заняться повышением уровня
за сим чтобы не повергнуться остракизму предлагаю завершить данное обсуждение :)
единственно что прошу озвучить (если не секрет конечно) какая именно база данных так себя ведет (всегда двигает ахулеард записей при вставке\удалении\изменении одной единственной) чтобы знать от применения чего отказываться сразу при упоминании