AbortSystemShutdown

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Alexander N. Samarin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 397
Зарегистрирован: 05.03.2005 (Сб) 20:59
Откуда: Интернат 18 (СУНЦ МГУ), комната 214А, кровать посередине

AbortSystemShutdown

Сообщение Alexander N. Samarin » 26.03.2005 (Сб) 13:27

В AfApiViewer'е есть функция AbortSystemShutdown, в ApiGuide - нет. Не подскажет кто-нибуть, что это такое???
Декларация:
Код: Выделить всё
Function AbortSystemShutdown Lib "advapi32.dll" Alias "AbortSystemShutdownA" (ByVal lpMachineName As String) As Long
На это не смотрите! Это не подпись!!!!!!

Jenizix
Географ
Географ
Аватара пользователя
 
Сообщения: 545
Зарегистрирован: 20.04.2004 (Вт) 20:52
Откуда: Москва

Сообщение Jenizix » 26.03.2005 (Сб) 13:31

ну судя по названию она прекращает ребут системы....типа shutdown -a
Ушел в себя, вернусь не скоро...

Если вам нужно сделать прозрачной только форму, а контролы на ней нет, то вам сюда!!!

Alexander N. Samarin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 397
Зарегистрирован: 05.03.2005 (Сб) 20:59
Откуда: Интернат 18 (СУНЦ МГУ), комната 214А, кровать посередине

Сообщение Alexander N. Samarin » 26.03.2005 (Сб) 13:40

До этого догадался. Запустил выключение системы, затем запустил ее, но не сработало.
Больше никто не пробовал? :lol:
На это не смотрите! Это не подпись!!!!!!

Морфий
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 119
Зарегистрирован: 11.01.2005 (Вт) 18:06

Сообщение Морфий » 26.03.2005 (Сб) 13:59

Код: Выделить всё
Private Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Private Declare Function AbortSystemShutdown Lib "advapi32.dll" Alias "AbortSystemShutdownA" (ByVal lpMachineName As String) As Long

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If UnloadMode = 2 Or UnloadMode = 3 Then

MsgBox "Нельзя выключать компьютер.", vbCritical

AbortSystemShutdown GetPCName
Cancel = -1
End If

End Sub
Вот оно — счастье...

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 26.03.2005 (Сб) 14:03

Вот, хелп из MSDN'а:

AbortSystemShutdown

The AbortSystemShutdown function stops a system shutdown started by using the InitiateSystemShutdown function.


BOOL AbortSystemShutdown(
LPTSTR lpMachineName
);

Parameters
lpMachineName
[in] Pointer to the null-terminated string that specifies the network name of the computer where the shutdown is to be stopped. If lpMachineName is NULL or an empty string, the function stops the shutdown on the local computer.

Полный текст на http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/abortsystemshutdown.asp

Морфий
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 119
Зарегистрирован: 11.01.2005 (Вт) 18:06

Сообщение Морфий » 26.03.2005 (Сб) 14:06

Правда, те приложения, которые получат сообщения WM_QUERYENDSESSION и WM_ENDSESSION раньше твоей, будут закрыты.
Вот оно — счастье...

Морфий
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 119
Зарегистрирован: 11.01.2005 (Вт) 18:06

Сообщение Морфий » 26.03.2005 (Сб) 14:44

Значит, как вариант, можно постараться оказаться первым в списке раздачи сообщений.
Вот оно — счастье...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 26.03.2005 (Сб) 15:47

Постарайся, постарайся :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 28.03.2005 (Пн) 10:07

1. с EWX_FORCE не пашет
2. Привелегии установил?
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

Alexander N. Samarin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 397
Зарегистрирован: 05.03.2005 (Сб) 20:59
Откуда: Интернат 18 (СУНЦ МГУ), комната 214А, кровать посередине

Сообщение Alexander N. Samarin » 28.03.2005 (Пн) 11:55

Морфий писал(а):
Код: Выделить всё
Private Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Private Declare Function AbortSystemShutdown Lib "advapi32.dll" Alias "AbortSystemShutdownA" (ByVal lpMachineName As String) As Long

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If UnloadMode = 2 Or UnloadMode = 3 Then

MsgBox "Нельзя выключать компьютер.", vbCritical

AbortSystemShutdown GetPCName
Cancel = -1
End If

End Sub


Может лучше так:
Код: Выделить всё

