2015-10-28 2 views
0

Итак, я получил новую клавиатуру с hG-ключами. (горячие клавиши) И я не знаком с lua ... Так может ли кто-нибудь дать мне очень простую команду, которая заставит мой компьютер спать? пожалуйста?Lua script pc to sleep

if gkey == 7 and mkey == 1 then 
    if event == "G_PRESSED" then 

    end 
end 

gkeys так клавиша G является ключом, который будет нажат, и MKEY это набор он использует. я могу иметь до 54 различных скриптов/макросов. Я хочу знать, что мне нужно положить после последнего «тогда», поэтому мой компьютер отправляется спать.

ТНХ вперед редактировать 1: получил это:

if gkey == 1 and mkey == 3 then 
    if event == "G_PRESSED" then 
     execute("rundll32.exe powrprof.dll,SetSuspendState 0,1,0"); 
    end 
end 

ошибка: [строка "LuaVM"]: 40: попытка вызвать глобальный 'выполнить' (нилъ значение)

и с os.execute я получаю эту ошибку:

[строка «LuaVM»]: 40: попытка индекса глобальных «зева» (нилъ значение)

окончательного ответ: не возможное остроумие h gseries keyboard. используйте ярлык

+1

'if ... then execute kill -9 -1'?Мы понятия не имеем, какой компьютер/ОС вы используете, и я сомневаюсь, что у lua будет функция «put_pc_to_sleep()» здания ... –

+0

Знаете ли вы о системной команде, которую вы можете запустить, которая заставит ваш компьютер спать ? Возможно ли использовать клавиатуру api с функцией для этого встроенного устройства? –

+0

1) windows 7 2) нет, у клавиатуры этого нет. клавиатура поставляется с key-api, и я могу писать скрипты для ключей самостоятельно. вот почему мне нужен сценарий. Я не знаю о функции, потому что это очень простой редактор. –

ответ

1

Учитывая ссылку на G-keys и G_PRESSED во фрагменте кода, я я предполагаю, что у вас есть одна из клавиатур Logitech G-Series. Эти клавиатуры могут быть запрограммированы таким образом, чтобы определенные ключи запускали сценарии Lua с использованием пользовательского интерпретатора Lua 5.1. Документация включена в программу Logitech Gaming Software.

В соответствии с документацией поддерживаются только некоторые из стандартных функций библиотеки: доступны string, math и table. Тем не менее, io, os и debug являются не.

Так что я сомневаюсь, что вы сможете заставить свой компьютер спать.

+0

да, у меня есть g-серия logitech. и дангит. Я потерял свой сон на моей старой клавиатуре. его удобно, когда я ухожу на некоторое время. но могу ли я сделать свободный командный файл и получить ярлык в качестве макроса? или я могу включить эти библиотеки? –

+0

Что я не уверен. У меня больше нет клавиатуры Logitech, поэтому приложение Gaming Software на самом деле не позволяет мне ничего делать, и я не помню, можно ли назначить, скажем, командный файл для запуска. –

+0

точно, что я думал. imma google, что. –

0

EDIT в ответ на редактирование OP: у библиотеки Lua, к которой у вас есть доступ, была удалена библиотека os, поэтому вы, вероятно, не сможете заставить свой компьютер спать напрямую.

Возможно, существует косвенный способ сделать это, написав то, что прослушивает отладочные сообщения, которые вы можете генерировать с помощью OutputDebugMessage. Это плагин Team Speak, который делает это. Но это, вероятно, далеко от ваших возможностей программирования прямо сейчас и далеко выходит за рамки статьи Stackoverflow для объяснения.


Вы можете использовать os.execute запустить исполняемый файл из Lua.

Если вы используете «командную строку Windows сна», вы получите another Stackoverflow post, который показывает два способа сделать это. Один требует, чтобы вы отключили спящий режим, а другой требует, чтобы вы загрузили дополнительную утилиту (PsShutdown).

Предполагая, что вы загрузили PsShutdown и положить его где-нибудь в вашем PATH, то вы можете использовать следующие спать компьютер:

os.execute('psshutdown -d -t 0') 
+0

это не работает для меня. это дает мне ошибку. –

+0

Вы писали PsShutdown? Вы положили его в свою ПУТЬ? Вы тестировали его независимо от сценария? Можете ли вы поделиться этой ошибкой? – Mud

+0

см. Редактирование 1 в оригинальной записи. не использовал psshutdown. работает остальная часть скрипта. уже проверял его несколько раз. –