Страница: 1 |
Вопрос: WM_CLOSE, ?, ? | Добавлено: 25.04.06 11:58 |
Автор вопроса: ![]() |
Какие еще есть сообщения для закрытия приложений? Например Опера вылетает, если ей послать WM_CLOSE... |
Ответы | Всего ответов: 13 |
Номер ответа: 1 Автор ответа: ![]() ![]() Вопросов: 0 Ответов: 1066 |
Профиль | Цитата | #1 | Добавлено: 25.04.06 12:19 |
WM_SYSCOMMAND + SC_CLOSE |
Номер ответа: 2 Автор ответа: ![]() ![]() Вопросов: 0 Ответов: 1066 |
Профиль | Цитата | #2 | Добавлено: 25.04.06 12:20 |
или WM_DESTROY главному окну |
Номер ответа: 3 Автор ответа: ![]() ![]() Вопросов: 0 Ответов: 1066 |
Профиль | Цитата | #3 | Добавлено: 25.04.06 12:21 |
или WM_QUIT |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client ICQ: 343368641 Вопросов: 17 Ответов: 686 |
Web-сайт: Профиль | Цитата | #4 | Добавлено: 25.04.06 20:00 |
помойму самый лучший WM_QUIT |
Номер ответа: 5 Автор ответа: ![]() ![]() Разработчик Offline Client Вопросов: 164 Ответов: 1317 ![]() |
Web-сайт: Профиль | Цитата | #5 | Добавлено: 25.04.06 20:18 |
Barsik, только он не срабатывает че-то. |
Номер ответа: 6 Автор ответа: ![]() ![]() Вопросов: 0 Ответов: 1066 |
Профиль | Цитата | #6 | Добавлено: 25.04.06 20:57 |
можно ещё WM_NCLBUTTONDOWN и затем WM_NCLBUTTONUP (эмулировать нажатие на крестик в заголовке).
Или элементарно взять Spy++ и посмотреть, чтоза сообщения приходят в WndProc при закрытии проги. |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client Вопросов: 236 Ответов: 8362 |
Профиль | Цитата | #7 | Добавлено: 25.04.06 22:21 |
в тему: Что винда рассылает всем приложениям когда вырубается? |
Номер ответа: 8 Автор ответа: ![]() ![]() Вопросов: 0 Ответов: 1066 |
Профиль | Цитата | #8 | Добавлено: 25.04.06 22:35 |
Чёрные метки. |
Номер ответа: 9 Автор ответа: ![]() ![]() Разработчик Offline Client Вопросов: 164 Ответов: 1317 ![]() |
Web-сайт: Профиль | Цитата | #9 | Добавлено: 26.04.06 08:50 |
Hooligan, а можно поподробнее? И чем найти hWnd главного окна программы? |
Номер ответа: 10 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 334781088 Вопросов: 108 Ответов: 2822 |
Профиль | Цитата | #10 | Добавлено: 26.04.06 11:48 |
Смотря от какого известного параметра ты ищешь ![]() |
Номер ответа: 11 Автор ответа: ![]() ![]() Разработчик Offline Client Вопросов: 164 Ответов: 1317 ![]() |
Web-сайт: Профиль | Цитата | #11 | Добавлено: 26.04.06 12:10 |
LOL, от PID.
Разобрался с WM_QUIT, оказывается нужно отправлять через PostMessage, а не через SendMessage. Даже КАВ закрывается, правда служба остается (не в курсе, как и ее закрыть?). А Опера закрывается, но при следующем запуске пишет, что была завершена не верно. Для поиска hWnd использую функцию: Private Function InstanceToWnd(ByVal target_pid As Long) As Long
Dim test_hwnd As Long, test_pid As Long, test_thread_id As Long 'Find the first window test_hwnd = FindWindow(ByVal 0&, ByVal 0& ![]() Do While test_hwnd <> 0 'Check if the window isn't a child If GetParent(test_hwnd) = 0 Then 'Get the window's thread test_thread_id = GetWindowThreadProcessId(test_hwnd, test_pid) If test_pid = target_pid Then InstanceToWnd = test_hwnd Exit Do End If End If 'retrieve the next window test_hwnd = GetWindow(test_hwnd, GW_HWNDNEXT) Loop End Function |
Номер ответа: 12 Автор ответа: ![]() ![]() Вопросов: 0 Ответов: 1066 |
Профиль | Цитата | #12 | Добавлено: 26.04.06 13:33 |
когда винда вырубается, или рестарт, приложениям рассылается WM_QUERYENDSESSION.
Если приложение согласно добровольно выгрузиться, оно подтверждает это, возвращая 1 при обработке сообщения. Если нет - возвращает 0. Когда все приложения завершат неотложные дела и подтвердят готовность к завершению, им рассылается WM_ENDSESSION. И капут. |
Номер ответа: 13 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client Вопросов: 236 Ответов: 8362 |
Профиль | Цитата | #13 | Добавлено: 26.04.06 15:55 |
Ну знач каспу WM_QUERYENDSESSION, как верёт 1 WM_ENDSESSION и теоретически службу он должен выгрузить |
Страница: 1 |
|