Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Си'шная функция AbortSystemShutdown() (http://forum.oszone.net/showthread.php?t=29853)

Greyman 18-03-2004 13:07 206060

Вроде в С/С++ (в како-нить из реализаций) существует некая функция AbortSystemShutdown()... Здеся ссылачка, где она упоминается:
http://www.computer-mentors.co.uk/ww...sages/592.html
Дык вопрос: Можно ли воспользоваться используемым ею методом стандартными средствами Windows (через rundll или еще как)? Надо бы ярлычек создать, который применяет метод данной функции. Если таких средств нет, то как проще всего скомпилить себе прожечку, котора выполняет только эту функцию?

hasherfrog 18-03-2004 13:18 206061

Читай MSDN. Весь вопрос в привилегиях.

Greyman 18-03-2004 19:45 206062

hasherfrog
Ок, спасибо. Разжевано вроде все достаточно подробно, однако меня все-же интересует возможность использования метода уже непосредственно на прикладном уровне. Неужели обязательно програмулечку компилить придеться?...:(

bilytur 19-03-2004 02:52 206063

Greyman
Эта функция которая отменяет выключение компа.
То есть если вызвать ее в течении тайм-аута перед выключением - то комп не выключиться
Не понимаю зачем она тебе?
кстати работает только на NT/2000/XP


Добавлено:

Если все-таки нужно именно это то могу скомпилить тебе программку (мне это не долго)

вызывать будешь так:
prog.exe "MachineName"

где:
prog.exe - это я тебе скоипилю.
"MachineName" - это имя машины (см описание функции)

Ну или ярлык сделаешь соотв.

Greyman 19-03-2004 06:20 206064

bilytur
Цитата:

Не понимаю зачем она тебе?
Именно для этого и нужна - отменять завершение работы компа. Я поднял в другом топике вопрос вообще об возможных способах, из наиболее "правильных" получил ссылку на эту функцию, вот и пошел ее "рыть"...
Цитата:

Если все-таки нужно именно это то могу скомпилить тебе программку (мне это не долго)
О, будь другом, если не сложно. А то уж больно не хочеться ради одной программульки компилятор опять ставить...

bilytur 19-03-2004 23:55 206065

Ну раз обещал то я сделал что ты просил, только зачем тебе это нужно все равно не пойму.
Читаем описание AbortSystemShutdown:
Цитата:

The AbortSystemShutdown function stops a system shutdown started by using the InitiateSystemShutdown function.
Теперь читаем InitiateSystemShutdown (фрагмент):
Цитата:

...
dwTimeout
[in] Specifies the time (in seconds) that the shutdown dialog box should be
displayed. While this dialog box is displayed, the shutdown can be stopped
by the AbortSystemShutdown function.
Иными словами AbortSystemShutdown сработает только при показе диалога (shutdown dialog)
Во время тайм-аута.
(А во время показа этого диалога ты имхо фиг что запустить сможешь)

При выключении другими функциями:
Например ExitWindows(): ExitWindowsEx():
Она скорей всего не поможет.

Вобщем получился файл ASSD.EXE 6 kB (в архиве 2.5 kB)

Высылаю... (надеюсь rar есть)

bilytur 24-03-2004 02:05 206066

Greyman
Что молчишь как партизан на допросе?
Ты письмо то получил?
Подозреваю что эта функция делает немного не то что ты ожидал, но все равно сообщи хоть пару слов.
Я все-таки старался. Там, между прочим, не так уж все и просто было, немного повозиться пришлось.
Уж не обидел ли я тебя чем?
Сообщи, может что еще придумаем...

Greyman 24-03-2004 05:51 206067

bilytur
О, спасибо, получил. Только пока не поверял че с ней можно сделать. Дома 2000'ми *не пользуюсь, а на работе забываю... Постараюсь проверить...

LodSB 29-03-2004 18:53 206068

a как насчет вызвать "shutdown -a"? Это как раз отмена завершения работы, причем команда shutdown - встроенная в Windows

Greyman 30-03-2004 14:24 206069

LodSB
К сожелению не нашел ее ни в Win2K ни в win98SE :(. *ХР я предпочитаю пока не пользоваться, а на компьютере, где я ее все-таки попробовал, это эффекта не дало. Либо слишком для нее быстро завершение происходит, либо она срабатывает только при отмене завершения работы, выполняемой с определенным таймаутом (-t).

bilytur 31-03-2004 03:05 206070

Объясните мне тупому зачем это вообще надо?
То есть я не понимаю последовательность действий, которая приводит к этой ситуации.

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

Или вокруг тебя куча мелких вредителей которые так и норовят вырубить комп, только отвернись?

Или наконец какой-то злобный админ удаленно постоянно отрубает твой комп?

Greyman 31-03-2004 06:25 206071

bilytur
Цитата:

Объясните мне тупому зачем это вообще надо?
То есть я не понимаю последовательность действий, которая приводит к этой ситуации.
Например нажимаешь завершение работы, и тут вдруг вспоминаешь что забыл отправить письмо своей бабушке.
Ну что-то вроде. Но обычно сложнее, т. к. письмо можно и после перезагрузки отправить. А так бывает, что работаешь в некоторых программах, которые при их завершении автоматом не сохраняют результатов (различные вычисления, тестирования, мониторинг и т.д.), соответственно в лучшем случае придется начинать с начала, а в худшем пропадают важные данные без возвратно.
Цитата:

И так каждый день?
Нет конечно. Но мне, например, достаточно одного раза (пока было уже два), чтоб я озаботился данным вопросом на будущее.

hasherfrog 05-04-2004 09:35 206072


Greyman
Проверьте почту. Там не вирусы. Это я выслал Вам кое-что по теме.


Время: 15:27.

Время: 15:27.
© OSzone.net 2001-