Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [архив - Часть 2] AutoIt скрипты

Закрытая тема
Настройки темы
[архив - Часть 2] AutoIt скрипты

(*.*)


Сообщения: 36549
Благодарности: 6692


Конфигурация

Профиль | Сайт | Отправить PM | Цитировать


Изменения
Автор: Vadikan
Дата: 27-01-2008
Внимание!
Тема переведена в архивное состояние







(настоятельно рекомендуется к прочтению/поиску)


Руководство к действию по работе c AutoIt.


Сайт программы
Русская справка
Коллекция AutoIt скриптов от Sanja Alone
Коллекция AutoIt скриптов от MSFN (могут быть устаревшие).
Справочник по командам rundll32 (команды запуска диалоговых окон и не только...)

AutoIt скрипты - введение и FAQ (статья содержит вводную информацию по AutoIt, а также ответы на ЧаВо).



Данная тема предназначена для общих вопросов по AutoIt. Вопросы по установке приложений при помощи AutoIt следует задавать в соответствии с правилами форума "Автоматическая установка приложений". Таким образом, если вы хотите узнать как установить Winamp 5.x при помощи AutoIt, то создайте тему [autoit] Winamp 5.х (если таковой еще нет на форуме). Проверить наличие тем можно при помощи поиска или фильтров.
Цитата Vadikan:
В теме уже свыше 500 сообщений и поиск нужной информации в ней усложняется. Есть предложение собрать все решения (скрипты) и разместить их на Wiki по принципу "один скрипт - одна статья wiki", добавляя статьи в категорию Autoit. Речь, в принципе, идет об общих решениях, а не о скриптах для установки конкретной программы. Название статьи, очевидно, должно отражать назначение скрипта. Затем можно в шапке просто разместить ссылки на статьи Wiki.

-------
Канал Windows 11, etc | Чат @winsiders

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:02, 05-02-2006

 

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


amel27,
Цитата:
если пусто, значит берется дефолтовый из HKLM\SOFTWARE\Classes\CLSID
У меня там кроме Мой компьютер везде пусто...

А по второму адресу - к примеру тут HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{645FF040-5081-101B-9F08-00AA002F954E} должно быть имя корзины, там так и написано Корзина (в “по умолчанию”), но у меня корзина именуется как Mycop - Вот тут то и проблема, список содержит именно Mycop (это латинские буквы кстати), в реестре я не нашёл это значение

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 12:33, 09-10-2007 | #571



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Creat0R
ну не знаю ... у меня после переименования новое имя сразу появилось в HKCU, правда чтобы я смог переименовать корзину с рабочего стола мне пришлось применить соответствующий твик

Отправлено: 13:06, 09-10-2007 | #572


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


amel27,
А «Мои документы» тоже нормально отображаются в реестре?
У меня их вообще нигде нету, даже не в оригинальном названии .

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 13:21, 09-10-2007 | #573


Аватара для Maza Faka

Ветеран


Сообщения: 604
Благодарности: 133

Профиль | Отправить PM | Цитировать


Creat0R
Большое спасибо за пример, а если бы ты ещё нашёл время, что бы разжевать мне эту функцию:
Код: Выделить весь код
Func InitializeCallBack($CallEvery, $FuncName="MyCallBackFunc")
    $pTimerProc = _DllCallBack($FuncName, "hwnd;uint;uint;dword")
    $uiTimer = DllCall("user32.dll", "uint", "SetTimer", "hwnd", 0, "uint", 0, "int", $CallEvery, "ptr", $pTimerProc)
    $uiTimer = $uiTimer[0]
EndFunc
то было бы вообще здорово! А то ведь простое использование знаний не даст.

Отправлено: 14:57, 09-10-2007 | #574


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Maza Faka,
Цитата:
разжевать мне эту функцию:
Там всё просто...
вызывается функция _DllCallBack, которая как бы регистрирует для процесса (скрипта) указанную функцию (через параметр $FuncName), и возвращает на неё указатель..
Далее просто по этому указателю вызывается таймер (строка с вызовом Dll) с заданым временем промежутка между повторами вызова (a.k.a AdibEnable ) - Всё, наша функция вызывается каждый заданный промежуток времени, пока не высвободить таймер (см. в функции Quit()).




