Страница: 1 |
Страница: 1 |
Вопрос: WM_CLOSE, ?, ?
Добавлено: 25.04.06 11:58
Автор вопроса: gvozd | Web-сайт:
Какие еще есть сообщения для закрытия приложений? Например Опера вылетает, если ей послать WM_CLOSE...
Ответы
Всего ответов: 13
Номер ответа: 1
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #1
Добавлено: 25.04.06 12:19
WM_SYSCOMMAND + SC_CLOSE
Номер ответа: 2
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #2
Добавлено: 25.04.06 12:20
или WM_DESTROY главному окну
Номер ответа: 3
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #3
Добавлено: 25.04.06 12:21
или WM_QUIT
Номер ответа: 4
Автор ответа:
Barsik
Разработчик Offline Client
ICQ: 343368641
Вопросов: 17
Ответов: 686
Web-сайт:
Профиль | | #4
Добавлено: 25.04.06 20:00
помойму самый лучший WM_QUIT
Номер ответа: 5
Автор ответа:
gvozd
Разработчик Offline Client
Вопросов: 164
Ответов: 1317
Web-сайт:
Профиль | | #5
Добавлено: 25.04.06 20:18
Barsik, только он не срабатывает че-то.
Номер ответа: 6
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #6
Добавлено: 25.04.06 20:57
можно ещё WM_NCLBUTTONDOWN и затем WM_NCLBUTTONUP (эмулировать нажатие на крестик в заголовке).
Или элементарно взять Spy++ и посмотреть, чтоза сообщения приходят в WndProc при закрытии проги.
Номер ответа: 7
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #7
Добавлено: 25.04.06 22:21
в тему: Что винда рассылает всем приложениям когда вырубается?
Номер ответа: 8
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #8
Добавлено: 25.04.06 22:35
Чёрные метки.
Номер ответа: 9
Автор ответа:
gvozd
Разработчик Offline Client
Вопросов: 164
Ответов: 1317
Web-сайт:
Профиль | | #9
Добавлено: 26.04.06 08:50
Hooligan, а можно поподробнее? И чем найти hWnd главного окна программы?
Номер ответа: 10
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #10
Добавлено: 26.04.06 11:48
Смотря от какого известного параметра ты ищешь
Номер ответа: 11
Автор ответа:
gvozd
Разработчик Offline Client
Вопросов: 164
Ответов: 1317
Web-сайт:
Профиль | | #11
Добавлено: 26.04.06 12:10
LOL, от PID.
Разобрался с WM_QUIT, оказывается нужно отправлять через PostMessage, а не через SendMessage. Даже КАВ закрывается, правда служба остается (не в курсе, как и ее закрыть?). А Опера закрывается, но при следующем запуске пишет, что была завершена не верно.
Для поиска hWnd использую функцию:
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
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #12
Добавлено: 26.04.06 13:33
когда винда вырубается, или рестарт, приложениям рассылается WM_QUERYENDSESSION.
Если приложение согласно добровольно выгрузиться, оно подтверждает это, возвращая 1 при обработке сообщения. Если нет - возвращает 0.
Когда все приложения завершат неотложные дела и подтвердят готовность к завершению, им рассылается WM_ENDSESSION. И капут.
Номер ответа: 13
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #13
Добавлено: 26.04.06 15:55
Ну знач каспу WM_QUERYENDSESSION, как верёт 1 WM_ENDSESSION и теоретически службу он должен выгрузить