|
Компьютерный форум 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 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать amel27,
Цитата:
![]() Цитата:
Цитата:
![]() Спасибо! |
|||
------- Отправлено: 02:51, 13-08-2007 | #291 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать По поводу функции конвертирования формата даты - всё таки пришлось делать две функции, проверьте плиз кто нибудь, как оно работает:
$FullDateTime = _TimeConvertFormat("HH:MM:SS") & ", " & _DateConvertFormat("DD/MM/YY") MsgBox(64, "Date/Time Convert Results", $FullDateTime) Func _TimeConvertFormat($sFormat) Local $RetDateTime = $sFormat Local $Hours_Raw = @HOUR Local $Hours_Part = StringRight($Hours_Raw, 1) If $Hours_Raw > 9 Then $Hours_Part = $Hours_Raw Local $Minutes_Raw = @MIN Local $Minutes_Part = StringRight($Minutes_Raw, 1) If $Minutes_Raw > 9 Then $Minutes_Part = $Minutes_Raw Local $Seconds_Raw = @SEC Local $Seconds_Part = StringRight($Seconds_Raw, 1) If $Seconds_Raw > 9 Then $Seconds_Part = $Seconds_Raw $RetDateTime = StringReplace($RetDateTime, "hh", $Hours_Raw) $RetDateTime = StringReplace($RetDateTime, "h", $Hours_Part) $RetDateTime = StringReplace($RetDateTime, "mm", $Minutes_Raw) $RetDateTime = StringReplace($RetDateTime, "m", $Minutes_Part) $RetDateTime = StringReplace($RetDateTime, "ss", $Seconds_Raw) $RetDateTime = StringReplace($RetDateTime, "s", $Seconds_Part) Return $RetDateTime EndFunc Func _DateConvertFormat($sFormat) Local $RetDateTime = $sFormat StringReplace($RetDateTime, "y", "") Local $Year = StringRight(@YEAR, @extended) Local $Mounth_Raw = @MON Local $Mounth_Part = StringRight($Mounth_Raw, 1) If $Mounth_Raw > 9 Then $Mounth_Part = $Mounth_Raw Local $Day_Raw = @MDAY Local $Day_Part = StringRight($Day_Raw, 1) If $Day_Raw > 9 Then $Day_Part = $Day_Raw $RetDateTime = StringReplace($RetDateTime, "y", $Year, 1) $RetDateTime = StringReplace($RetDateTime, "y", "") $RetDateTime = StringReplace($RetDateTime, "mm", $Mounth_Raw) $RetDateTime = StringReplace($RetDateTime, "m", $Mounth_Part) $RetDateTime = StringReplace($RetDateTime, "dd", $Day_Raw) $RetDateTime = StringReplace($RetDateTime, "d", $Day_Part) Return $RetDateTime EndFunc |
------- Отправлено: 03:52, 13-08-2007 | #292 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата Creat0R:
Func _TimeConvertFormat($sFormat) Local $Hours_Raw = @HOUR Local $Minutes_Raw = @MIN Local $Seconds_Raw = @SEC $sFormat = StringReplace($sFormat, "hh",$Hours_Raw) $sFormat = StringReplace($sFormat, "h", $Hours_Raw+0) $sFormat = StringReplace($sFormat, "mm",$Minutes_Raw) $sFormat = StringReplace($sFormat, "m", $Minutes_Raw+0) $sFormat = StringReplace($sFormat, "ss",$Seconds_Raw) $sFormat = StringReplace($sFormat, "s", $Seconds_Raw+0) Return $sFormat EndFunc Func _DateConvertFormat($sFormat) StringReplace($sFormat, "y", "") Local $Year = StringRight(@YEAR, @extended) Local $Mounth_Raw = @MON Local $Day_Raw = @MDAY $sFormat = StringRegExpReplace($sFormat, '(?i)y+', $Year) $sFormat = StringReplace($sFormat, "mm",$Mounth_Raw) $sFormat = StringReplace($sFormat, "m", $Mounth_Raw+0) $sFormat = StringReplace($sFormat, "dd",$Day_Raw) $sFormat = StringReplace($sFormat, "d", $Day_Raw+0) Return $sFormat EndFunc |
|
Отправлено: 05:28, 13-08-2007 | #293 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать amel27,
Цитата:
![]() Но мне всё же нужно доделать чтобы оно работало с одной строкой (где может встречаться и дата, и время)... вот что пока получилось: $Str = 'DD/MM/YYYY, [HH;MM;SS]' ConsoleWrite(_DateTimeConvertFormat($Str)) Func _DateTimeConvertFormat($sFormat) Local $RetDateTime = $sFormat If StringRegExp($sFormat, '(?i)\[(.*)\]') Then $TPos_1 = StringInStr($sFormat, "[") $TPos_2 = StringInStr($sFormat, "]") $TruimVal = 1 If StringInStr(StringMid($sFormat, $TPos_2 + 1), "]") Then $TruimVal = 0 $TimeStr = StringMid($sFormat, $TPos_1+1, ($TPos_2 - $TPos_1) - $TruimVal) $TimeStr = _TimeConvertFormat($TimeStr) $DateStr = _DateConvertFormat(StringRegExpReplace($sFormat, '(?i)\[(.*)\]', '', 1)) If StringRegExp(StringMid($sFormat, $TPos_2), '(?i)D|MM/Y') Then $RetDateTime = $TimeStr & $DateStr Else $RetDateTime = $DateStr & $TimeStr EndIf Else $RetDateTime = _DateConvertFormat($sFormat) EndIf If $RetDateTime = $sFormat Then $RetDateTime = _DateConvertFormat($sFormat) Return $RetDateTime EndFunc ![]() |
|
------- Отправлено: 06:12, 13-08-2007 | #294 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата Creat0R:
$Str = 'DD/MM/YYYY, [HH;MM;SS]' ConsoleWrite(_DateTimeConvertFormat($Str)) Func _DateTimeConvertFormat($sFormat) StringReplace($sFormat, "y", "") Local $Year = StringRight(@YEAR, @extended) Local $Stamp = '<'& Random(10000000,99999999,1) &'>' Local $Mounth_Raw = @MON Local $Day_Raw = @MDAY Local $Hours_Raw = @HOUR Local $Minutes_Raw = @MIN Local $Seconds_Raw = @SEC $sFormat = StringRegExpReplace($sFormat, "(?i)(?:(d+|y+)(\W*)(mm)|(mm)(\W*)(d+|y+))", '\1\2'& $Stamp &'\5\6') If @extended Then $sFormat = StringReplace($sFormat, $Stamp, $Mounth_Raw) $sFormat = StringRegExpReplace($sFormat, "(?i)(?:(d+|y+)(\W*)(m)|(m)(\W*)(d+|y+))", '\1\2'& $Stamp &'\5\6') If @extended Then $sFormat = StringReplace($sFormat, $Stamp, $Mounth_Raw+0) $sFormat = StringRegExpReplace($sFormat, '(?i)y+', $Year) $sFormat = StringReplace($sFormat, "mm",$Minutes_Raw) $sFormat = StringReplace($sFormat, "m", $Minutes_Raw+0) $sFormat = StringReplace($sFormat, "dd",$Day_Raw) $sFormat = StringReplace($sFormat, "d", $Day_Raw+0) $sFormat = StringReplace($sFormat, "hh",$Hours_Raw) $sFormat = StringReplace($sFormat, "h", $Hours_Raw+0) $sFormat = StringReplace($sFormat, "ss",$Seconds_Raw) $sFormat = StringReplace($sFormat, "s", $Seconds_Raw+0) Return $sFormat EndFunc |
|
Отправлено: 11:19, 13-08-2007 | #295 |
Ветеран Сообщения: 604
|
Профиль | Отправить PM | Цитировать Упрощённая схема кода:
#include <GuiConstants.au3> Dim $msg, $time = 3000 GUICreate("Test", 300, 200) GUISetState() AdlibEnable("Play", $time) While $msg <> $Gui_Event_Close $msg = GUIGetMsg() WEnd Func Play() SoundPlay(@ScriptDir & "\24.wav") $time = 10000 EndFunc вызывал функцию с этим новым значением переменной? |
Отправлено: 12:17, 13-08-2007 | #296 |
Новый участник Сообщения: 23
|
Профиль | Отправить PM | Цитировать Добрый день!
не подскажет ли кто по сочетаниям клавиш в AutoIt...SendKey. программа выполняет сохранение файла в Exel. Меню "Файл"- >Enter->-5 раз Down - будет "сохранить как" Но! другие пользователи поменяли меню "Файл", удалив из него открыть и закрыть...в результате 5 раз Down получилось - печать! скрипт не работает ![]() ControlSend("^{S}") просто печатает в ячейке S. не могу понять в чем дело( в кодировках? как быть? Буду благодарна за любой ответ. |
Отправлено: 17:16, 13-08-2007 | #297 |
Ветеран Сообщения: 604
|
Профиль | Отправить PM | Цитировать |
Отправлено: 17:33, 13-08-2007 | #298 |
Ищу Человека… Сообщения: 420
|
Профиль | Сайт | Отправить PM | Цитировать SvetlanaK
Можно и с помощью COM: $sFilePath = 'D:\MyDoc\Sample.xls' ;путь файла для выполнения действий над ним $oExcel = ObjGet("", "Excel.Application") ; "схватить" существующий объект Excel (например, файл уже открыт в Excel) If @error Then ; в случае неудачи создаем новый объект Excel и открываем требуемый файл $oExcel = ObjCreate("Excel.Application") ; создать объект Excel If Not IsObj($oExcel) Then Exit ; выйти, если не удалось создать объект Excel If FileExists($sFilePath) Then $oExcel.Workbooks.Open ($sFilePath) ; открыть в Excel указанный файл EndIf $oExcel.CalculateFull ; пересчитать формулы (это просто для примера, здесь можно выполнять массу других действий) $oExcel.DisplayAlerts = 0 ; отключить предупреждения $oExcel.Save ; сохранить файл $oExcel.Quit ; выйти |
------- Отправлено: 21:43, 13-08-2007 | #299 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать amel27,
Цитата:
![]() Я правда добавил небольшую подстраховку на $Stamp ![]() Func _DateTimeConvertFormat($sFormat) Local $Stamp = '<_>' While StringInStr($sFormat, $Stamp) $Stamp = '<'& Random(10000000,99999999,1) &'>' WEnd StringReplace($sFormat, "y", "") Local $Year = StringRight(@YEAR, @extended) Local $Mounth = @MON Local $Day = @MDAY Local $Hours = @HOUR Local $Minutes = @MIN Local $Seconds = @SEC $sFormat = StringRegExpReplace($sFormat, "(?i)(?:(d+|y+)(\W*)(mm)|(mm)(\W*)(d+|y+))", '\1\2' & $Stamp & '\5\6') If @extended Then $sFormat = StringReplace($sFormat, $Stamp, $Mounth) $sFormat = StringRegExpReplace($sFormat, "(?i)(?:(d+|y+)(\W*)(m)|(m)(\W*)(d+|y+))", '\1\2' & $Stamp & '\5\6') If @extended Then $sFormat = StringReplace($sFormat, $Stamp, $Mounth+0) $sFormat = StringRegExpReplace($sFormat, '(?i)y+', $Year) $sFormat = StringReplace($sFormat, "mm",$Minutes) $sFormat = StringReplace($sFormat, "m", $Minutes+0) $sFormat = StringReplace($sFormat, "dd",$Day) $sFormat = StringReplace($sFormat, "d", $Day+0) $sFormat = StringReplace($sFormat, "hh",$Hours) $sFormat = StringReplace($sFormat, "h", $Hours+0) $sFormat = StringReplace($sFormat, "ss",$Seconds) $sFormat = StringReplace($sFormat, "s", $Seconds+0) Return $sFormat EndFunc ![]() Maza Faka, Цитата:
![]() #include <GuiConstants.au3> Dim $msg, $time = 3000 GUICreate("Test", 300, 200) GUISetState() AdlibEnable("Play", $time) While $msg <> $Gui_Event_Close $msg = GUIGetMsg() WEnd Func Play() SoundPlay(@ScriptDir & "\24.wav") $time = 10000 AdlibEnable("Play", $time) EndFunc Цитата:
Попробуй активировать окно Excel (тем самым убрав фокус с ячеек), затем вызвать клавиши. Но тут возможна всплывёт другая проблема - если раскладка языка клавиатуры по умолчанию будет русской к примеру, тогда это сочетание не сработает, нужно будет делать так: Есть ещё один такой подводный камушек - а если изменять профиль сочетании клавиш в Excel? не знаком с ним, но полагаю там есть такая возможность? ![]() |
|||
------- Отправлено: 21:46, 13-08-2007 | #300 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Открывая 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 |
|