Пример-Скрипт для предотвращения ввода не цифр в Input-поле:

Код: Выделить весь код
#include <GuiConstants.au3>

Global Const $WM_COMMAND = 0x0111
Global $GUIOldPos[2]

$GUI = GUICreate("<Only Numbers> in Input Demo GUI", 300, 100)

$Input = GUICtrlCreateInput("", 20, 40, 260, 20)
$Exit = GUICtrlCreateButton("Exit", 20, 70, 60, 20)

GUISetState()
GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND")

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE, $Exit
            ExitLoop
        Case Else
            CheckToolTip()
    EndSwitch
WEnd

Func CheckToolTip()
    Local $GetCurInfo = GUIGetCursorInfo($GUI)
    Local $GuiGetPos = WinGetPos($GUI)
    If $GetCurInfo[2] = 1 Or $GUIOldPos[0] <> $GuiGetPos[0] Or $GUIOldPos[1] <> $GuiGetPos[1] Then
        ToolTip("")
        $GUIOldPos = $GuiGetPos
    EndIf
EndFunc

Func _Input_Changed()
    ToolTip("")
    Local $ReadInput = GUICtrlRead($Input)
    If StringRegExp($ReadInput, '[^0-9]') Then
        GUICtrlSetData($Input, StringRegExpReplace($ReadInput, '[^0-9]', ''))

        Local $GuiGetPos = WinGetPos($GUI)
        Local $XPos = $GuiGetPos[0] + 280
        Local $YPos = $GuiGetPos[1] + 80

        ToolTip("Here only numbers are allowed", $XPos, $YPos, "Not allowed symbol", 3, 1)
        DllCall("user32.dll", "int", "MessageBeep", "int", 0x0)
    EndIf
EndFunc   ;==>_Input_Changed

Func MY_WM_COMMAND($hWnd, $msg, $wParam, $lParam)
    Local $nNotifyCode = BitShift($wParam, 16)
    Local $nID = BitAND($wParam, 0xFFFF)
    Local Const $EN_CHANGE = 0x300
    Local Const $EN_SETFOCUS = 0x100

    Switch $nID
        Case $Input
            Switch $nNotifyCode
                Case $EN_CHANGE
                    _Input_Changed()
                Case $EN_SETFOCUS
                    ToolTip("")
            EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>MY_WM_COMMAND
Многие используют стиль $ES_NUMBER, но он не перестраховывает от вставки текста по Ctrl V или с контексного меню.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:13, 09-10-2007 | #575


Аватара для DenchikK

Старожил


Сообщения: 286
Благодарности: 40

Профиль | Отправить PM | Цитировать


Подскажите пожалуйста, что то я так и не нашёл - как можно настроить скрипт на выход из цикла по нажатию на определённую клавишу?

Вот как то так пытался, не выходит:

Код: Выделить весь код
WinActivate ("µTorrent","")

Sleep (500)

Global $i

$i = 0

While $i <= 10 or Send ('{F2}') 
Sleep (1000)
Send ("{APPSKEY}")
Sleep (1000)
Send ("{UP}{UP}")
Sleep (1000)
Send ("{Enter}")
$i=$i+1
Sleep (1000)

WEnd

Последний раз редактировалось DenchikK, 09-10-2007 в 22:16.


Отправлено: 21:59, 09-10-2007 | #576


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Creat0R,
Цитата Creat0R:
А «Мои документы» тоже нормально отображаются в реестре? »
измененное имя в HKCU аналогично другим, дефолтового действительно нет но его можно взять из параметра Personal ключа "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"
Это сообщение посчитали полезным следующие участники:

Отправлено: 06:05, 10-10-2007 | #577


Новый участник


Сообщения: 35
Благодарности: 0

Профиль | Отправить PM | Цитировать


Привет всем.

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


Проблему решил написав следующий скрипт

