[архив - Часть 2] AutoIt скрипты

Ответить
 • Просмотры: 32
Аватара пользователя
Creat0R

Re: [архив - Часть 2] AutoIt скрипты

Сообщение Creat0R »

На оф. форуме нашёл
способ проверки нажатии какой либо клавиши
, давно искал...



Правда там используется файл, с которого берутся (не)всевозможные варианты для клавиш, вот я и решил переделать тот пример в функцию, и вот что получилось:







Код:

Код: Выделить всё

While 1
    $KeyIsPressed = _KeyIsPressed()
    If $KeyIsPressed Then MsgBox(64, "Pressed/Clicked:", $KeyIsPressed)
    Sleep(10)
WEnd
Func _KeyIsPressed()
    Local $KeyBoardLayoutArr = StringSplit("{LMouse}|{RMouse}|{}|(MMouse}|{}|{}|{}|{BACKSPACE}|{TAB}|{}|{}|{}|{ENTER}|{}|{}|{SHIFT}|{CTRL}|{ALT}|{PAUSE}|{CAPSLOCK}|{}|{}|{}|{}|{}|{}|{ESC}|{}|{}|{}|{]|{SPACE}|{PGUP}|{PGDN}|{END}|{HOME}|{LEFT}|{UP}|{RIGHT}|{DOWN}|{SELECT}|{PRINTSCREEN}|{}|{PRINTSCREEN}|{INSERT}|{DEL}|{}|0|1|2|3|4|5|6|7|8|9|{}|{}|{}|{}|{}|{}|{}|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|{LWIN}|{RWIN}|{APPSKEY}|{}|{SLEEP}|{numpad0}|{numpad1}|{numpad2}|{numpad3}|{numpad4}|{numpad5}|{numpad6}|{numpad7}|{numpad8}|{numpad9}|{NUMPADMULT}|{NUMPADADD}|{}|{NUMPADSUB}|{NUMPADDOT}|{NUMPADDIV}|{F1}|{F2}|{F3}|{F4}|{F5}|{F6}|{F7}|{F8}|{F9}|{F10}|{F11}|{F12}|{F13}|{F14}|{F15}|{F16}|{F17}|{F18}|{F19}|{F20}|{F21}|{F22}|{F23}|{F24}|{}|{}|{}|{}|{}|{}|{}|{}|{NUMLOCK}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{SHIFT}|{SHIFT}|{CTRL}|{CTRL}|{ALT}|{ALT}|{BROWSER_BACK}|{BROWSER_FORWARD}|{BROWSER_REFRESH}|{BROWSER_STOP}|{BROWSER_SEARCH}|{BROWSER_FAVORITES}|{BROWSER_HOME}|{VOLUME_MUTE}|{VOLUME_DOWN}|{VOLUME_UP}|{MEDIA_NEXT}|{MEDIA_PREV}|{MEDIA_STOP}|{MEDIA_PLAY_PAUSE}|{LAUNCH_MAIL}|{LAUNCH_MEDIA}|{LAUNCH_APP1}|{LAUNCH_APP2}|{}|{}|;|{+}|,|{-}|.|/|`|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|[|\|]|'", "|")
    Local $a_R
    For $i = 0 To 165
        $a_R = DllCall("user32.dll", "int", "GetAsyncKeyState", "int", '0x' & Hex($i,2))
        If Not @error And BitAND($a_R[0], 0x8000) = 0x8000 Then Return $KeyBoardLayoutArr[$i]
    Next
    Sleep(40)
    Return 0
EndFunc



Если было что-то нажато, возвращается нажатая клавиша (или даже кнопка мышки), если ничего не нажимается (при проверке в цикле), возвращается 0.



P.S

Просчитать ВСЕ возможные нажатия клавиш, мне увы, не удалось Изображение.
Аватара пользователя
Dirk Diggler

Re: [архив - Часть 2] AutoIt скрипты

Сообщение Dirk Diggler »

Как из AutoIt открыть ссылку в дефолтном браузере?
Аватара пользователя
Creat0R

Re: [архив - Часть 2] AutoIt скрипты

Сообщение Creat0R »

Maza Faka


Цитата Maza Faka:



Как отключить монитор используя WinApi?
[архив - Часть 2] AutoIt скрипты




