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

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

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

(*.*)


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


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

Профиль | Сайт | Отправить 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

 

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

Ветеран


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

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


MaxxQ
Код: Выделить весь код
$checksum = PixelChecksum(0,0, 50,50)

While $checksum <> 1111111111
    $checksum = PixelChecksum(0,0, 50,50)
    Send("{x}")
    Sleep(500)
WEnd

Send("{z}")
В справке это есть.
Это сообщение посчитали полезным следующие участники:

Отправлено: 08:45, 05-11-2007 | #681



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

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


Аватара для TERMINAL

Ветеран


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

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


После компилировании в *.exe файл и старте его, возможно ли сделать этот файл невидимым процессом в диспетчере задач?

-------
Автоматизация прежде всего....


Отправлено: 09:33, 05-11-2007 | #682


Аватара для Creat0R

Must AutoIt


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

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


TERMINAL,
Цитата:
возможно ли сделать этот файл невидимым процессом в диспетчере задач?
Полностью невидемым не уверен, но можно сделать что-то в этом роде:

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

$Process = "AutoIt3.exe"
$TaskMgr_Title = "Диспетчер задач Windows"
$TaskMgr_LV_hWnd = ControlGetHandle($TaskMgr_Title, "", "SysListView321")

While 1
    Sleep(100)
    $TaskMgrActiveMark = 0

    While Not BitAND(WinGetState($TaskMgr_Title), 2)
        Sleep(100)
        $TaskMgrActiveMark = 1
    WEnd

    If $TaskMgrActiveMark = 1 Then
        $TaskMgr_LV_hWnd = ControlGetHandle($TaskMgr_Title, "", "SysListView321")
        ControlSend($TaskMgr_Title, "", "", "{Alt}{Right 2}{Down 2}{Right}{Up}{Enter}")
    EndIf

    $Index = _ListView_FindText($TaskMgr_LV_hWnd, $Process, -1, False)
    If $Index = -1 Then ContinueLoop
    _ListView_DeleteItem($TaskMgr_LV_hWnd, $Index)
WEnd
Требуется библиотека A3LLibrary.




О, вот метод попроще (кажется amel27 его написал):

Код: Выделить весь код
HotKeySet("{Esc}", "Quit")

$ProcName = "AutoIt3.exe"
HideProcess("Диспетчер задач Windows", $ProcName)

Func HideProcess($TaskManTitle, $ProcName)
    Local $FindIndex, $hwnd
    While 1
        $FindIndex = ControlListView($TaskManTitle, "", 1009, "FindItem", $ProcName)
        If $FindIndex = -1 Then
            Sleep(5)
        Else
            $hwnd = ControlGetHandle($TaskManTitle, "", 1009)
            DllCall("user32.dll", "int", "SendMessage", "hwnd", $hwnd, "int", 0x1008, "int", $FindIndex, "int", 0)
        EndIf
    WEnd
EndFunc

Func Quit()
    Exit
EndFunc

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

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

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

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

Отправлено: 10:43, 05-11-2007 | #683


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


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

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


Maza Faka спасибо большое, а как сделать что бы после выполнения Send("{z}"), продолжить выполнение сценария, т.е сейчас пока не найдено заначение 1111111111 выполняется Send("{x}"), а при верном значении выполняется Send("{z}") и все скрипт закрывается, а мне нужно что бы Send("{z}") выполнялось до тех пор, пока значение опять станет неверным и начнется ваполнение Send("{x}"), подскажите пожалуйста.

Отправлено: 17:03, 05-11-2007 | #684


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


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

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


Извините за глупые вопросы ( я дуб дубом в написании скриптов ), но вот при выполнении сценария который постил выше Maza Faka, при появлении в области (0,0, 50,50) значения 1111111111, еще раз выполняется команда Send("{x}"), а уже потом Send("{z}") ( это хорошо видно если установить значение Sleep(10000)), а как сделать что бы при появлении в области значения 1111111111 следующая команда была нужно т.е Send("{z}") (а не ждать выполнения Send("{x}"), когда уже область изменена на выполнение Send("{z}"))???????
p.s надеюсь не слишком запутанно написал

