|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [архив - Часть 2] AutoIt скрипты |
|
[архив - Часть 2] AutoIt скрипты
|
(*.*) Сообщения: 36568 |
Внимание! Тема переведена в архивное состояние Текущая тема 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 |
Ветеран Сообщения: 916
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 00:09, 07-01-2008 | #941 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать SAOPP,
Цитата:
Я имел в виду после нажатия ALT + CTRL + DEL (ведь в справке к команде BlockInput это говорится), если двинуть мышкой, скрипт завершит работу, а блокирование снимается по нажатию alt ctrl del. |
|
------- Отправлено: 00:24, 07-01-2008 | #942 |
Пользователь Сообщения: 143
|
Профиль | Отправить PM | Цитировать Подскажите, а как сделать часы, чтобы время шло ) спасибо.
|
Отправлено: 03:16, 07-01-2008 | #943 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать HORRIBLE,
Цитата:
Типа такого: #include <GuiConstants.au3> Global $iTimer_Started = False Global $Timer_Init = 0, $Total_Seconds = 0 $GUI = GUICreate("Timer Script", 220, 90) $Timer_Button = GUICtrlCreateButton("Start", 50, 20, 120, 20) $Timer_Label = GUICtrlCreateLabel("00:00:00", 90, 60) GUISetState(@SW_SHOW, $GUI) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Timer_Button If $iTimer_Started Then GUICtrlSetData($Timer_Button, "Start") _AdlibDisable($GUI) Set_Timer() $Total_Seconds += Round(TimerDiff($Timer_Init)/1000, 1) Else GUICtrlSetData($Timer_Button, "Stop") $Timer_Init = TimerInit() _AdlibEnable("Set_Timer", 1000, $GUI) EndIf $iTimer_Started = Not $iTimer_Started EndSwitch WEnd Func _AdlibEnable($sFunction, $iTime=250, $hWnd=0) Local Const $WM_TIMER = 0x0113 If Not IsHWnd($hWnd) Then $hWnd = GUICreate("hCallBack_AdlibEnable") GUIRegisterMsg($WM_TIMER, $sFunction) Local $aRet = DllCall("User32.dll", "int", "SetTimer", "hwnd", $hWnd, "int", 50, "int", $iTime, "int", 0) Return $hWnd EndFunc Func _AdlibDisable($hWnd=0) Local Const $WM_TIMER = 0x0113 GUIRegisterMsg($WM_TIMER, "") Local $aRet = DllCall("user32.dll", "int", "KillTimer", "hwnd", $hWnd, "int_ptr", 50) Return Number(IsArray($aRet) And $aRet[0]) EndFunc Func _SecsToTime($iTicks, $Delim=":") If Number($iTicks) >= 0 Then Local $iHours = Int($iTicks / 3600) $iTicks = Mod($iTicks, 3600) Local $iMins = Int($iTicks / 60) Local $iSecs = Round(Mod($iTicks, 60)) If StringLen($iHours) = 1 Then $iHours = "0" & $iHours If StringLen($iMins) = 1 Then $iMins = "0" & $iMins If StringLen($iSecs) = 1 Then $iSecs = "0" & $iSecs Return $iHours & $Delim & $iMins & $Delim & $iSecs EndIf Return SetError(1, 0, 0) EndFunc Func Set_Timer($hWnd=0) Local $iTmp_Total_Seconds = Round(TimerDiff($Timer_Init)/1000, 1) If $Total_Seconds > 0 Then $iTmp_Total_Seconds += $Total_Seconds Local $sTime = _SecsToTime($iTmp_Total_Seconds) GUICtrlSetData($Timer_Label, $sTime) EndFunc |
|
------- Отправлено: 04:10, 07-01-2008 | #944 |
Пользователь Сообщения: 143
|
Профиль | Отправить PM | Цитировать Creat0R,
неа, не таймер, хотя за таймер спасибо, а такие же часики как и в винде, вправом нижнем углу. т.к если просто использовать команды @Hour &":"& @MIN &":"& @SeC то получается когда файлик запускается то время показывается когда файл был запущен, а вот как сдеть чтоб время обновлялось, не перезапуская файл. Еще подскажите почему ругается вот на это #include <GuiCombo.au3> говорит: Error opening the file Можно ли убрать верхнюю шапку когда создаешь окно GUICreate особенно 3-и стандартных кнопки ? |
Последний раз редактировалось HORRIBLE, 07-01-2008 в 18:22. Отправлено: 12:43, 07-01-2008 | #945 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать HORRIBLE,
Цитата:
#include <GuiConstants.au3> Global $sTDelim = _GetTimeDelim() $GUI = GUICreate("Timer Script", 220, 90) $Time_Label = GUICtrlCreateLabel("Текущее время: " & GetCurrentTime($sTDelim), 40, 60) $Handle = _AdlibEnable("Set_System_Time", 1000) GUISetState(@SW_SHOW, $GUI) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE _AdlibDisable($Handle, 1) Exit EndSwitch WEnd Func _AdlibEnable($sFunction, $iTime=250, $hWnd=0) Local Const $WM_TIMER = 0x0113 If Not IsHWnd($hWnd) Then $hWnd = GUICreate("hCallBack_AdlibEnable") GUIRegisterMsg($WM_TIMER, $sFunction) Local $aRet = DllCall("User32.dll", "int", "SetTimer", "hwnd", $hWnd, "int", 1, "int", $iTime, "int", 0) Return $hWnd EndFunc Func _AdlibDisable($hWnd=0, $iCloseHwnd=0) Local Const $WM_TIMER = 0x0113 GUIRegisterMsg($WM_TIMER, "") If $iCloseHwnd Then GUIDelete($hWnd) Local $aRet = DllCall("user32.dll", "int", "KillTimer", "hwnd", $hWnd, "int", 1) Return Number(IsArray($aRet) And $aRet[0]) EndFunc Func Set_System_Time() GUICtrlSetData($Time_Label, "Текущее время: " & GetCurrentTime($sTDelim)) EndFunc Func GetCurrentTime($sTDelim=":") Return @HOUR & $sTDelim & @MIN & $sTDelim & @SEC EndFunc Func _GetTimeDelim($sNowTime="") Local $sRetDelim = RegRead("HKEY_CURRENT_USER\Control Panel\International", "sTime") If $sRetDelim = "" And $sNowTime <> "" Then $sRetDelim = StringLeft(StringRegExpReplace($sNowTime, "[0-9]", ""), 1) If $sRetDelim = "" Then $sRetDelim = ":" Return $sRetDelim EndFunc Цитата:
Цитата:
|
|||
------- Отправлено: 19:45, 07-01-2008 | #946 |
![]() Ветеран Сообщения: 753
|
Профиль | Отправить PM | Цитировать Creat0R, возможно ли с помощью скрипта менять разрешение экрана и определять на данный момент?
|
------- Отправлено: 15:56, 08-01-2008 | #947 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать TERMINAL,
Цитата:
#include <Array.au3> $aDisplayData = DisplayGetResolution() _ArrayDisplay($aDisplayData, "Current Resolution Values") ;Change to new resolution DisplayChangeResolution(960, 600, 32, 60) Sleep(3000) ;Change back to currently used resolution DisplayChangeResolution($aDisplayData[0], $aDisplayData[1], $aDisplayData[2], $aDisplayData[3]) Func DisplayGetResolution($iIndex=-1) Local $DEVMODE = DllStructCreate("byte[32];int[10];byte[32];int[6]") Local $aRet[4] Local $aDllCall = DllCall("user32.dll", "int", "EnumDisplaySettings", _ "ptr", 0, "long", $iIndex, "ptr", DllStructGetPtr($DEVMODE)) If IsArray($aDllCall) And $aDllCall[0] <> 0 Then $aRet[0] = DllStructGetData($DEVMODE, 4, 2) $aRet[1] = DllStructGetData($DEVMODE, 4, 3) $aRet[2] = DllStructGetData($DEVMODE, 4, 1) $aRet[3] = DllStructGetData($DEVMODE, 4, 5) Else Return SetError(1, 0, 0) EndIf $DEVMODE = 0 Return $aRet EndFunc ;==>DisplayGetResolution Func DisplayChangeResolution($iWidth, $iHeight, $iBpp, $iFreq) Local Const $DM_PELSWIDTH = 0x00080000 Local Const $DM_PELSHEIGHT = 0x00100000 Local Const $DM_BITSPERPEL = 0x00040000 Local Const $DM_DISPLAYFREQUENCY = 0x00400000 Local Const $CDS_TEST = 0x00000002 Local Const $CDS_UPDATEREGISTRY = 0x00000001 Local Const $DISP_CHANGE_RESTART = 1 Local Const $DISP_CHANGE_SUCCESSFUL = 0 Local Const $HWND_BROADCAST = 0xFFF Local Const $WM_DISPLAYCHANGE = 0x007E Local $DEVMODE = DllStructCreate("byte[32];int[10];byte[32];int[6]") Local $avDllCall = DllCall("user32.dll", "int", "EnumDisplaySettings", "ptr", 0, "long", 0, "ptr", DllStructGetPtr($DEVMODE)) If IsArray($avDllCall) And $avDllCall[0] <> 0 Then DllStructSetData($DEVMODE, 2, BitOR($DM_PELSWIDTH, $DM_PELSHEIGHT, $DM_BITSPERPEL, $DM_DISPLAYFREQUENCY), 5) DllStructSetData($DEVMODE, 4, $iWidth, 2) DllStructSetData($DEVMODE, 4, $iHeight, 3) DllStructSetData($DEVMODE, 4, $iBpp, 1) DllStructSetData($DEVMODE, 4, $iFreq, 5) $avDllCall = DllCall("user32.dll", "int", "ChangeDisplaySettings", "ptr", DllStructGetPtr($DEVMODE), "int", $CDS_TEST) If @error Then $avDllCall = -1 Else $avDllCall = $avDllCall[0] EndIf Select Case $avDllCall = $DISP_CHANGE_RESTART $DEVMODE = 0 Return 2 Case $avDllCall = $DISP_CHANGE_SUCCESSFUL DllCall("user32.dll", "int", "ChangeDisplaySettings", "ptr", DllStructGetPtr($DEVMODE), "int", $CDS_UPDATEREGISTRY) DllCall("user32.dll", "int", "SendMessage", "hwnd", $HWND_BROADCAST, "int", $WM_DISPLAYCHANGE, _ "int", $iBpp, "int", $iHeight * 2 ^ 16 + $iWidth) $DEVMODE = 0 Return 1 Case Else $DEVMODE = 0 Return $avDllCall EndSelect EndIf EndFunc ;==>DisplayChangeResolution |
|
------- Отправлено: 00:20, 09-01-2008 | #948 |
Пользователь Сообщения: 143
|
Профиль | Отправить PM | Цитировать Как сделать поиск по маске, формат имени файла выглядит так (12_12_12.txt), в папке текстовых файлов много и у всех разный формат имени, но есть и файлы с форматом имени таким который был приведен, далее после поиска вывести массив с найденными файлами.
Я так думаю что нужно сперва воспользоваться _FileListToArray ($path ,"*.txt"), а после это этим StringRegExp (). Но я так попробовал, и ничего не вышло StringRegExp ("12_12_12.txt 12_12_12.txt", ,'(\d\d\w\d\d\w\d\d.\w\w\w\w*?)',4) - если так писать, все прекрасно работат, находит)) а как быть с именем файла? '(\d\d\w\d\d\w\d\d.\w\w\w\w*?)' - правильно написано или можно как нить подругому задать? 2 вопрос: _FileCreate("1.txt") $Array1 = _FileListToArray ($path ,"*.au3") $Array2 = _ArrayToclip($1) fileWrite("1.txt",ClipGet()) когда информация (имена присутствующих файлов в папке) записываается в файлик она разделяется @LF, а как сделать так чтоб информация разделялась, а Enter-ом, чтобы каждое название файла начиналось с новой строки. Спасибо. |
Отправлено: 16:01, 09-01-2008 | #949 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать HORRIBLE,
Цитата:
#include <File.au3> #include <Array.au3> $sPath = @ScriptDir $avArray = _RegExpFileListToArray($sPath, "(?i)\d+_\d+_\d+\.txt", "*.txt") _ArrayDisplay($avArray) Func _RegExpFileListToArray($sPath, $sPattern, $sMask="*") Local $aRet[1] $aFileList = _FileListToArray($sPath, $sMask) For $i = 1 To UBound($aFileList)-1 If StringRegExp($aFileList[$i], $sPattern) Then $aRet[0] += 1 ReDim $aRet[$aRet[0]+1] $aRet[$aRet[0]] = $aFileList[$i] EndIf Next Return $aRet EndFunc Цитата:
![]() Функция _ArrayToClip() помещет строчки в буфер обмена разделённые @CR (возврат каретки). |
||
------- Отправлено: 19:46, 09-01-2008 | #950 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Открывая 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 |
|