Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Как узнать о завершении работы из DLL


Автор: lgv 12.11.2010, 14:58
Существует ли надежный способ определения завершения работы Windows из DLL, без относительно к какому процессу она принадлежить.
Например, logoff, reboot, shutdown через кнопку Пуск, taskman, команда shutdown -l(-r,-s), др.
DLL_THREAD_DETACH,DLL_PROCESS_DETACH, SetProcessShutdownParameters, перехваты ExitProcess, ExitWindowsEx, DispatchMessage не дают желаемого результата во всех случаях.
SetWindowsHookEx - разумного ничего не ловило, хотя может я чегото не доучел.
Какие еще рарианты могут быть?
Спасибо.

Автор: xvr 13.11.2010, 11:02
Самое надежное это DLL_PROCESS_DETACH. Но при убиении процесса из taskman (через TerminateProcess) даже сам процесс не сможет узнать, что его 'terminate', а вы хотите это узнать из dll  smile 

Автор: ASMatic 15.11.2010, 03:03
xvr, 
Цитата(lgv @  12.11.2010,  12:58 Найти цитируемый пост)
завершения работы Windows


lgv, 
http://msdn.microsoft.com/en-us/library/ms685049(v=VS.85).aspx

Автор: xvr 15.11.2010, 11:04
Цитата(ASMatic @ 15.11.2010,  03:03)
xvr, 
Цитата(lgv @  12.11.2010,  12:58 Найти цитируемый пост)
завершения работы Windows


Пардон, невнимательно прочел вопрос. Я думал о завершении приложения  smile 
Цитата

lgv, 
http://msdn.microsoft.com/en-us/library/ms685049(v=VS.85).aspx
Это для консольных приложений. Работа в не-консольных не гарантируется (IMHO)

Автор: ASMatic 15.11.2010, 17:25
xvr,  говорят

Цитата

This function provides a similar notification for console application and services that WM_QUERYENDSESSION provides for graphical applications with a message pump. You could also use this function from a graphical application, but there is no guarantee it would arrive before the notification from WM_QUERYENDSESSION.

http://msdn.microsoft.com/en-us/library/ms686016(v=VS.85).aspx

вроде как должно работать...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)