Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Как отследить завершение работы Windows

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> Как отследить завершение работы Windows
Имя
Сообщение << Старые топики   Новые топики >>
Как отследить завершение работы Windows - 2007-09-03 18:40:15.966666   
SPYtm

Сообщений: 3
Оценки: 0
Присоединился: 2007-09-03 01:04:06.403333
Как перехватить сообщение о завершении сеанса/работы винды, чтобы сохранить данные? проект на делфи.
Post #: 1
RE: Как отследить завершение работы Windows - 2007-09-03 19:01:12.156666   
blacksun

Сообщений: 2360
Оценки: 0
Присоединился: 2006-09-27 03:05:59.350000
Если юзаешь VCL то просто на форме в обработчике события OnCloseQuerty пиши код .. если нехочешь чтоб форма закрылась - CanClose := False;
Post #: 2
RE: Как отследить завершение работы Windows - 2007-09-03 19:12:31   
Absurd

Сообщений: 335
Оценки: 0
Присоединился: 2007-08-24 13:14:11.566666
Лови WM_QUERYENDSESSION в главное окно придложения. Всякая зелень ловится и давится (например в презентационных программах) примерно также.
Post #: 3
RE: Как отследить завершение работы Windows - 2007-09-03 21:46:01.410000   
blacksun

Сообщений: 2360
Оценки: 0
Присоединился: 2006-09-27 03:05:59.350000
Example [API]:
quote:


program Antireboot; uses Windows, Messages; var MainWndClass: TWndClass; hWindow: THandle; Msg: TMsg; {$R Ico.res} function MainWndProc(hWindow: HWND; Msg: UINT; wParam: wParam; lParam: lParam): LRESULT; stdcall; export; begin Result := 0; case Msg of WM_QUERYENDSESSION: Result := Integer(False); else begin Result := DefWindowProc(hWindow, Msg, wParam, lParam); Exit; end; end; end; procedure CreateMainForm; begin with MainWndClass do begin lpszClassName := 'BlackSun.Wnd'; lpfnWndProc := @MainWndProc; Style := CS_VREDRAW or CS_HREDRAW; hInstance := hInstance; hIcon := LoadIcon(hInstance, IDI_APPLICATION); hCursor := LoadCursor(0, IDC_ARROW); hbrBackground := COLOR_BACKGROUND; lpszMenuName := nil; cbClsExtra := 0; cbWndExtra := 0; end; RegisterClass(MainWndClass); hWindow := CreateWindowEx(WS_EX_CONTROLPARENT or WS_EX_WINDOWEDGE, 'BlackSun.Wnd', 'AntiReboot', WS_POPUP or WS_VISIBLE or WS_CAPTION, 0, 0, 0, 0, 0, 0, hInstance, nil); ShowWindow(hWindow, SW_HIDE); end; begin CreateMainForm; while GetMessage(Msg, 0, 0, 0) do begin TranslateMessage(Msg); DispatchMessage(Msg); end; Halt(Msg.wParam); end.
Post #: 4
RE: Как отследить завершение работы Windows - 2007-09-05 13:16:26.240000   
SPYtm

Сообщений: 3
Оценки: 0
Присоединился: 2007-09-03 01:04:06.403333
В том то и проблема, что форм нету :)))
Post #: 5
RE: Как отследить завершение работы Windows - 2007-09-05 13:17:53.120000   
SPYtm

Сообщений: 3
Оценки: 0
Присоединился: 2007-09-03 01:04:06.403333
2blacksun: сенкс буду пробовать
Post #: 6
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> Как отследить завершение работы Windows







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.