Кнопка включения не подходит, т.к после такого выключения приходится общаться с вариантами загрузки системы...... (
PC Power OFF
Собственно интересует безопасный (для компа ) способ гарантированного выключения от внешнего источника, контактной пары например.
Кнопка включения не подходит, т.к после такого выключения приходится общаться с вариантами загрузки системы...... (
Кнопка включения не подходит, т.к после такого выключения приходится общаться с вариантами загрузки системы...... (
ученые долго думали,в чем измерять частоту.... С тех пор и пишут Hz
- Реклама
Мне видится только программная подача команды на выключение компьютера. Причём с принудительным завершением подвисших процессов (выставление соответствующих флагов). Иначе часты случаи, когда что-то блокирует нормальное выключение. А программа должна опрашивать какой то порт на факт какого то события. Кстати, нажатие кнопки power не даёт 100% гарантии, что комп выключится, если конечно, не держать 4 сек. Тогда да, он аварийно выключается, и впоследствии с запросом вариантов загрузки. А если в настройках питания указать реакцию на кнопку Power как Выключение, то кратковременное нажатие приводит к нормальному завершению работы системы.
Программно завершить работу компьютера. Выглядеть это будет примерно так, с использованием различных режимов выключения:
ExitWindowsEx(EWX_LOGOFF or ewx_force,0);
завершает работу всех запущенных в системе процессов, сохраняя данные приложения, вызвавшего эту функцию
ExitWindowsEx(EWX_SHUTDOWN or ewx_force,0);
останавливает работу системы в безопасный момент времени. Все буферы очищаются с сохранением данных на диске, все процессы останавливаются
ExitWindowsEx(EWX_REBOOT or ewx_force,0);
перезагрузка системы
ExitWindowsEx(EWX_FORCE or ewx_force,0);
завершает работу всех запущенных в системе приложений, не посылая им сообщения WM_QUERYENDSESSION и WM_ENDSESSIO. Это может вызвать потерю не сохраненных данных
ExitWindowsEx(EWX_POWEROFF or ewx_force,0);
завершает работу компьютера с выключением питания, если система поддерживает автоуправление питанием
ExitWindowsEx(EWX_FORCEIFHUNG or ewx_force,0);
завершает работу всех запущенных в системе приложений если система висит
Но это я про виндовс. про другие системы не в курсе
Программно завершить работу компьютера. Выглядеть это будет примерно так, с использованием различных режимов выключения:
ExitWindowsEx(EWX_LOGOFF or ewx_force,0);
завершает работу всех запущенных в системе процессов, сохраняя данные приложения, вызвавшего эту функцию
ExitWindowsEx(EWX_SHUTDOWN or ewx_force,0);
останавливает работу системы в безопасный момент времени. Все буферы очищаются с сохранением данных на диске, все процессы останавливаются
ExitWindowsEx(EWX_REBOOT or ewx_force,0);
перезагрузка системы
ExitWindowsEx(EWX_FORCE or ewx_force,0);
завершает работу всех запущенных в системе приложений, не посылая им сообщения WM_QUERYENDSESSION и WM_ENDSESSIO. Это может вызвать потерю не сохраненных данных
ExitWindowsEx(EWX_POWEROFF or ewx_force,0);
завершает работу компьютера с выключением питания, если система поддерживает автоуправление питанием
ExitWindowsEx(EWX_FORCEIFHUNG or ewx_force,0);
завершает работу всех запущенных в системе приложений если система висит
Но это я про виндовс. про другие системы не в курсе
- Сообщения: 3385
- Зарегистрирован: Пн окт 11, 2010 19:00:08
Комп можно программно выключить, например, с помощью такого кода. Во вложении исполняемый файл, созданный из этого кода, запустив который можно выключить комп.
Код: Выделить всё
Structure MyLUID
LowPart.l
HighPart.l
Attributes.l
EndStructure
Structure MyTOKEN
PrivilegeCount.l
LowPart.l
HighPart.l
Attributes.l
EndStructure
Procedure PowerOff() ; Выключение компьютера
hdlProcessHandle.l
hdlTokenHandle.l
lBufferNeeded.l
tmpLuid.MyLUID
tkp.MyTOKEN
tkpNewButIgnored.MyTOKEN
hdlProcessHandle = GetCurrentProcess_()
OpenProcessToken_(hdlProcessHandle, #TOKEN_ADJUST_PRIVILEGES | #TOKEN_QUERY, @hdlTokenHandle)
SysName.s=""+Chr(0)
Name.s="SeShutdownPrivilege"+Chr(0)
Erg.l=LookupPrivilegeValue_(SysName, Name, @tmpLuid)
tmpLuid\Attributes = #SE_PRIVILEGE_ENABLED
tkp\PrivilegeCount = 1
tkp\LowPart = tmpLuid\LowPart
tkp\HighPart = tmpLuid\HighPart
tkp\Attributes = tmpLuid\Attributes
Erg.l = AdjustTokenPrivileges_(hdlTokenHandle,0,@tkp,SizeOf(MyTOKEN),@tkpNewButIgnored,@lBufferNeeded)
Erg.l = ExitWindowsEx_((#EWX_SHUTDOWN |#EWX_POWEROFF | #EWX_FORCE), 0)
EndProcedure
PowerOff()- Вложения
-
- PowerOFF.zip
- (1.14 КБ) 253 скачивания
Часто бывают случаи, когда перед выключением, какая-то из программ спрашивает что-либо ( сохранить, добавить или " а вы уверены?").
Тогда не получится однозначного выключения.
Как запустить код я не в курсе тем более.
Вообще это все затевается для ограничения времени работы компа, БЕЗ применения какого-либо программного кода.
Т.к. всегда имеется возможность обойти ее.
Думаю прикрутить таймер такой http://arv.radioliga.com/content/view/179/44/
одним из каналов которого можно будет заблокировать кнопку включения на определенный промежуток (1 -2 часа), а вот с выключением пока заминка.
Есть задумка что-бы по таймеру отключать сигнал датчика вращения с процессорного кулера, тогда система вроде как должна полюбому не в аварийном режиме потухнуть.
Кто что думает по этому поводу ?
Или есть какие еще варианты подобного выключения?
Тогда не получится однозначного выключения.
Как запустить код я не в курсе тем более.
Вообще это все затевается для ограничения времени работы компа, БЕЗ применения какого-либо программного кода.
Т.к. всегда имеется возможность обойти ее.
Думаю прикрутить таймер такой http://arv.radioliga.com/content/view/179/44/
одним из каналов которого можно будет заблокировать кнопку включения на определенный промежуток (1 -2 часа), а вот с выключением пока заминка.
Есть задумка что-бы по таймеру отключать сигнал датчика вращения с процессорного кулера, тогда система вроде как должна полюбому не в аварийном режиме потухнуть.
Кто что думает по этому поводу ?
Или есть какие еще варианты подобного выключения?
ученые долго думали,в чем измерять частоту.... С тех пор и пишут Hz
Можно перед выключением не делать Shutdown, а делать Hibernate, тогда мнения программ по этому поводу никто спрашивать не будет. А после снижения энергопотребления БП компа неким устройством уже размыкать 220. Ещё одним преимуществом Hibernate является то, что это процесс достаточно детерминированный по времени, в отличие от Shutdown.
In theory, theory and practice are the same. In practice, they're not.
- Реклама
Это конечно хороший способ,только в моем случае нет желания использовать дополнительные программы.
Ведь их (проги) надо как-то вызывать для выполнения !
Вся задумка именно в АППАРАТНОМ выключении и блокировке, без сторонних програмулин.
Конечно , можно еще прикрутить платку от USB клавы внутрь таймера, подключить к свободному порту внутреннему и управлять кнопкой выключения питания( а лучше Hibernate).
Ведь их (проги) надо как-то вызывать для выполнения !
Вся задумка именно в АППАРАТНОМ выключении и блокировке, без сторонних програмулин.
Конечно , можно еще прикрутить платку от USB клавы внутрь таймера, подключить к свободному порту внутреннему и управлять кнопкой выключения питания( а лучше Hibernate).
ученые долго думали,в чем измерять частоту.... С тех пор и пишут Hz
- Сообщения: 46804
- Зарегистрирован: Пт янв 23, 2009 19:20:05
Seal, так Вам уже предложили - в настройках "форточек" в качестве реакции на нажатие кнопки power поставить не выключение системы, а переход в режим сна... Тогда и данные сохранятся, и, что приятно, при последующем включении всё восстановится в том виде, как было при отключении (и гораздо быстрее, чем при обычном включении, если, конечно, в Вашем компьютере не слишком много памяти...
). И никаких программ не нужно - просто кратковременное нажатие на кнопку... На клавиатуре, кстати, для перехода в режим сна часто есть отдельная кнопка...
Да, с клавиатурой все понятно.
Только таймер планируется установить в системный блок.
Поэтому и спрашивал про способы выключения.
Только таймер планируется установить в системный блок.
Поэтому и спрашивал про способы выключения.
ученые долго думали,в чем измерять частоту.... С тех пор и пишут Hz
С детьми боретесь ?
Известная проблема
Можно внутри корпуса разместить USB HID c таймером внутри, который посылает винде "Спать". Только сразу из своего опыта могу сказать, надо ещё батарейное питание, и блокировку включения после выключения, хотя бы на час
PS Но потом дети быстро учатся орудовать отверткой и выковыривать закладки
Известная проблема
Можно внутри корпуса разместить USB HID c таймером внутри, который посылает винде "Спать". Только сразу из своего опыта могу сказать, надо ещё батарейное питание, и блокировку включения после выключения, хотя бы на час
PS Но потом дети быстро учатся орудовать отверткой и выковыривать закладки
In theory, theory and practice are the same. In practice, they're not.
Посмотрите как управляет компом BackUPS APC-600. Он какой-то вывод com-порта соединяет с корпусом, компьютер воспринимает это как сигнал о пропадании сетевого питания и завершает свою работу. Нужно только на компе в профилях электропитания указать, что используется UPS APC и установить через сколько выключатся. А для борьбы с детьми в Win7 и так есть родительский контроль с настраиваемым временем доступа, правами и т.д.
Нет, он использует текстовый протокол, который надо будет проэмулировать.dmirrr писал(а): Он какой-то вывод com-порта соединяет с корпусом, компьютер воспринимает это как сигнал о пропадании сетевого питания и завершает свою работу.
Общаемся со SMART UPS’ом
Для того чтобы можно было посылать команды UPS’у и получать на них реакцию, нужна самая обычная терминальная программа. Да-да! Именно та, которая используется для работы с модемом, только ее нужно будет чуть поднастроить. В качестве примера я возьму наиболее популярную среди такого класса программ – minicom. В твоем дистрибутиве она точно должна быть. В крайнем случае, ищи на дистрибутивных дисках. Становимся root’ом и запускаем minicom в режиме настройки:
# minicom -s
Перед глазами видим меню настроек и переходим в подменю «Настройка последовательного порта».
В поле «Последовательный порт» (A) вписываем порт, на котором находится UPS, для поля «Скорость/Четность/Биты» (E) устанавливаем значение «2400 8N1». Теперь переходим в подменю «Модем и дозвон». В поле «Строка инициализации» (A) нужно написать «Y\0^M», для того чтобы при запуске minicom’а UPS переходил в режим мониторинга. В поле «Строка сброса» пишем «Y^M» и в «Строка разрыва связи» пишем «R\0^M» – это чтобы при выходе из minicom’a UPS сохранял свои настройки и выключал режим мониторинга (для UPS’ов третьего поколения Back-UPS PRO, SMART-UPS (v/s)).
Теперь можно смело запускать minicom и опрашивать свой UPS. Сразу после запуска minicom’а в окне появится сообщение «SM» – это значит, что UPS перешел в режим мониторинга и готов выполнять команды. Я не советую нажимать подряд все клавиши на клавиатуре и проверять, какая что значит, – это может окончиться печальными последствиями.
Для начала советую нажать клавишу «а», после чего UPS выведет информацию о протоколе и поддерживаемых командах (в конце строки). Приведу описание, как мне кажется, наиболее интересных и полезных команд:
A – тест звука и индикаторов на UPS’е;
L – входное напряжение;
P – процент потребляемой мощности внешней нагрузкой;
U – имитация сбоя питания;
W – тест работоспособности;
X – тест внутренних аккумуляторов (OK – все хорошо, BT – маленькая емкость, NG – тест не пройден);
f – процент уровня заряда аккумуляторов;
l – минимальное входное напряжение, при котором UPS переключается на питание от аккумуляторов;
s – чувствительность к изменению напряжения в сети (H – высокая, M – средняя, L – низкая).
Рекомендую нажать клавишу «U» или просто отключить на несколько секунд питание, и посмотреть, какие сообщения выдает UPS. Несмотря на всю серьезность такого устройства, логика его работы достаточно проста.
Если во время работы UPS’а в сети происходит сбой или просто пропадает питание, UPS посылает каждые 30 секунд через свой порт сообщение в виде символа «!», который сигнализирует, что UPS перешел на питание от внутренних батарей. При восстановлении питания в нормальное состояние (от сети), UPS сообщает об этом, посылая в порт символ «%».
Вот, собственно, и все. Операционной системе остается лишь наблюдать за данным портом и в зависимости от поступившего с этого порта сообщения выполнять какие-то определенные действия. Если есть желание и навыки в программировании, то можно написать под себя небольшую программку, которая будет все это делать. Ну а для простых смертных уже существуют готовые программные пакеты, которые умеют делать все это и еще много другого.
In theory, theory and practice are the same. In practice, they're not.
А где я говорил о SMARTе?Общаемся со SMART UPS’ом...
SMART и Back-UPS это немного разные продукты с разными функциями и управлением.
Для того, чтоб общаться устройством, он должен иметь хотя бы маленький мозг
http://sxema.ucoz.ua/load/skhemy/kompju ... 55-1-0-114
Хотя с обозначением моделей у APC напряг. Десятилетний APC-600 и современный APC-600 совсем разные модели, с разной начинкой.
я имел ввиду еще вот такие:


Я же не знал, что речь идет о мамонтах и динозаврахdmirrr писал(а):А где я говорил о SMARTе?Общаемся со SMART UPS’ом...
SMART и Back-UPS это немного разные продукты с разными функциями и управлением.
PS А сам я не любитель творчества APC, у меня исторически сложилось, что поклонник Powerware со времен 9115 модели образца 98-го года.
In theory, theory and practice are the same. In practice, they're not.
Ну это не важно, какая модель/фирма и т.д. Главное принцип управления питанием компьютера. Подсказка как задействовать механизмы, которые уже есть в Windows, может и не по прямому назначению, но как по мне результат вполне подобен желаемому: все открытое сохранится, закроется и компьютер выключится.
Вообще это все затевается для ограничения времени работы компа, БЕЗ применения какого-либо программного кода.
Вообще-то идея с применением СОМ порта и настройки электропитания мне вполне приемлема.
Т.К. не требует запуска в фоновом или еще каком режиме дополнительных служб, используем то что уже есть.
Вопрос к знающим, какие выводы на СОМ нужно задействовать ?
Т.К. не требует запуска в фоновом или еще каком режиме дополнительных служб, используем то что уже есть.
Вопрос к знающим, какие выводы на СОМ нужно задействовать ?
ученые долго думали,в чем измерять частоту.... С тех пор и пишут Hz
- Сообщения: 3385
- Зарегистрирован: Пн окт 11, 2010 19:00:08
Вы реально думаете что на COM порте есть выводы, отвечающие за выключение компа?Seal писал(а):Вообще-то идея с применением СОМ порта и настройки электропитания мне вполне приемлема.
Т.К. не требует запуска в фоновом или еще каком режиме дополнительных служб, используем то что уже есть.
Вопрос к знающим, какие выводы на СОМ нужно задействовать ?
Для того чтобы выключить комп через COM порт, нужно на компе запустить программу, которая будет "слушать" порт и при поступлении команды, выключать комп.
Нет,не так я думаю.
Просто в настройках питания ,во вкладке "ИИП" есть выбор порта на котором сидит упс.
По всей видимости этого должно быть достаточным, для запуска сканирования указанного порта.
Просто напросто не доводилось с подобными устройствами работать .
Просто в настройках питания ,во вкладке "ИИП" есть выбор порта на котором сидит упс.
По всей видимости этого должно быть достаточным, для запуска сканирования указанного порта.
Просто напросто не доводилось с подобными устройствами работать .
ученые долго думали,в чем измерять частоту.... С тех пор и пишут Hz
Самое начало топика удивило..
В командной строке вянды попробуйте набрать
Софт уже писать начали.. 
В командной строке вянды попробуйте набрать
Код: Выделить всё
shutdown /?Ничего удивительного не заметил, никакого софта мне не нужно.
Если винда при настройке параметров электропитания запускает службу
сканирования указанного при настройке порта, это то что мне нужно.
Только вот осталось решить, как приспособить таймер к этому порту !?
Если винда при настройке параметров электропитания запускает службу
сканирования указанного при настройке порта, это то что мне нужно.
Только вот осталось решить, как приспособить таймер к этому порту !?
ученые долго думали,в чем измерять частоту.... С тех пор и пишут Hz