Код: Выделить весь код
; выбор одного или нескольких файлов
$files = FileOpenDialog("Пакетное конвертирование файлов", "c:\", "любые файлы (*.*)", 1 + 4 ) & "|"
; если ничего не выбрано то выходим 
If @error Then
	TrayTip("пакетная обработка файлов", 'Выход', 5, 3)
	MsgBox(16,"Информация","Ничего не выбрано", 7)
	Exit
EndIf
$dir_in = StringMid($files,1, StringInStr($files, "\",0,-1))
$Chetchik=1
While $Chetchik<3
  $sch=StringInStr( $files,"|",0,$Chetchik)
  if $sch<>0 Then
	 	 $Chetchik=$Chetchik+1
   Else
	ExitLoop
   endif  
WEnd
; рисуем цикл для двух типов выделений
if $Chetchik>2  Then 
   ; группа файлов
   $i=1
  While StringLen($files)>$i 
  $dir_in = StringReplace(StringReplace(StringMid($files,1, StringInStr($files, "|",0,1)), "|", "\"), "\\", "\")
  $name=StringMid(StringMid($files,StringInStr ( $files,$dir_in)+2 ),StringInStr(StringMid($files,StringInStr ( $files,$dir_in)+2 ),"|",0,$i)+1,StringInStr( StringMid($files,StringInStr ( $files,$dir_in)+2 ),"|",0,$i+1) - StringInStr( StringMid($files,StringInStr ( $files,$dir_in)+2 ),"|",0,$i)-1)
if StringLen($name)>0 Then 
	     $i=$i+1 
		 prt_to_dwg($name)
	 Else
		 ExitLoop
	 endif 	 
   WEnd
Else ; один файл
   $name=StringTrimRight(StringMid($files,StringInStr($files,$dir_in)+StringLen($dir_in)),1)
   prt_to_dwg($name)
EndIf
; конец выполнения программы
TrayTip("пакетная обработка файлов", 'Конец', 5, 1)
 MsgBox(64, "Информация", "Все опрации завершены" )
  
; функция обработки файла  
Func prt_to_dwg($value)
     $value = $value
	 TrayTip("пакетная обработка", 'обработка файла "' & $value & '"', 10, 1)
; для примера откроем блокнот
Run("notepad")
WinWait("Безымянный")
WinActivate("Безымянный")
Send("^o")
WinWait("Открыть")
WinActivate("Открыть")
Sleep(100)
ControlSetText("Открыть", "", "Edit1", $dir_in & $value)
Sleep(5000)
WinClose("Открыть")
WinClose("Безымянный")
WinWaitClose("Безымянный")
EndFunc
Сейчас осенила мысль - неплохо бы написать к этому скрипту GUI
с прогресс баром, возможностью выбора входящих и исходящих папок до и после обработки + возможность
использовать включающий и исключающий фильтр в названиях обрабатываемых файлов.

Посему вопрос: не делал ли кто нибудь нечто похожее? Неохота изобретать велосипед

Отправлено: 07:44, 10-10-2007 | #578


Аватара для Maza Faka

Ветеран


Сообщения: 604
Благодарности: 133

Профиль | Отправить PM | Цитировать


DenchikK
Попробуй так:
Код: Выделить весь код
Dim $i = 0

HotKeySet("{F2}", "Quit")

WinWait("µTorrent")
WinActivate ("µTorrent")

Sleep (500)

While $i <= 10
    Sleep (1000)
    Send ("{APPSKEY}")
    Sleep (1000)
    Send ("{UP}{UP}")
    Sleep (1000)
    Send ("{Enter}")
    $i += 1
    Sleep (1000)
WEnd

Func Quit()
    Exit
EndFunc
Это сообщение посчитали полезным следующие участники:

Отправлено: 07:49, 10-10-2007 | #579


Аватара для Maza Faka

Ветеран


Сообщения: 604
Благодарности: 133

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: rar new.rar
(1.1 Kb, 8 просмотров)

Lodoss
Вот пример как это можно сделать, если нужен законченный скрипт, тогда выкладывай подробности

Отправлено: 12:02, 10-10-2007 | #580



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [архив - Часть 2] AutoIt скрипты

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Открывая 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




 
Переход