Доброго времени суток. уважаемые эксперты. У меня к Вам несколько вопросов, а именно: 1. Какие сообщения передает Windows окнам при перезагрузке системы? 2. Что происходит с программой при принудительном еезавершении через Диспетчер задач => Процессы? проблема состоит в том, что использование WMQueryEndSession ловит выключение компьютера, но не перезагрузку и завершение процесса. В чём кроется моя ошибка? Кусочек кода прилагается. Буду рад любой информации, спарвке, мнениям, советам, ссылкам на документацию. За ранее благодарю. С Ув. Дмитрий.
Здравствуйте, Дмитрий! 1. WM_DESTROY 2. Попробуйте отслеживать WM_QUIT. Ответ отправлен: 10.05.2004, 13:48 Отправитель: sir henry Отвечает Boriss
Добрый день, Дмитрий! При закрытии приложения (используя системное меню или вызывая метод закрытия формы), возникают следующие события: FormCloseQuery - действие по умолчанию, устанавливает переменную CanClose в значание TRUE и продолжает закрытие формы. FormClose FormDestroy
Если приложение активно и вы пытаетесь завершить работу Windows (Shut Down), происходят следующие события (с соблюдением последовательности): FormCloseQuery FormDestroy
Метод FormClose в этом случае не вызывается. Вся последовательность событий, происходящую при попытке завершить работу Windows: Windows посылает сообщение WM_QUERYENDSESSION всем приложениям и ожидает ответ. Каждое приложение получает сообщение и возвращает одну из величин: не равную нулю - приложение готово завершить свою работу, 0 - приложение не может завершить
свою работу. Если одно из приложений возвращает 0, Windows не завершает свою работу, а снова рассылает всем окнам сообщение, на этот раз WM_ENDSESSION. Каждое приложение должно снова подтвердить свою готовность завершить работу, поэтому операционная система ожидает ответа TRUE, резонно предполагая, что оставшиеся приложения с момента предыдущего сообщения закрыли свои сессии и готовы завершить работу. Delphi-приложение: возвращает значение TRUE и немедленно вызывает метод FormDestroy, игнорируя при этом метод FormClose. Происходит завершение работы Windows.
Ответ отправлен: 11.05.2004, 13:29 Отправитель: Boriss
Вопрос № 1526
Привет. Небольшая дополнение. >Главное различие (без синтаксиса) - как представлены >строки. В дельфях - или просто string или PChar. В Билдере >будет LPCSTR - указатель на строку. И еще указатели на >структуру. В Дельфях, обычно, они не как указатели, а как >обычная запись (Record). В Билдере именно указатель. Во первых, "как обычная запись", это потому, что используются ссылки (var или const) в объявлениях,а в C++ исп. указатели (хотя если объявить те же API-функции с исп. указателей, а не ссылок, то ничего не изменится - все будет работать) - все равно ассемблерном коде все выглядит одинаково. Я думаю, ты это знал, но следовало бы и это объяснить в ответе на вопрос. Во вторых, не только LPCSTR - указатель на строку, а там еще есть LPTSTR, просто LPSTR и т.д. Например, LPCSTR - это "const char *",
LPSTR - это "char *". Но это так, мелочи...
Вопрос отправлен: 10.05.2004, 03:24
Отправитель: [mtx]Marouder_*forum.vk.net.ru* [Следующий вопрос >>] [Список вопросов]
Отвечает sir henry
Приветствую Вас, [mtx]Marouder_*forum.vk.net.ru*! Я с Вами совершенно согласен :)). Другое дело, что такие подробности надо уже на коде изучать, а я так просто, коротенько, сказал :). В ассемблерном конечно одинаково, но не про ассемблерный же код речь :)). Я сказал о том, что лежит на самом виду. Дальнейшее можно изучать только углубившись. Я, честно говоря, поленился :). Ответ отправлен: 10.05.2004, 13:56 Отправитель: sir henry
Вопрос № 1527
U menya yest DLL fayl napisanniy na C/C++. Ya moqu otkrit yeqo i vzyat spisok functsiy s pomoshyu ExeScope... no kak ya moqu uznat kakiye i skolko parametrov nujno peredat im?
Добрый день, THE_PRO! Используй дизассемблер. Ответ отправлен: 10.05.2004, 21:47 Отправитель: Pawel Отвечает Boriss
Добрый день, THE_PRO! "Обычныу" программы дают только имена, а необычные - диассемблеры - покажут и список параметров Ответ отправлен: 13.05.2004, 12:58 Отправитель: Boriss Отвечает samum2000
Приветствую Вас, THE_PRO! Возьми какой-нибудь дизассемблер (например, W32DASM), открой в нем библиотеку - увидишь и названия всех функций, и типы параметров, и их количество. ____________________________________________________ Voz'mi kakoi-nibud' dizassembler (naprimer, W32DASM), otkroi v nem biblioteku - uvidish' i nazvaniya vseh funktsii, i tip parametrov, i ih kolichestvo. -------------------------- -=Experts helper: testmode=- Ответ отправлен: 12.05.2004, 05:59 Отправитель: samum2000
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.