Показать полную графическую версию : [архив - Часть 2] AutoIt скрипты
Maza Faka Тебя также с новым :)
Спасибо, посмотрю мануал может чтонибудь да получится ...
Насчет посмотреть в топике этт 194 страницы просмотреть с моим диалапом, а можно пример скрипта ?
МИШАНЧИК
03-01-2008, 04:51
Ну может всё таки кто нибудь напишет скрипт для Nero8?
Maza Faka
03-01-2008, 07:07
kagorec
194 страницы просмотреть с моим диалапом
Посмотри в версии для печати (http://forum.oszone.net/showthread.php?t=60616&page=all), дай поиск по слову PixelChecksum.
МИШАНЧИК
Ну может всё таки кто нибудь напишет скрипт для Nero8?
Я бы с удовольствием тебе помог, но у меня нет Nero8 (юзаю 6 версию), а качать этого монстра из инета на диал-апе удовольствие сомнительное.
Добрый день, такой вопрос.....есть параметр, нужно что бы он проверял соответствие пути, и если есть лишнии символы то выдал сообщение....
Func nst_serv ()
Dim $wtf_exe = '*\*.???'
Dim $serv1_realm = ControlGetText ( 'Настройка', '', 'Edit1' )
Dim $serv1_exe = ControlGetText ( 'Настройка', '', 'Edit2' )
Dim $serv1_reg = ControlGetText ( 'Настройка', '', 'Edit3' )
Dim $serv1_ip = ControlGetText ( 'Настройка', '', 'Edit4' )
Dim $serv1_ping = ControlGetText ( 'Настройка', '', 'Edit5' )
Dim $dat_serv1[5][2] = [ [ $key1, $serv1_realm ], [ $key2, $serv1_exe ], [ $key3, $serv1_reg ], [ $key4, $serv1_ip ], [ $key5, $serv1_ping ] ]
If $wtf_exe = $serv1_realm Then
MsgBox ( 16, 'Ошибка', 'Возможно допущенны следующие ошибки:' & @CRLF & _
'- В пути realmlist`а написано имя файла' & @CRLF & _
'- В пути к экзешнику написано имя файла' & @CRLF & _
'- В конце путей стоит " \ "' & @CRLF & _
'- В ip адресе realmlist`a написано "set realmlist"' )
Else
IniWriteSection ( $file, $serv[0], $dat_serv1, 0 )
EndIf
Выполняется только если ввести в параметр $wtf_exe поный путь......
Maza Faka
03-01-2008, 14:37
Angelus
FileExists()?
Я хочу что бы он путь проверял...и если в графе вписано путь и в конце имя файла тогда он выдал сообщение....если не вписано имя файла...то записал в ини файл то что в графе....
Maza Faka
04-01-2008, 08:32
Angelus
Так? :
$parsing = StringRegExp($serv1_realm, "\..{3}$", 3)
If @error Then
IniWrite("c:\test\test.ini", "Section", $serv1_realm, "value")
Else
MsgBox(64, "Message", "File name")
EndIf
Не удаётся в новой версии AutoIt 3.2.10.0 переделать самопальную функцию _FileSelectFolder() »
Удалось! :up
Func _FileSelectFolder($sText='', $iRoot=0, $iFlags=0, $sInitDir=@ScriptDir, $hWnd=0, $sCallbackProc='_FileSFCallbackProc')
Local $pidl, $iRes='', $pCallbackProc=0, $iMask = $BIF_ALLOLDSTYLEFLAGS, $Error = 0
; Контроль входных параметров
;$sInitDir = StringRegExpReplace($sInitDir, '([^\\])\\*$', '\1\\')
;If StringRight($sInitDir, 1)=':' Then $sInitDir &= '\'
If BitAND($iFlags, $BIF_NEWDIALOGSTYLE) Then $iMask = $BIF_ALLNEWSTYLEFLAGS
; Создание и инициализация основных структур данных
Local $uBI = DllStructCreate ("hwnd;ptr;ptr;ptr;int;ptr;ptr;int") ; BROWSEINFO
Local $uTX = DllStructCreate ("char[260];char") ; Текст приглашения
Local $uMP = DllStructCreate ("char[260]") ; MAX_PATH
Local $uCB = DllStructCreate ("char[260];int") ; CallBack структура
DllStructSetData ($uTX, 1, $sText)
DllStructSetData ($uCB, 1, $sInitDir)
DllStructSetData ($uCB, 2, $iFlags)
; Заполнение структуры BROWSEINFO
DllStructSetData ($uBI, 1, $hwnd)
DllStructSetData ($uBI, 3, DllStructGetPtr($uMP))
DllStructSetData ($uBI, 4, DllStructGetPtr($uTX))
DllStructSetData ($uBI, 5, BitAND($iFlags, $iMask))
DllStructSetData ($uBI, 7, DllStructGetPtr($uCB))
; Получение указателя на CallBack-функцию
If $sCallbackProc <> '' Then $pCallbackProc = DllCallbackRegister($sCallbackProc, 'int', 'hwnd;int;long;ptr')
If @error Then Return SetError(2, @error, '') ; ОШИБКА получения указателя
DllStructSetData($uBI, 6, DllCallbackGetPtr($pCallbackProc))
; Получение указателя на корневую папку (PIDL)
Local $iRet = DllCall ("shell32.dll", "ptr", "SHGetSpecialFolderLocation", _
"int", 0 , "int", $iRoot , "ptr", DllStructGetPtr($uBI, 2))
If $iRet[0]=0 Then
; Запуск системного диалога
$pidl = DllCall ("shell32.dll", "ptr", "SHBrowseForFolder", "ptr", DllStructGetPtr($uBI))
$iRes = DllStructGetData($uMP, 1) ; сохраняем имя объекта
If $pidl[0] Then
; Обработка полученного указателя (PIDL)
$iRet = DllCall ("shell32.dll", "int", "SHGetPathFromIDList", "ptr", $pidl[0], "ptr", DllStructGetPtr($uMP))
If $iRet[0] Then $iRes = DllStructGetData($uMP, 1)
DllCall ("ole32.dll", "int", "CoTaskMemFree", "ptr", $pidl[0]) ; чистим за собой
Else
$Error = 1
EndIf
DllCall ("ole32.dll", "int", "CoTaskMemFree", "ptr", DllStructGetData ($uBI, 2)) ; чистим за собой
Else
SetError(1, 0, '') ; ОШИБКА в параметре корневой папки
EndIf
If $pCallbackProc Then DllCallBackFree($pCallbackProc) ; закрытие указателя
Return SetError($Error, 0, $iRes)
EndFunc
Оказывается DllCallbackRegister() возвращает не указатель, а идентификатор, нужно было всего лишь использовать DllCallbackGetPtr() для получения указателя, и далее использовать его при вызове заполнении структуры :) .
Да спасибо...сработало....интересная команда....
Maza Faka
04-01-2008, 10:13
Creat0R
Ругается на: WARNING: $BIF_ALLOLDSTYLEFLAGS: possibly used before declaration., какое значение должно содержаться в константе(?) $BIF_ALLOLDSTYLEFLAGS?
Попытался собрать из нескольких кодов нужный скрипт.
Для экрана 1024х768, движение курсора по кругу (в центре радиусом 300пикселей) скорость неполучается выставить 25 через команду Opt (mousemove), при этом удерживается правая кнопка мышки.
Старался вписать управление скриптом:
Pause - пауза
F9 - включить
F10 - остановить
Но при включении ахтунг получается - курсор движется по кругу удерживая кнопку все хорошо, НО процессор нагружает на 100% и не управляется ни стоп ни пауза только рестарт компа спасает.
Поправте пожалста скрипт или подскажите (мои эксперементы заканчиваются рестартом ПК)
Global $Paused
HotKeySet("{PAUSE}", "TogglePause")
HotkeySet ("{F10}", "Stop" )
HotKeySet( "{F9}", "Start" )
;******** Script Pause **********
Func TogglePause()
$Paused = NOT $Paused
While $Paused
sleep(100)
ToolTip('script is "Paused"',0,0)
WEnd
ToolTip("")
EndFunc
;********** Stop **********
Func Stop ()
While 1 = 1
Sleep (600)
Wend
EndFunc
While (1)
BlockInput(1)
_MouseMoveCircle(540, 390, 300, 625, 1) ;(need opt speed 25) Circle 4ever for resolution 1024x768
Sleep(200)
BlockInput(0)
WEnd
Func _MouseMoveCircle($xPos, $yPos, $Radius, $TimeExp, $MouseClick=0); x coord, y coord, radius, time to loop (milliseconds)
Local $TimeInit = TimerInit()
Local $xPosMov, $yPosMov
Local $MouseClick_Mark = 1
Do
$TimeDiff = TimerDiff($TimeInit)
$xPosMov = $xPos + ($Radius * Sin($TimeDiff/100))
$yPosMov = $yPos + ($Radius * Cos($TimeDiff/100))
MouseMove($xPosMov, $yPosMov, 1)
If $MouseClick_Mark = 1 And $MouseClick <> 0 Then MouseDown("Right")
$MouseClick_Mark = 0
Until $TimeDiff > $TimeExp
If $MouseClick <> 0 Then MouseUp("Right")
EndFunc
Maza Faka,
Ругается на
Тогда должен ругаться и на многое дргое ;) - я всего лишь привёл подправленную функцию из _FileSelectFolder.au3...
Прикрепляю полный набор самопальных функции системных диалогов + Примеры применения (файл Examples.au3).
За большенство из которых (как функции так и примеров) большое спасибо amel27 :)
Только для AutoIt 3.2.10.0.
Зеркало (http://creator-lab.ucoz.ru/AutoIt/SystemDialogUDFs.zip) для тех кто неможет скачать с форума.
kagorec, НО процессор нагружает на 100% и не управляется ни стоп ни пауза только рестарт компа спасает.
Конечно не будет управляться, ведь BlockInput не даёт ничего нажать.
Я выкрутился быстрым нажатием «Alt + Ctrl + Del» и «Pause» ;)
Тут видимо это происходт из за постоянного цикла внутри _MouseMoveCircle - можно поставить в нём проверку на ввод пользователя, и небольшую паузу...
Вот простой пример, для наглядности, я BlockInput закомментировал :)
Global $Paused = False
HotKeySet("{PAUSE}", "TogglePause")
HotKeySet("{ESC}", "QuitApp")
While 1
While $Paused
Sleep(100)
ToolTip('script is "Paused"',0 , 0)
WEnd
ToolTip("")
;BlockInput(1)
_MouseMoveCircle(540, 390, 300, 625, 1) ;(need opt speed 25) Circle 4ever for resolution 1024x768
Sleep(200)
;BlockInput(0)
WEnd
Func TogglePause()
$Paused = NOT $Paused
EndFunc
Func _MouseMoveCircle($xPos, $yPos, $Radius, $TimeExp, $MouseClick=0); x coord, y coord, radius, time to loop (milliseconds)
Local $TimeInit = TimerInit()
Local $xPosMov, $yPosMov
Local $MouseClick_Mark = 1
Do
$TimeDiff = TimerDiff($TimeInit)
$xPosMov = $xPos + ($Radius * Sin($TimeDiff/100))
$yPosMov = $yPos + ($Radius * Cos($TimeDiff/100))
MouseMove($xPosMov, $yPosMov, 1)
If $MouseClick_Mark = 1 And $MouseClick <> 0 Then MouseDown("Right")
$MouseClick_Mark = 0
If $Paused Then ExitLoop
Sleep(10)
Until $TimeDiff > $TimeExp
If $MouseClick <> 0 Then MouseUp("Right")
EndFunc
Func QuitApp()
Exit
EndFunc
Подскажите как с помощью Autoit удалить раздел реестра и все ключи в нем?
HKEY_LOCAL_MACHINE\SOFTWARE\TEST\
или все ключи в разделе
HKEY_LOCAL_MACHINE\SOFTWARE\TEST\*.REG_BINARY
Буду рад помощи
rimm,
как с помощью Autoit удалить раздел реестра и все ключи в нем?
RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\TEST")
Для удаления определённых типов записей, можно использовать RegEnumVal()...
For $i = 1 To 100
$Var = RegEnumVal("HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\Autoit", $i)
If @error Then ExitLoop
MsgBox(4096, "Value Name #" & $i & " under in AutoIt3 key", $Var & @LF & "Extended: " & GetExtendedType(@extended))
Next
Func GetExtendedType($Extended)
Local $RegTypeArr[6] = [5, "REG_SZ", "REG_MULTI_SZ", "REG_EXPAND_SZ", "REG_DWORD", "REG_BINARY"]
For $i = 1 To 5
If $Extended = $i Then Return $RegTypeArr[$i]
Next
EndFunc
Библиотека автоматизации для браузера Opera (http://opera.com)!
24 (планируется ещё больше) полезных функции для решения задач связанных с браузером Opera.
Примечание: Библиотека тестировалась под Opera начиная с версии 8.54 и до версии 9.5.
[Страница закачки (http://creator-lab.ucoz.ru/load/3-1-0-36)], [Зеркало (http://www.autoitscript.com/forum/index.php?automodule=downloads&showfile=110)]
Ребят, а с помощью AutoIt'а можно реализовать блокировку клавиатуры и мыши при запуске скрипта - и последующей разблокировкой например нажатием каких либо сочетаний клавиш?
SAOPP,
с помощью AutoIt'а можно реализовать блокировку клавиатуры и мыши при запуске скрипта
Да, есть команда BlockInput(1), соответственно BlockInput(0) отменит блокирование... Alt+Ctrl+Del в любом случае разблокирует ввод ;).
Ну вот мне бы так и нужно, как "некая" утилитка ;) для чистки клавиатуры блокирует это дело, только без всяких оповещений и окон, просто блокировала, а по нажатию ctrl+alt+del разблокировала и закрывалась соответственно.
SAOPP,
мне бы так и нужно, как "некая" утилитка для чистки клавиатуры
Эта (http://creator-lab.ucoz.ru/load/5-1-0-15) утилитка? :)
только без всяких оповещений и окон, просто блокировала, а по нажатию ctrl+alt+del разблокировала и закрывалась
Всё очень просто:
#NoTrayIcon
$aOld_MousePos = MouseGetPos()
BlockInput(1)
While 1
Sleep(100)
$aNewMousePos = MouseGetPos()
If $aOld_MousePos[0] <> $aNewMousePos[0] Or $aOld_MousePos[1] <> $aNewMousePos[1] Then ExitLoop
WEnd
BlockInput(0)
Скрипт завершит работу после любого движения мышки ;)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.