![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| Slawanix |
|
||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 29.7.2004 Где: г. Великие Луки Репутация: нет Всего: 1 |
Уважаемые коллеги, помогите разобраться с ситуацией:
Выключаю компьютер под управлением XP Home Edition без SP функциями из всем известного хелпа DRKB на нашем форуме:
Чтобы выключить PC вызываю процедуру Shutdown и Происходит следующее: 1) если вызываю в запущеном на выполнение приложение в среде Delhi7, то комп вырубается, но не до конца, т.е. пишет
как в старые добрые времена при AT мамках; т.е. нужно все равно жать кнопочку POWER. 2) если вызываю Shutdown из приложения, запущенного в Винде, то пишет
Как лечить? Ведь в факе написано что моно выключить любую винду.(у меня АТХ и сама Винда лекго вырубает комп). С уважением, Slawanix. --------------------
моск кипит |
||||||
|
|||||||
| Guest |
|
|||
|
Unregistered |
попробуй этот вариант
Это сообщение отредактировал(а) p0s0l - 29.9.2005, 11:30 |
|||
|
||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 3 Всего: 108 |
прошу прощения забыл зарегистрироваться.
поясняю: компьютер должен выключиться, при этом он не будет запрашивать работающие приложения на сохранение данных. -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| Slawanix |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 29.7.2004 Где: г. Великие Луки Репутация: нет Всего: 1 |
Albinos_x, я еще не особо секу в этом, не совсем понял, куда это нужно вставить. Что в Shutdown, это я понял. Но, по-моему, там есть похожие строки. Подскажи, пожалуйста. Или ты предлагаешь просто использовать твой код без GetWinVersion?
С уважением, Slawanix. Это сообщение отредактировал(а) Slawanix - 26.9.2004, 20:35 --------------------
моск кипит |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 14 Всего: 112 |
1)
Попробуй вместо EWX_SHUTDOWN поставить EWX_POWEROFF, хотя лично у меня вырубилось с EWX_SHUTDOWN... 2)
1 и 2 случай - это одна и та же прога ? К тому же, имхо, прога с этим кодом не запустится вообще на Win9x из-за статической загрузки DLL - на девятках нет функций для работы с привилегиями и токенами... Надо динамически подключать библиотеки в случае 2k/XP и получать привилегию... -------------------- С уважением, г-н Посол. |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 14 Всего: 112 |
Это ты похоже пытался сделать выключение компа в XP способом, который работает в 98/Me: RunDLL32 shell32,SHExitWindowsEx 8 (или же напрямую вызывал эту функцию). Под XP можно также вырубить, если выполнить следующую командную строку: shutdown -s -f -t 0 -------------------- С уважением, г-н Посол. |
|||
|
||||
| Slawanix |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 29.7.2004 Где: г. Великие Луки Репутация: нет Всего: 1 |
p0s0l , спасибо тебе: с Повероффом все отключается, причем из под ограниченного пользователя тоже без проблем.
Ну, вообще, я писал таймер отключения для себя под XP, но, кто знает, что будет дальше. Совет дельный, благодарю! С уважением, Slawanix. Это сообщение отредактировал(а) Slawanix - 2.10.2004, 00:00 --------------------
моск кипит |
||||
|
|||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 3 Всего: 108 |
Slawanix
У меня этот код работает без GetWinVersion и под ХР, и под МЕ, под 9х не пробовал, но думаю, тоже будет работать. если под 9х не сработает, то вместо : if AdjustTokenPrivileges(HToken,false,Tkp,0,nil,ReturnLength) then begin ExitWindowsEx(EWX_FORCE or EWX_POWEROFF,0); end; попробуй подставить : AdjustTokenPrivileges(HToken,false,Tkp,0,nil,ReturnLength) ; ExitWindowsEx(EWX_FORCE or EWX_POWEROFF,0) -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| Slawanix |
|
||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 29.7.2004 Где: г. Великие Луки Репутация: нет Всего: 1 |
Albinos_x , привет! Слушай, по-моему, Win Me тоже относится к девяти-иксовым.
А насчет привелегий, p0s0l писал, что под девятыми (95, 98, Ме) нет функций для работы с привелегиями и токенами. Вот, лирическое отступление. Спасибо, что не оставляешь попытки помочь мне С уважением, Slawanix. Добавлено @ 21:26
p0s0l , прошу прощения, сразу не заметил. Да, прога одна и таже была. С уважением, Slawanix. --------------------
моск кипит |
||||||
|
|||||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 3 Всего: 108 |
так и есть, если в код вставить ELSE с сообщениями о том, что привелегии не получены, то они как раз будут у тебя вылетать, но ошибки выскакивать не будет, поэтому я и предложил использовать код под девятые без условий. Тогда, даже если привелегии получены не будут (если это конечно не ошибка в ХР), то компьютер всё равно выключится. -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| Slawanix |
|
||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 29.7.2004 Где: г. Великие Луки Репутация: нет Всего: 1 |
Вот, только что поробовал, в таком виде она у меня сработала, тоже все Ok. Только под 9x пока нет возможности проверить.
С уважением, Slawanix. Добавлено @ 22:24
Насколько я понял, за это флажок EWX_FORCE отвечает? --------------------
моск кипит |
||||||
|
|||||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 3 Всего: 108 |
EWX_FORCE
отвечает за то, что винда будет выключаться в форсированном режиме, т.е. запрос работающим приложениям на закрытие посылаться ей не будет. Не понятно зачем тебе константа, она у тебя ни где не используется?!.. -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 3 Всего: 108 |
Привожу флаги:
EWX_LOGOF : Смена пользователя. EWX_POWEROFF : Выключение компьютера иего системы питания, если он конечно это поддерживает. В NT клонах винды срабатывает если процесс имеет привелегию SE_SHUTDOWN_NAME. EWX_REBOOT : перезагрузка. В NT клонах винды срабатывает если процесс имеет привелегию SE_SHUTDOWN_NAME. EWX_SHUTDOWN : выключение компьютера без выключения питания. Если в работающих приложениях предусмотренно запросы на сохранение данных, то они выполняется. В NT клонах винды срабатывает если процесс имеет привелегию SE_SHUTDOWN_NAME. EWX_FORCE : как я уже говорил, форсированное выключение компьютера. Винда не посылает работающим приложениям сообщение WM_QUERYENDSESSION и WM_ENDSESSION. А следовательно эти приложения не делают запросов на сохранение данных пользователю. В NT клонах винды срабатывает если процесс имеет привелегию SE_SHUTDOWN_NAME. -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| Slawanix |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 29.7.2004 Где: г. Великие Луки Репутация: нет Всего: 1 |
Да со старого кода осталось, не проследил. В этом коде еще одна переменная не используется, сейчас только заметил, это tkpo. С остальным понятно, спасибо. С Уважением, Slawanix. --------------------
моск кипит |
|||
|
||||
![]()
|
| Правила форума "Delphi: WinAPI и системное программирование" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |