Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

узнать о завершении работы компа

57K
05 апреля 2010 года
sizeofMyBuffer
4 / / 05.04.2010
Здравствуйте, товарисчи!
Есть такая проблема:
До завершения своей работы программа удаляет сама себя, однако если выключить комп, функция самоудаления не вызывается и exe-шник остается на харде.
Вопрос: есть ли какой-нибудь способ узнать о завершении работы компьютера (или текущего процесса), чтобы корректно завершить работу проги?
Прога не имеет окна, поэтому словить WM_QUERYENDSESSION не представляется возможным.
14
05 апреля 2010 года
Phodopus
3.3K / / 19.06.2008
На мой взгляд без сообщений проблематично. Поллинг чего-л не расматриваю.
5
05 апреля 2010 года
hardcase
4.5K / / 09.08.2005
Закинуть cmd.exe с командой удаления программы в одноразовый автозапуск.
253
05 апреля 2010 года
Proger_XP
1.5K / / 07.08.2004
Можно в WM_QUIT прописать свой обработчик, главное, чтобы он не слишком долго выполнялся, а то по таймауту система спросит у юзера "не хочет ли он завершить эту настырную программу, или может отменить выключение?".

Либо вариант hardcase - RunOnce.
355
06 апреля 2010 года
<SCORP>
786 / / 21.10.2006
был какой-то способ для неоконных приложений, чтобы ловить оконные сообщения - специальная штука для всяких лаж типа WM_TIMER и WM_QUERYENDSESSION.... вспомню, как называется - отпишу обязательно.
фишка там заключалась в том, что эта функция создавала какое-то невидимо окно, которое могло ловить сообщения
253
06 апреля 2010 года
Proger_XP
1.5K / / 07.08.2004
Почему фишка? По-моему это обыкновенное создание окна, как обычно, просто без WS_VISIBLE - тогда оно будет висеть в памяти и принимать сообщения, но юзер его не увидит.
Так работают многие плееры, которые поддерживают "удалённый контроль" - JetAudio например.
7
06 апреля 2010 года
@pixo $oft
3.4K / / 20.09.2006
Есть вроде даже специальные окна для этого дела,в оригинале message-only windows имя им.Ищите в MSDN,да обрящете(в самом деле,не искать же другим за вас)
355
09 апреля 2010 года
<SCORP>
786 / / 21.10.2006
Цитата:
A message-only window enables you to send and receive messages. It is not visible, has no z-order, cannot be enumerated, and does not receive broadcast messages. The window simply dispatches messages.


http://msdn.microsoft.com/en-us/library/ms632599(VS.85).aspx#message_only
так что, может и не поймать ( но в любом случае попробовать стОит, мне кажется

8.2K
09 апреля 2010 года
bagie2
299 / / 26.10.2008
можно еще попробовать поставить хук в своем процессе на Zw\NtTerminateProcess и если первый параметр -1 то удаляем себя. но это скорее всего не поможет =)

если программа имеет админские права или локальной службы, то проще всего использовать
 
Код:
MoveFileExW(Path, NULL, MOVEFILE_DELAY_UNTIL_REBOOT);
7
11 апреля 2010 года
@pixo $oft
3.4K / / 20.09.2006
Стоп,это что ж получается,что с помощью message-only window не получится отлавливать сообщение о завершении работы?
8.2K
11 апреля 2010 года
bagie2
299 / / 26.10.2008
у меня тоже есть подозрения что не будет работать, но надо проверять или искать уточнение этой инфы
57K
12 апреля 2010 года
sizeofMyBuffer
4 / / 05.04.2010
Цитата: @pixo $oft
Стоп,это что ж получается,что с помощью message-only window не получится отлавливать сообщение о завершении работы?


Недавно проверил - действительно, не сработало.
Решил проблему использованием обычного невидимого окошка)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог