Автор Тема: Нужны примеры, как можно нажать на кнопку  (Прочитано 1428 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн lemonia [?]

  • Новичок
  • *
  • Сообщений: 70
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Версия AutoIt: 3.3.12.0

Описание:
Прошу привести примеры, как можно нажать на кнопку, так как пока только начал изучать AutoIt программирование и хочу иметь готовый кусок кода для применения, а также инструкцию, как данные этой кнопки для подстановки в скрипт можно получить. Window Info данные кнопки не определяются. Файл программы http://vedomo.ru/a/s/paketnaia/DjvuOCR.zip.


Внимание: Для просмотра прикреплённых файлов необходимо Войти или Зарегистрироваться
« Последнее редактирование: Апрель 14, 2017, 16:48:29 от lemonia »

Русское сообщество AutoIt

Нужны примеры, как можно нажать на кнопку
« Отправлен: Апрель 14, 2017, 16:42:14 »

Онлайн Khaibit [?]

  • Новичок
  • *
  • Сообщений: 51
  • Репутация: 10
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.6.1
Re: Нужны примеры, как можно нажать на кнопку
« Ответ #1, Отправлен: Апрель 14, 2017, 17:05:34 »
Код: AutoIt [Выделить]
ControlClick('[Class:CustomDlg]', '', '[CLASS:Button; INSTANCE:16]')

Используйте control viever

Оффлайн lemonia [?]

  • Новичок
  • *
  • Сообщений: 70

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: Нужны примеры, как можно нажать на кнопку
« Ответ #2, Отправлен: Апрель 14, 2017, 19:07:59 »
Благодарю. А как можно подняться на уровень вверх?
Вот вместе с той кнопкой, которую Вы подсказали, сначала делаю:
;ControlClick('[Class:CustomDlg]', '', '[CLASS:Button; INSTANCE:16]')
ControlClick('[Class:CustomDlg]', '', '[CLASS:Button; INSTANCE:10]')


Внимание: Для просмотра прикреплённых файлов необходимо Войти или Зарегистрироваться

Онлайн Khaibit [?]

  • Новичок
  • *
  • Сообщений: 51
  • Репутация: 10
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.6.1
Re: Нужны примеры, как можно нажать на кнопку
« Ответ #3, Отправлен: Апрель 14, 2017, 19:55:00 »
У меня нет XP, но если вам известен путь к файлу его можно вставить в поле "Имя файла" и нажать открыть,
Код: AutoIt [Выделить]
ControlSetText('Select DJVU file', '', '[CLASS:Edit; INSTANCE:1]', 'путь'); вставляешь путь к файлу
ControlClick('Select DJVU file', '', '[CLASS:Button; INSTANCE:2]'); нажимаем открыть

можно еще попробовать нажать BackSpace
Код: AutoIt [Выделить]
WinActivate('Select DJVU file', '')
ControlSend('Select DJVU file', '', '', '{BACKSPACE}')


Русское сообщество AutoIt

Re: Нужны примеры, как можно нажать на кнопку
« Ответ #3 Отправлен: Апрель 14, 2017, 19:55:00 »

Оффлайн lemonia [?]

  • Новичок
  • *
  • Сообщений: 70

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: Нужны примеры, как можно нажать на кнопку
« Ответ #4, Отправлен: Апрель 14, 2017, 20:08:28 »
BACKSPACE не работает не в виде этого кода, не на клавиатуре. Допустим нахожусь в окне выбора файла, нажимаю его и на уровень вверх не перескакиваю. Горячая клавиша по описанию в интернете есть, а как ей пользоваться непонятно.


Добавлено: Апрель 14, 2017, 20:27:02
Вообщем понял, что чтобы BACKSPACE сработало, надо мышкой кликнуть внутри окна, там где файлы. Можете ли Вы подправить код с учётом этого?  :think:
« Последнее редактирование: Апрель 14, 2017, 20:27:02 от lemonia, Причина: Объединение сообщений »

Онлайн Khaibit [?]

  • Новичок
  • *
  • Сообщений: 51
  • Репутация: 10
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.6.1
Re: Нужны примеры, как можно нажать на кнопку
« Ответ #5, Отправлен: Апрель 14, 2017, 21:07:38 »
В окно не нужно нажимать, для этого нужна строчка, она активирует окно.
Код: AutoIt [Выделить]
WinActivate('Select DJVU file', '')

Изначально неверный подход, допустим вы подниметесь на уровень выше, а дальше нужно будет еще выбирать папку, файл,
значит должно быть известно место где лежат нужные файлы. Это так?
Укажите в скрипте путь к папке, положите скрипт рядом с программой.
Код: AutoIt [Выделить]
$path = 'C:\folder\' ; вставить путь в папке с файлами
Run('DjvuOCR.exe'); запуск программы рядом со скриптом
WinWait('[Class:CustomDlg]')
ControlClick('[Class:CustomDlg]', '', '[CLASS:Button; INSTANCE:16]')
Sleep(250)
ControlClick('[Class:CustomDlg]', '', '[CLASS:Button; INSTANCE:10]')
WinWait('Select DJVU file', '')
ControlSetText('Select DJVU file', '', '[CLASS:Edit; INSTANCE:1]', $path)
ControlClick('Select DJVU file', '', '[CLASS:Button; INSTANCE:2]')
$search = FileFindFirstFile($path & '*.djvu')
Local $all
While 1
    $file = FileFindNextFile($search)
    If @error Then ExitLoop
    $all &= '"' & $file & '" '
WEnd
ControlSetText('Select DJVU file', '', '[CLASS:Edit; INSTANCE:1]', $all)
ControlClick('Select DJVU file', '', '[CLASS:Button; INSTANCE:2]')


Оффлайн lemonia [?]

  • Новичок
  • *
  • Сообщений: 70

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: Нужны примеры, как можно нажать на кнопку
« Ответ #6, Отправлен: Апрель 14, 2017, 22:33:49 »
Благодарю. Пока что не знаю, как всё это систематизировать в соответствии с полной задачей скрипта. Посмотрите пожалуйста скриншоты в архиве
http://vedomo.ru/a/s/temp/DJVUOCR-s-primerami-dlia-raspakovki.zip
Надо обработать не одну папку, а все по очереди, автоматически беря ещё не обработанную. Там папки с непоследовательными именами. Если их невозможно обрабатывать в таком виде, то могу присваивать имена по порядку, например 1,2,3,4,5 или например 3,4,5,6,7,8. На скриншотах устанавливал курсор на кнопке, на которую надо нажимать.


Добавлено: Апрель 14, 2017, 22:50:27
По поводу пункта «10Выйти на уровень вверх наверное,выбрать эту же папку,ввести её номер и Enter». Это таким образом в каждой папке сохраняется файл настроек для этой папки с именем таким же, как и номер папки.


Внимание: Для просмотра прикреплённых файлов необходимо Войти или Зарегистрироваться
« Последнее редактирование: Апрель 14, 2017, 22:50:27 от lemonia, Причина: Объединение сообщений »

Онлайн Khaibit [?]

  • Новичок
  • *
  • Сообщений: 51
  • Репутация: 10
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.6.1
Re: Нужны примеры, как можно нажать на кнопку
« Ответ #7, Отправлен: Апрель 14, 2017, 22:53:20 »
Я так понимаю сохранять файлы нужно в ту же папку где они были, а программа их перезапишет?
Можно и несколько папок, если они сами в одной папке, так вообще без проблем.
« Последнее редактирование: Апрель 15, 2017, 00:23:54 от Khaibit »

Русское сообщество AutoIt

Re: Нужны примеры, как можно нажать на кнопку
« Ответ #7 Отправлен: Апрель 14, 2017, 22:53:20 »

Оффлайн lemonia [?]

  • Новичок
  • *
  • Сообщений: 70

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: Нужны примеры, как можно нажать на кнопку
« Ответ #8, Отправлен: Апрель 14, 2017, 23:04:32 »
В каждой папке, где DJVU файлы, распаковываются картинки из этих же файлов и сохраняется файл настроек с этим же именем, что и имя этой папки на шаге
«10Выйти на уровень вверх наверное,выбрать эту же папку,ввести её номер и Enter»

Ещё забыл, что после этого шага надо нажать кнопку «Create FR8 Batch» и подождать секунд 10.

Цитировать
а программа их перезапишет?
Программа их не перезапишет, они будут лежать в этой папке для того, чтобы их там распознала программа Finereader в последствии, то есть это будут потом уже файлы с текстом на следующем этапе.


Внимание: Для просмотра прикреплённых файлов необходимо Войти или Зарегистрироваться
« Последнее редактирование: Апрель 14, 2017, 23:14:32 от lemonia »

Онлайн Khaibit [?]

  • Новичок
  • *
  • Сообщений: 51
  • Репутация: 10
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.6.1
Re: Нужны примеры, как можно нажать на кнопку
« Ответ #9, Отправлен: Апрель 15, 2017, 00:23:37 »
Код: AutoIt [Выделить]
$path = '\faili-primerov\' ; вставить путь к папке с папками
Run('DjvuOCR.exe'); запуск программы рядом со скриптом
WinWait('[Class:CustomDlg]')
WinActivate('[Class:CustomDlg]')
ControlClick('[Class:CustomDlg]', '', '[CLASS:Button; INSTANCE:16]');decoder
Sleep(250)
$search1 = FileFindFirstFile($path & '*.*')
Local $folder
While 1
    $folder = FileFindNextFile($search1)
    If @error Then ExitLoop
    If @extended = 1 Then
        ControlClick('[Class:CustomDlg]', '', '[CLASS:Button; INSTANCE:10]');add
        WinWait('Select DJVU file', '')
        ControlSetText('Select DJVU file', '', '[CLASS:Edit; INSTANCE:1]', $path & $folder)
        ControlClick('Select DJVU file', '', '[CLASS:Button; INSTANCE:2]'); нажимаем открыть
        Sleep(250)
        ControlFocus('Select DJVU file', '','[CLASS:DirectUIHWND; INSTANCE:2]')
        ControlSend('Select DJVU file', '','[CLASS:DirectUIHWND; INSTANCE:2]', '^a')
        Sleep(250)
        ControlClick('Select DJVU file', '', '[CLASS:Button; INSTANCE:2]') ; нажимаем открыть
        WinWaitClose('Select DJVU file', '')
        ControlSetText('[Class:CustomDlg]', '', '[CLASS:Edit; INSTANCE:2]', $path & $folder); вставляем папку назачения
        Sleep(250)
        ControlClick('[Class:CustomDlg]', '', '[CLASS:Button; INSTANCE:18]');жмем прогресс
        WinWaitClose('Decoding process...', 'Stop decoding')
        WinWait('Decoder', '')
        ControlClick('Decoder', '', '[CLASS:Button; INSTANCE:1]');yes
        WinWait('Name for output OCR TXT file', '')
        ControlSetText('Name for output OCR TXT file', '', '[CLASS:Edit; INSTANCE:1]', $folder)
        Sleep(250)
        ControlClick('Name for output OCR TXT file', '', '[CLASS:Button; INSTANCE:2]');save
        Sleep(250)
        ControlClick('[Class:CustomDlg]', '', '[CLASS:Button; INSTANCE:32]');Create FR8 Batch
        Sleep(10000);10sek
        ControlClick('[Class:CustomDlg]', '', '[CLASS:Button; INSTANCE:14]'); мжеме очиститиь
        Sleep(250)
    EndIf
WEnd

как-то так, ошибки можно отловит и посчитать, но нужен заголовок окна и класс кнопки, просто повторить ошибку не удалось

Оффлайн lemonia [?]

  • Новичок
  • *
  • Сообщений: 70

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: Нужны примеры, как можно нажать на кнопку
« Ответ #10, Отправлен: Апрель 15, 2017, 01:17:34 »
Благодарю. Останавливается в момент выбора папки с файлами. Думаю, что не переходит внутрь окна, чтобы можно было нажать Cntrl+A. Видео:
http://vedomo.ru/a/s/temp/PICT2753.AVI

По поводу, что ранее обсуждали насчёт перехода на уровень вверх. Вот такой вариант, который возможно можно усовершенствовать, записывал рекордером из папки установки AutoIT (C:\Program Files\AutoIt3\Extras\Au3Record\Au3Record.exe) и вместо координат мыши подставлял из вашего примера, это работало:ControlClick('[Class:CustomDlg]', '', '[CLASS:Button; INSTANCE:16]')
ControlClick('[Class:CustomDlg]', '', '[CLASS:Button; INSTANCE:10]')
_WinWaitActivate("Select DJVU file","")
Send("{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{BACKSPACE}")

Ещё делал пример того, как должны выглядеть файлы после обработки:
http://vedomo.ru/a/s/temp/Primeri-papok-s-failami-posle-DJVUOCR.zip



Добавлено: Апрель 15, 2017, 02:34:30
На всякий случай вариант без перехода на уровень вверх:
WinWaitActivate("Select DJVU file","")
Send("{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{CTRLDOWN}a{CTRLUP}{ENTER}")
Видео:
http://vedomo.ru/a/s/temp/PICT2754.AVI


Внимание: Для просмотра прикреплённых файлов необходимо Войти или Зарегистрироваться
« Последнее редактирование: Апрель 15, 2017, 02:34:30 от lemonia, Причина: Объединение сообщений »

Оффлайн Alofa [?]

  • Скриптер
  • ****
  • Сообщений: 1054
  • Репутация: 137
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: Нужны примеры, как можно нажать на кнопку
« Ответ #11, Отправлен: Апрель 15, 2017, 02:42:05 »
OffTopicХмм... Первый раз встречаюсь с тем, что "Window Info" и "Control Viewer" видят по разному.
Нет, ну понятно - разные разработчики, их подготовка и знания, но... Но как так-то? :stars:

Онлайн Khaibit [?]

  • Новичок
  • *
  • Сообщений: 51
  • Репутация: 10
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.6.1
Re: Нужны примеры, как можно нажать на кнопку
« Ответ #12, Отправлен: Апрель 15, 2017, 09:30:34 »
Благодарю. Останавливается в момент выбора папки с файлами. Думаю, что не переходит внутрь окна, чтобы можно было нажать Cntrl+A.
А раскладка клавиатуры какая стоит?
попробуйте заменить строку
Код: AutoIt [Выделить]
ControlSend('Select DJVU file', '','[CLASS:DirectUIHWND; INSTANCE:2]', '^a')

на
Код: AutoIt [Выделить]
ControlSend('Select DJVU file', '','[CLASS:DirectUIHWND; INSTANCE:2]', '^ф')

или на
Код: AutoIt [Выделить]
ControlSend('Select DJVU file', '','[CLASS:DirectUIHWND; INSTANCE:2]', '{CTRLDOWN}a{CTRLUP}')


Оффлайн lemonia [?]

  • Новичок
  • *
  • Сообщений: 70

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: Нужны примеры, как можно нажать на кнопку
« Ответ #13, Отправлен: Апрель 15, 2017, 10:08:07 »
раскладка клавиатуры английская. попробовал оба варианта, они не работают  :'(. То же самое в окне, изменений нет.

Онлайн Khaibit [?]

  • Новичок
  • *
  • Сообщений: 51
  • Репутация: 10
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.6.1
Re: Нужны примеры, как можно нажать на кнопку
« Ответ #14, Отправлен: Апрель 15, 2017, 14:08:45 »
раскладка клавиатуры английская. попробовал оба варианта, они не работают  :'(. То же самое в окне, изменений нет.
Поставил XP на виртуалку, понял где возможна загвоздка, попробуйте так

Код: AutoIt [Выделить]
$path = '\faili-primerov\' ; вставить путь к папке с папками
Run('DjvuOCR.exe'); запуск программы рядом со скриптом
WinWait('[Class:CustomDlg]')
WinActivate('[Class:CustomDlg]')
ControlClick('[Class:CustomDlg]', '', '[CLASS:Button; INSTANCE:16]');decoder
Sleep(250)
$search1 = FileFindFirstFile($path & '*.*')
Local $folder
While 1
    $folder = FileFindNextFile($search1)
    If @error Then ExitLoop
    If @extended = 1 Then
        ControlClick('[Class:CustomDlg]', '', '[CLASS:Button; INSTANCE:10]');add
        WinWait('Select DJVU file', '')
        ControlSetText('Select DJVU file', '', '[CLASS:Edit; INSTANCE:1]', $path & $folder)
        ControlClick('Select DJVU file', '', '[CLASS:Button; INSTANCE:2]'); нажимаем открыть
        Sleep(250)
        ControlFocus('Select DJVU file', '', '[CLASS:DirectUIHWND; INSTANCE:2]')
        ControlListView('Select DJVU file', '', '[CLASS:SysListView32; INSTANCE:1]', 'SelectAll')
        Sleep(250)
        ControlClick('Select DJVU file', '', '[CLASS:Button; INSTANCE:2]') ; нажимаем открыть
        WinWaitClose('Select DJVU file', '')
        ControlSetText('[Class:CustomDlg]', '', '[CLASS:Edit; INSTANCE:2]', $path & $folder); вставляем папку назачения
        Sleep(250)
        ControlClick('[Class:CustomDlg]', '', '[CLASS:Button; INSTANCE:18]');жмем прогресс
        WinWaitClose('Decoding process...', 'Stop decoding')
        WinWait('Decoder', '')
        ControlClick('Decoder', '', '[CLASS:Button; INSTANCE:1]');yes
        WinWait('Name for output OCR TXT file', '')
        ControlSetText('Name for output OCR TXT file', '', '[CLASS:Edit; INSTANCE:1]', $folder)
        Sleep(250)
        ControlClick('Name for output OCR TXT file', '', '[CLASS:Button; INSTANCE:2]');save
        Sleep(250)
        ControlClick('[Class:CustomDlg]', '', '[CLASS:Button; INSTANCE:32]');Create FR8 Batch
        Sleep(10000);10sek
        ControlClick('[Class:CustomDlg]', '', '[CLASS:Button; INSTANCE:14]'); мжеме очиститиь
        Sleep(250)
    EndIf
WEnd


Русское сообщество AutoIt

Re: Нужны примеры, как можно нажать на кнопку
« Ответ #14 Отправлен: Апрель 15, 2017, 14:08:45 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
10 Ответов
7019 Просмотров
Последний ответ Сентябрь 04, 2009, 18:01:39
от CreatoR
13 Ответов
9351 Просмотров
Последний ответ Декабрь 07, 2009, 01:56:15
от Latoid
11 Ответов
9117 Просмотров
Последний ответ Октябрь 27, 2010, 22:17:22
от Sky-WaLkeR
2 Ответов
3226 Просмотров
Последний ответ Февраль 24, 2011, 22:18:16
от `p r o x y
10 Ответов
3486 Просмотров
Последний ответ Июнь 08, 2012, 16:54:24
от Viktor1703
2 Ответов
1481 Просмотров
Последний ответ Июнь 01, 2013, 18:21:01
от AZJIO
1 Ответов
1122 Просмотров
Последний ответ Февраль 10, 2014, 23:55:48
от sngr
1 Ответов
1518 Просмотров
Последний ответ Июнь 20, 2014, 09:58:38
от C2H5OH
6 Ответов
3808 Просмотров
Последний ответ Апрель 03, 2015, 10:43:27
от Yashied
2 Ответов
806 Просмотров
Последний ответ Февраль 16, 2017, 23:00:43
от SharkyEXE