Отправлено: 18:01, 05-11-2007 | #685


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

Ветеран


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

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


MaxxQ
Попробуй так:
Код: Выделить весь код
HotKeySet("{Esc}", "ExitFunc")

$checksum = PixelChecksum(0, 0, 50, 50)

SendX()

Func SendX()
    While 1
        $checksum = PixelChecksum(0,0, 50,50)
        If $checksum = 1111111111 Then ExitLoop
            Send("{x}")
            Sleep(500)
        WEnd
        SendZ()
    EndFunc

Func SendZ()
    While 1
        If $checksum <> 1111111111 Then ExitLoop
            $checksum = PixelChecksum(0,0, 50,50)
            Send("{z}")
            Sleep(500)
        WEnd
        SendX()
    EndFunc

Func ExitFunc()
    Exit
EndFunc

Последний раз редактировалось Maza Faka, 05-11-2007 в 18:27. Причина: Коррекция

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

Отправлено: 18:19, 05-11-2007 | #686


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


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

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


Спасибо Maza Faka

А как сделать что бы нажатие клавиш было по одному разу (изменилась область на 1111111111 один раз нажатие Send("{x}") , изменилось на другое один раз Send("{z}") и т.д ,а не постоянное нажатие.?????

ну подскажите пожалуйста кто нибудь

Последний раз редактировалось MaxxQ, 05-11-2007 в 19:42.


Отправлено: 19:06, 05-11-2007 | #687


Пользователь


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

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


Как реализовать скрипт чтоб курсор двигался по кругу диаметром 100пиксел и во время движения курсора неприрывно кликалась правая кнопка мыши
У меня получается либо только движение либо только кликание правой кнопкой.
Тоесть ненадо пооочереди, а сразу синхроннно движение по кркгу и кликание правой кнопкой.

Отправлено: 22:06, 05-11-2007 | #688


Аватара для Creat0R

Must AutoIt


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

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


kagorec,
Цитата:
Как реализовать скрипт чтоб курсор двигался по кругу диаметром 100пиксел и во время движения курсора неприрывно кликалась правая кнопка мыши
Кликания правой кнопкой могут вызывать проблемы в некоторых случаях, вот пример с движением мышки по кругу и зажатие левой кнопки мышки (рисует круг в MSPaint):

Код: Выделить весь код
$MsPaintPid = Run("mspaint")
ProcessWait($MsPaintPid)
WinActivate("[CLASS:MSPaintApp]")

_MouseMoveCircle(220, 180, 100, 625, 1)

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("Left")
        $MouseClick_Mark = 0
    Until $TimeDiff > $TimeExp
    If $MouseClick <> 0 Then MouseUp("Left")
EndFunc
Чтобы поменять кнопку на правую нужно заменить “Left” на “Right”

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

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

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


Последний раз редактировалось Creat0R, 06-11-2007 в 09:09.

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

Отправлено: 02:11, 06-11-2007 | #689


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

Ветеран


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

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


MaxxQ
Вот если бы не ленился заглядывать в справку, то уже давно нашёл бы решение такой простой задачки
Код: Выделить весь код
HotKeySet("{Esc}", "ExitFunc")

SendX()

Func SendX()
    While 1
        $checksum = PixelChecksum(0,0, 50,50)
        If $checksum = 1111111111 Then
            Send("{x}")
            ExitLoop
        EndIf
        Sleep(100)
    WEnd
    SendZ()
EndFunc

Func SendZ()
    While 1
        $checksum = PixelChecksum(0,0, 50,50)
        If $checksum <> 1111111111 Then
            Send("{z}")
            ExitLoop
        EndIf
        Sleep(100)
    WEnd
    SendX()
EndFunc

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

Отправлено: 07:17, 06-11-2007 | #690



Компьютерный форум 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




 
Переход