Private Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Private Declare Function AbortSystemShutdown Lib "advapi32.dll" Alias "AbortSystemShutdownA" (ByVal lpMachineName As String) As Long

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    If UnloadMode = 2 Or UnloadMode = 3 Then
        AbortSystemShutdown GetPCName
        Cancel = -1

        MsgBox "Нельзя выключать компьютер.", vbCritical
    End If
End Sub


Иначе иа увидим MsgBax, а операционка будет аккуратно закрывать приложения одно за другим.
Сразу вопрос: как получить сообщение об выключении компьютера первым? А то вывел ShutDown на рабочий стол и иногда промахиваюсь :) :D :lol:
На это не смотрите! Это не подпись!!!!!!

xolod
Гуру
Гуру
 
Сообщения: 1162
Зарегистрирован: 15.01.2004 (Чт) 0:42
Откуда: Moscow

Сообщение xolod » 28.03.2005 (Пн) 12:18

Alexander N. Samarin
Никак. Можешь только ловить WM_QUERYENDSESSION в своем приложении и возвращать 0 на этот запрос постоянно (твое приложение и все за ним не закроются).
А выбор о порядке закрытия приложений базируется на каких-то внутренних алгоритмах системы, не поддающихся распознаванию.

Constant ERROR_SUCCESS deprecated. I'm so happy.
Программирование и дизайн – http://www.macrointellect.ru

Alexander N. Samarin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 397
Зарегистрирован: 05.03.2005 (Сб) 20:59
Откуда: Интернат 18 (СУНЦ МГУ), комната 214А, кровать посередине

Сообщение Alexander N. Samarin » 28.03.2005 (Пн) 14:58

xolod писал(а):А выбор о порядке закрытия приложений базируется на каких-то внутренних алгоритмах системы, не поддающихся распознаванию.

Может, в случайном порядке? :) :D :lol:
На это не смотрите! Это не подпись!!!!!!

Alexander N. Samarin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 397
Зарегистрирован: 05.03.2005 (Сб) 20:59
Откуда: Интернат 18 (СУНЦ МГУ), комната 214А, кровать посередине

Сообщение Alexander N. Samarin » 28.03.2005 (Пн) 15:40

Морфий писал(а):
Код: Выделить всё
AbortSystemShutdown GetPCName

А что есть GetPCName?
На это не смотрите! Это не подпись!!!!!!

Морфий
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 119
Зарегистрирован: 11.01.2005 (Вт) 18:06

Сообщение Морфий » 28.03.2005 (Пн) 15:48

Alexander N. Samarin писал(а):А что есть GetPCName?


Это есть имя компьютера, на котором надо отменять выключение.
Если оставить пустым, как в этом случае, то работа идет с локальным компом.
Вот оно — счастье...

xolod
Гуру
Гуру
 
Сообщения: 1162
Зарегистрирован: 15.01.2004 (Чт) 0:42
Откуда: Moscow

Сообщение xolod » 28.03.2005 (Пн) 17:24

2 Alexander N. Samarin
Ну с этим вопросом к первоисточнику. Я тут не советчик.

Constant ERROR_SUCCESS deprecated. I'm so happy.
Программирование и дизайн – http://www.macrointellect.ru

Alexander N. Samarin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 397
Зарегистрирован: 05.03.2005 (Сб) 20:59
Откуда: Интернат 18 (СУНЦ МГУ), комната 214А, кровать посередине

Сообщение Alexander N. Samarin » 28.03.2005 (Пн) 18:00

Попробовал - классная штука для зависающих программ! :) :D :lol: :lol:
На это не смотрите! Это не подпись!!!!!!

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 29.03.2005 (Вт) 4:25

xolod писал(а):А выбор о порядке закрытия приложений базируется на каких-то внутренних алгоритмах системы, не поддающихся распознаванию.

Каждый процесс имеет свои ShutdownParameters, судя из них система и закрывает одни процессы первыми другие вторыми. Устанавливается с помощью
Код: Выделить всё
Private Declare Function SetProcessPriorityBoost Lib "kernel32.dll" (ByVal hProcess As Long, ByVal bDisablePriorityBoost As Long) As Long
الفيجوال بيسك الرابح

Alexander N. Samarin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 397
Зарегистрирован: 05.03.2005 (Сб) 20:59
Откуда: Интернат 18 (СУНЦ МГУ), комната 214А, кровать посередине

Сообщение Alexander N. Samarin » 29.03.2005 (Вт) 10:46

А как? объявление есть, как его использовать? :cry:
На это не смотрите! Это не подпись!!!!!!


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 76

    TopList