Посмотрите функцию
MonitorToggle()
от greenmachine.
Аватара пользователя
proxy

Re: [архив - Часть 2] AutoIt скрипты

Сообщение proxy »

Доброе утро всем Изображение)



есть файл1 и файл2

в фале2 описанна функция какая-нибуть

а в фале1 вызов этой функции



в autoit это вообще реально?



т.е. запустить файл1 и из него считать функцию из файла2

и вернуть данные на обработку обратно файл1 .. - ?
Аватара пользователя
amel27

Re: [архив - Часть 2] AutoIt скрипты

Сообщение amel27 »

Creat0R
Цитата:



picasso предложил раньше решение без использования сторонних Dll'ок



да, видел... не слежу - случайно наткнулся Изображение ... Первая версия (через DLL) была несовместима с диалоговыми API-функциями, последний вариант пока пробовал... Однако, конкуренция с AutoHotkey пошла на пользу. Изображение



proxy

собственно, макрос #include как раз и загружает функции, определенные в других AU3-файлах, примеры смотри в справке или тут на форуме... А что значит "вернуть данные на обработку обратно файл"?.. данные читаются и записываются в файл, а обрабатываются "процессом" (или точней - "потоком").
Аватара пользователя
Creat0R

Re: [архив - Часть 2] AutoIt скрипты

Сообщение Creat0R »

amel27


Цитата:



макрос #include как раз и загружает функции, определенные в других AU3-файлах



Немного дополню...



Загружать он (макрос) умеет не только AU3-файлы, но и любые(?) другие текстовые файлы Изображение (к примеру: #Include "MyFunctions.fnc").
Аватара пользователя
Dirk Diggler

Re: [архив - Часть 2] AutoIt скрипты

Сообщение Dirk Diggler »

как прочитать/установить права NTFS на папку\файл?? Я даже это в микрософтовском vbs-репозитории не нашел.
Аватара пользователя
Dirk Diggler

Re: [архив - Часть 2] AutoIt скрипты

Сообщение Dirk Diggler »

Maza Faka
Цитата Maza Faka:



не понятны числа "274" и "61808", что они означают?
[архив - Часть 2] AutoIt скрипты




WM_SysCommand = 0x0112

WM_SysCommand - Уведомляет окно о том что выбран именно системный элемент меню, обычно эта команда высылается окну если пользователь щёлкает кнопку свёртывания, развёртывания или закрытия, на панели окна справа.

Что такое SC_MonitorPower = 0xF170 я к сожалению не знаю... самому интересно...
Аватара пользователя
Sanja Alone

Re: [архив - Часть 2] AutoIt скрипты

Сообщение Sanja Alone »

Цитата Maza Faka:



что они означают?



http://msdn2.microsoft.com/en-us/library/ms646360.aspx




Creat0R
Цитата:



Нужно отключить полностью интернет, и подключить через несколько секунд заного..



к примеру, временно выставить настройки на несуществующий прокси
Аватара пользователя
Creat0R

Re: [архив - Часть 2] AutoIt скрипты

Сообщение Creat0R »

Я немного изменил функцию от greenmachine.



Код:

Код: Выделить всё

MonitorState(2) ; выключить
Sleep(20000)
MonitorState(-1) ; включить
;~ $mode:
;~ -1 - переводит монитор в нормальный, рабочий режим;
;~ 0 - переводит монитор в режим легкого засыпания
;~ 1 - переводит монитор в спящий режим
;~ 2 - монитор выключается.
Func MonitorState($mode)
	$Old_Opt = Opt("WinTitleMatchMode", 4)
	Local Const $WM_SYSCommand = 0x112
	Local Const $SC_MonitorPower = 0xF170
	Local $HWND = WinGetHandle("classname=Progman")
	DllCall("user32.dll", "int", "SendMessage", "hwnd", $HWND, "int", $WM_SYSCommand, _
	"int", $SC_MonitorPower, "int", $mode)
	Opt("WinTitleMatchMode", $Old_Opt)
EndFunc

P.S. Некоторые режимы($mode), поддерживаются не всеми мониторами.

Например у меня не работает режим легкого засыпания($mode=0).
Ответить

Вернуться в «AutoIt»