|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [архив - Часть 2] AutoIt скрипты |
|
[архив - Часть 2] AutoIt скрипты
|
(*.*) Сообщения: 36556 |
Внимание! Тема переведена в архивное состояние Текущая тема http://forum.oszone.net/thread-98914.html (настоятельно рекомендуется к прочтению/поиску) Руководство к действию по работе c AutoIt. ![]() Сайт программы Русская справка Коллекция AutoIt скриптов от Sanja Alone Коллекция AutoIt скриптов от MSFN (могут быть устаревшие). Справочник по командам rundll32 (команды запуска диалоговых окон и не только...) AutoIt скрипты - введение и FAQ (статья содержит вводную информацию по AutoIt, а также ответы на ЧаВо). Данная тема предназначена для общих вопросов по AutoIt. Вопросы по установке приложений при помощи AutoIt следует задавать в соответствии с правилами форума "Автоматическая установка приложений". Таким образом, если вы хотите узнать как установить Winamp 5.x при помощи AutoIt, то создайте тему [autoit] Winamp 5.х (если таковой еще нет на форуме). Проверить наличие тем можно при помощи поиска или фильтров. Цитата Vadikan:
|
||
------- Отправлено: 00:02, 05-02-2006 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Drsmog,
Цитата:
Цитата:
![]() Что то вроде этого: $NotepadTitle = "[CLASS:Notepad]" Run(@WindowsDir & "\Notepad.exe") WinWait($NotepadTitle) ControlSetText($NotepadTitle, "", "Edit1", "+" & @CRLF & "-" & @CRLF & "?") $EditText = ControlGetText($NotepadTitle, "", "Edit1") ;Разделим весь текст из блокнота по строчкам, и заменим в каждой строчке по надобности $SplitText = StringSplit($EditText, @CRLF) $NewText = "" For $i = 1 To UBound($SplitText)-1 If StringInStr($SplitText[$i], "+") Then $SplitText[$i] = StringReplace($SplitText[$i], "+", "+ это плюс") ElseIf StringInStr($SplitText[$i], "-") Then $SplitText[$i] = StringReplace($SplitText[$i], "-", "- это минус") ElseIf StringInStr($SplitText[$i], "?") Then $SplitText[$i] = StringReplace($SplitText[$i], "?", "? это вопрос") EndIf $NewText &= $SplitText[$i] & @CRLF Next ControlSetText($NotepadTitle, "", "Edit1", $NewText) MsgBox(0, "", "Сделано!") ;Просто закроем то что открыли WinClose($NotepadTitle) WinWaitClose($NotepadTitle, "", 1) If WinActive("[CLASS:#32770]", "&") Then ControlClick("[CLASS:#32770]", "&", "Button2") fak1r, Увы, мне тоже никогда не приходилось производить авторизацию на сайте/форуме, я поищю на оф. форуме, возможно там кто-то уже делал подобное... |
||
------- Отправлено: 16:22, 25-11-2007 | #761 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 15
|
Профиль | Отправить PM | Цитировать Спасибо !!! Ну вроде то что надо
|
Отправлено: 17:41, 25-11-2007 | #762 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Два вопроса на повестке дня:
1) Возможно ли отключить (временно) устройство ввода (клавиатуру)? позже нужно будет его включить, без “побочных эффектов” ![]() 2) Как определить, установлен ли Flash Player для Internet Explorer? Обсуждение на оф. форуме зашло в тупик, функция чуть ниже возвращает True, однако при открытии странички с роликом на YouTube к примеру, получаю предупреждение о том что нужно установить Flash Player... |
------- Отправлено: 23:20, 25-11-2007 | #763 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать 25 ноября, 2007 - v3.2.10.0
Перевод by CreatoR (мой), мод на перевод от Google ![]() P.S Скажу от себя, что в этой версии, как я и писал ранее, разработчики сделали поворот в 360 градусов, изменили многие функции, добавили новые. Да, теперь чтобы перейти на новую версию, нужно будет поменять многие (если не все) наши скрипты, я если честно не спешу этого делать, т.к у меня их слишком много ![]() Happy Scripting!!! ![]() ![]() |
------- Последний раз редактировалось Creat0R, 26-11-2007 в 04:42. Отправлено: 04:28, 26-11-2007 | #764 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Creat0R
Цитата:
MsgBox(0, "", ShockwaveDetectAxVer(0)) ; $iVerReq=0 - возврат текущей версии ; $iVerReq>0 - соответствие минимальным требованиям к версии Func ShockwaveDetectAxVer($iVerReq) Local $i, $iVer, $sVer For $i=8 To 1 Step -1 $sVer = GetShockwaveVer($i) If $sVer <> '0.0' Then $iVer = Number($sVer) If $sVer='1.0' Then $iVer = 6 If $iVerReq Then Return $iVer>=$iVerReq Return $iVer EndIf If $iVerReq Then Return False Return 0 Next EndFunc Func GetShockwaveVer($iVer) Local $swControl=ObjCreate("SWCtl.SWCtl." & $iVer), $sVer = '0.0' If IsObj($swControl) Then $sVer = $iVer + '.0' $sVer = $swControl.ShockwaveVersion("") Return $sVer EndIf EndFunc |
|
Последний раз редактировалось amel27, 27-11-2007 в 03:17. Причина: ошибка в скрипте Отправлено: 05:15, 26-11-2007 | #765 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Creat0R
Цитата:
; Скрипт для версии v3.2.10.0 Global Const $WH_KEYBOARD_LL = 13 Global $hKeyProc = DllCallbackRegister ("_KeyProc", "int", "int;ptr;ptr") Global $hmod = DllCall("kernel32.dll","hwnd","GetModuleHandle","ptr",0) Global $hHook = DllCall("user32.dll","hwnd","SetWindowsHookEx","int", $WH_KEYBOARD_LL, _ "ptr", DllCallbackGetPtr($hKeyProc), "hwnd", $hmod[0], "dword", 0) MsgBox(4096, "", 'После нажатия "Ok" клавиатура будет заблокирована на 10 сек.') Sleep(10000) MsgBox(4096, "", 'Клавиатура разблокирована!') OnAutoItExit() Exit Func _KeyProc($nCode, $wParam, $lParam) If $nCode < 0 Then $ret = DllCall("user32.dll","long","CallNextHookEx","hwnd", $hHook[0], _ "int",$nCode, "ptr", $wParam, "ptr", $lParam) Return $ret[0] EndIf Return 1 EndFunc Func OnAutoItExit() DllCall("user32.dll","int","UnhookWindowsHookEx","hwnd",$hHook[0]) DllCallbackFree($hKeyProc) EndFunc |
|
Отправлено: 10:34, 26-11-2007 | #766 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать amel27,
Спасибо, но функция всегда возвращает 0 ![]() Объекта SWCtl.SWCtl у меня нет, возможно это не стандартный объект... Но вот piccaso вроде нашёл решение, у меня, где есть флэш (для IExplorer), возвращает 9, на компе без флэша пока нет возможности проверить: Global $oErr = ObjEvent("AutoIt.Error","_ComError") ConsoleWrite(_FlashMajorVersion() & @CRLF) Func _FlashMajorVersion() Local $oSwf,$sVersion $oSwf = ObjCreate("ShockwaveFlash.ShockwaveFlash") if @error Then Return 0 ; No flash at all $oSwf.AllowScriptAccess = "always" $sVersion = $oSwf.GetVariable("$version") if @error Then $oSwf = ObjCreate("ShockwaveFlash.ShockwaveFlash.3") if @error Then $oSwf = ObjCreate("ShockwaveFlash.ShockwaveFlash.2") if @error then return 0 Return 2 EndIf Return 3 EndIf $sVersion = StringTrimLeft($sVersion,3) $sVersion = StringLeft($sVersion,StringInStr($sVersion,",")-1) Return Number($sVersion) EndFunc Func _ComError() ; Just set @error, the script will handle it... Local $iErr = $oErr.number if $iErr = 0 Then $iErr = -1 SetError($iErr) EndFunc Цитата:
![]() #include <DllCallBack.au3> Global $hWinHook $CallBackProc = TogglePlugKeyBoard() MsgBox(4096, "", "Клавиатура заблокирована, нажмите OK для разблокирования.") TogglePlugKeyBoard($CallBackProc) MsgBox(4096, "", "Клавиатура разблокирована!") Exit Func TogglePlugKeyBoard($hCallProc=0) If IsArray($hWinHook) Then DllCall("user32.dll", "int", "UnhookWindowsHookEx", "hwnd", $hWinHook[0]) _DllCallBack_Free($hCallProc) Return 0 EndIf Local Const $WH_KEYBOARD_LL = 13 Local $hKeyProc = _DllCallBack("_KeyProc", "int;ptr;ptr") Local $hMod = DllCall("kernel32.dll", "hwnd", "GetModuleHandle", "ptr", 0) $hWinHook = DllCall("user32.dll", "hwnd", "SetWindowsHookEx", _ "int", $WH_KEYBOARD_LL, _ "ptr", $hKeyProc, _ "hwnd", $hMod[0], _ "dword", 0) Return $hKeyProc EndFunc Func _KeyProc($nCode, $wParam, $lParam) If $nCode < 0 Then Local $iRet = DllCall("user32.dll", "long", "CallNextHookEx", "hwnd", $hWinHook[0], _ "int", $nCode, _ "ptr", $wParam, _ "ptr", $lParam) Return $iRet[0] EndIf Return 1 EndFunc ![]() P.S Кстати, функция OnAutoItExit вызывается по умолчанию, её не обязательно вызывать ( OnAutoItExit() ). |
|
------- Отправлено: 11:13, 26-11-2007 | #767 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Creat0R
Цитата:
Цитата:
![]() Цитата:
![]() |
|||
Отправлено: 03:25, 27-11-2007 | #768 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать amel27,
Цитата:
![]() Я на днях (максимум в субботу) проверю скрипт от piccaso, мне кажется что он сработает (вернёт 0 или ошибку). По поводу примера для клавы... есть подозрение что это тот же BlockInput, только для клавиатуры, т.к Ctrl Alt Del всё же работает (клаву не включает, но вызывает Диспетчер задач)... нет, я конечно не хочу блокировать и эти клавиши, но просто интересно, действительно ли блокируются все клавиши кроме этих, как бы это проверить точно? |
|
------- Отправлено: 04:07, 27-11-2007 | #769 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Creat0R
Цитата:
![]() Цитата:
если на вход подать результат _Utf8ToUnicode() ту что приводил выше, то текст отобразится корректно... там номер сообщения отличается на 10 ![]() ; Вариант установки текста статус-бара для юникода ; $binUTF16 - текст, тип Binary Func _GUICtrlStatusBar_SetUTF16($hWnd, $binUTF16, $iPart = 0, $iUFlag = 0) If $Debug_SB Then _GUICtrlStatusBar_ValidateClassName($hWnd) Local $ret, $struct_String, $sBuffer_pointer, $struct_MemMap, $Memory_pointer $struct_String = DllStructCreate("byte[" & BinaryLen($binUTF16) & "];byte[2]") $sBuffer_pointer = DllStructGetPtr($struct_String) DllStructSetData($struct_String, 1, $binUTF16) If _GUICtrlStatusBar_IsSimple($hWnd) Then $iPart = $SB_SIMPLEID If _WinAPI_InProcess($hWnd, $__ghSBLastWnd) Then $ret = _SendMessage($hWnd, $SB_SETTEXT+10, BitOR($iPart, $iUFlag), $sBuffer_pointer, 0, "wparam", "ptr") Else $Memory_pointer = _MemInit($hWnd, StringLen($sText) + 1, $struct_MemMap) _MemWrite($struct_MemMap, $sBuffer_pointer) $ret = _SendMessage($hWnd, $SB_SETTEXT+10, BitOR($iPart, $iUFlag), $Memory_pointer, 0, "wparam", "ptr") _MemFree($struct_MemMap) EndIf Return $ret <> 0 EndFunc |
||
Отправлено: 05:10, 27-11-2007 | #770 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Открывая 7z архив пишет не удаётся открыть как архив. Можно ли его восстановить? | DreDo | Хочу все знать | 4 | 01-12-2009 18:54 | |
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:. | Vadikan | AutoIt | 1543 | 18-01-2009 10:46 | |
[Архив - Часть 1.3] AutoIt скрипты | biork | AutoIt | 503 | 09-06-2007 11:27 | |
[Архив - Часть 1.2] AutoIt скрипты | Dirk Diggler | AutoIt | 505 | 02-12-2006 11:00 | |
[Архив - Часть 1.1] AutoIt скрипты | EgOrus | AutoIt | 335 | 04-02-2006 16:58 |
|