узнать о завершении работы компа
Есть такая проблема:
До завершения своей работы программа удаляет сама себя, однако если выключить комп, функция самоудаления не вызывается и exe-шник остается на харде.
Вопрос: есть ли какой-нибудь способ узнать о завершении работы компьютера (или текущего процесса), чтобы корректно завершить работу проги?
Прога не имеет окна, поэтому словить WM_QUERYENDSESSION не представляется возможным.
На мой взгляд без сообщений проблематично. Поллинг чего-л не расматриваю.
Закинуть cmd.exe с командой удаления программы в одноразовый автозапуск.
Либо вариант hardcase - RunOnce.
фишка там заключалась в том, что эта функция создавала какое-то невидимо окно, которое могло ловить сообщения
Так работают многие плееры, которые поддерживают "удалённый контроль" - JetAudio например.
Есть вроде даже специальные окна для этого дела,в оригинале message-only windows имя им.Ищите в MSDN,да обрящете(в самом деле,не искать же другим за вас)
Цитата:
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
так что, может и не поймать ( но в любом случае попробовать стОит, мне кажется
если программа имеет админские права или локальной службы, то проще всего использовать
Код:
MoveFileExW(Path, NULL, MOVEFILE_DELAY_UNTIL_REBOOT);
Стоп,это что ж получается,что с помощью message-only window не получится отлавливать сообщение о завершении работы?
у меня тоже есть подозрения что не будет работать, но надо проверять или искать уточнение этой инфы
Цитата: @pixo $oft
Стоп,это что ж получается,что с помощью message-only window не получится отлавливать сообщение о завершении работы?
Недавно проверил - действительно, не сработало.
Решил проблему использованием обычного невидимого окошка)