Автор Тема: действия с текстом и нажатия комбинаций клавиш в активном окне  (Прочитано 2084 раз)

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

Оффлайн Alofa [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1405
  • Репутация: 205
  • Пол: Мужской
  • Windows 7 /10 [x64]
    • Награды
  • Версия AutoIt: 3.3.12.0
Скрипт всегда ждет (не более 5 секунд) активное окно блокнота2 со следующим содержанием:
... пример:
вот это имеется прямо перед запуском скрипта:
FILE "CDImage.wav" WAVE
  TRACK 01 AUDIO
    INDEX 01 00:00:00
  TRACK 02 AUDIO
    INDEX 01 03:54:00
  TRACK 03 AUDIO
    INDEX 01 07:30:02

Title 01
Title 02
Title 03

...

и делает из всего этого:
FILE "1.flac" WAVE
  TRACK 01 AUDIO
    TITLE "Title 01"
    INDEX 01 00:00:00
  TRACK 02 AUDIO
    TITLE "Title 02"
    INDEX 01 03:54:00
  TRACK 03 AUDIO
    TITLE "Title 03"
    INDEX 01 07:30:02
с сохранением и закрытием окна.



Добавлено: Май 01, 2018, 10:06:59
... Пункт 3) и 4)
но пункт 4 - это из другой темы предыдущий скрипт...
Решение пункта 4) тоже здесь присутствует, но только в другом исполнении.
« Последнее редактирование: Май 01, 2018, 10:07:56 от Alofa »

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


Оффлайн Alexey [?]

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

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
не работает совсем. сначала я пробовал с включённой строкой 10, так как от скрипта нажатие ctrl+v всё-таки требуется
в итоге было испорчено содержимое другого открытого, но не активного окна блокнота (с этим окном скрипт не должен был вообще что-либо делать)
из окон блокнота оно предыдущее на панели задач (предпоследнее)
и туда скрипт вставил содержимое буфера обмена

затем я пробовал с выключённой строкой 10 (перед запуском скрипта ctrl+v нажал сам). в итоге скрипт ничего не сделал

попытаюсь озвучить максимально чётко свои соображения на данный момент. в надежде, что они не будут проигнорированы:

1) от скрипта не требуется ждать 5 или сколько-то секунд, он должен исполняться сразу после того как был мной запущен (и закрываться сам после выполнения)
раз уж в данном виде скрипт всё равно не работает, не будет ли проще и надёжнее реализовать его в том виде, о котором я просил?
то есть, пусть скрипт просто выполняется применительно к последнему окну блокнота в панели задач
вне зависимости от его состояния (активное/неактивное)

Цитировать
Скрипт всегда ждет (не более 5 секунд) активное окно блокнота2 со следующим содержанием:
2) на всякий случай упомяну, что:
"следующего содержания" не будет никогда, так как строки Title 01 и Title 02 и Title 03 являются примером (на их местах всегда какие-то другие слова)
этих строк в данном примере 3, а в реальности этих строк может быть другое количество

эти первые 7 строк примера являются содержимым буфера обмена, которое вставляется по нажатию на ctrl+v:
FILE "CDImage.wav" WAVE
  TRACK 01 AUDIO
    INDEX 01 00:00:00
  TRACK 02 AUDIO
    INDEX 01 03:54:00
  TRACK 03 AUDIO
    INDEX 01 07:30:02
опять же, это содержимое всегда похоже визуально, но всегда разное (отличается количество строк и отличаются цифры)

если по работе скрипта требуются какие-то дополнительные пояснения с моей стороны, то они будут даны обязательно, это не проблема

Оффлайн Khaibit [?]

  • Осваивающий
  • **
  • Сообщений: 71
  • Репутация: 20
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.6.1
попытаюсь озвучить максимально чётко свои соображения
Вот уже на протяжении дюжины сообщений у вас это не получается.
Вот, на пример, когда вы приходите к сапожнику, вы тоже начинаете рассказывать ему как нужно делать?
Пока вы не скажите что это за файл, как выглядит, откуда берется,  как он попадает в блокнот, что получается в результате..., ничего не получится.

Оффлайн Alofa [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1405
  • Репутация: 205
  • Пол: Мужской
  • Windows 7 /10 [x64]
    • Награды
  • Версия AutoIt: 3.3.12.0
OffTopicДааа, опять проблемы со взаимопониманием

... было испорчено содержимое другого открытого, но не активного окна блокнота...
Быть такого не может. Скрипт не сдвинется с места пока не найдет АКТИВНОЕ окно с классом "Notepad2".

... он должен исполняться сразу после того как был мной запущен (и закрываться сам после выполнения)...
Именно так он и делает.

... на всякий случай упомяну, что:
"следующего содержания" не будет никогда...
Да? А как же это:
(нажмите для показа/скрытия)
На всякий случай упомяну, что далее наступает очередь пункта 4), а что там должно быть выполнено?
... однократный запуск вот этого стороннего готового скрипта...
К несчастью (наверное) я его вспомнил, почитайте тему откуда он и припомните тоже.
А вот что по вашему мнению он (этот кусок кода) должен делать?

... эти первые 7 строк примера являются содержимым буфера обмена, которое вставляется по нажатию на ctrl+v...
То есть, если я вас правильно понимаю, это и есть тот текст с которым нужно работать, не трогая в файле все остальное?
Это я к чему: ведь можно сразу вставлять в поле блокнота уже готовый, обработанный текст.
« Последнее редактирование: Май 01, 2018, 20:00:09 от Alofa »

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


Оффлайн Alexey [?]

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

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
Цитировать
Быть такого не может
я написал как есть. ничего не выдумывал и не наговаривал

почему мои искренние попытки подробно пояснить суть задачи воспринимаются негативно?
почему мои детальные сообщения о том, что не так происходит со скриптом воспринимаются с необоснованными и незаслуженными претензиями?

но самое главное всё-таки другое: что конкретно мне ещё нужно написать/дорассказать/пояснить/уточнить, чтобы мои слова/просьбы были услышаны и этот скрипт стал рабочим?
услышаны, а не проигнорированы, как это было неоднократно

Оффлайн Alofa [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1405
  • Репутация: 205
  • Пол: Мужской
  • Windows 7 /10 [x64]
    • Награды
  • Версия AutoIt: 3.3.12.0
... что конкретно мне ещё нужно написать...
Ответьте на мои вопросы прошлого поста.

Оффлайн Alexey [?]

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

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
Цитировать
Ответьте на мои вопросы прошлого поста
попробую ответить как могу, хотя уже просто откровенно опасаюсь что-либо подробно писать
нервы у всех разные и я ещё не вполне отошёл от предыдущей реакции на свои пояснения (на мой взгляд, необоснованно резкой реакции)
и даже уже не знаю, какими ещё словами донести, что у меня нет цели никого здесь пораздражать/подоставать или намеренно самому тупить

задача объяснена очень детально ещё в первом сообщении, на создание которого были потрачены десятки минут
и каждая фраза там продумана и выверена, чтобы свести к минимуму возможное частичное непонимание каких-то нюансов со стороны тех, кто возьмутся помочь
теперь к вопросам:

Цитировать
Да? А как же это:
свою фразу: "следующего содержания" не будет никогда
я не просто так бросил, а сразу пояснил, что имеется в виду
в виду имелось, что в буквальном смысле именно этих символов и именно этих строк не будет никогда, это для наглядности был пример/шаблон
и вот эти мои 2 примера остаются актуальными:
вот это имеется прямо перед запуском скрипта
вот это должно получиться сразу после завершения работы скрипта

Цитировать
далее наступает очередь пункта 4), а что там должно быть выполнено?
должено быть выполнено то, что прописано в первом сообщении темы:
то есть, либо давно готовый скрипт, либо его замена, выполняющая тоже самое; именно замена и была сделана, о чём говорит вот эта фраза:
Решение пункта 4) тоже здесь присутствует, но только в другом исполнении
ну а в целом, готовый скрипт (либо его замена) должны выполнять перенос строк особым образом (это мы помним, поскольку данная задача была решена ранее в другой теме)

Цитировать
А вот что по вашему мнению он (этот кусок кода) должен делать?
если речь о скрипте из старой темы, то прямо выше я на это уже ответил (то есть, он должен делать перенос строк особым образом)

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

Title 01
Title 02
Title 03

подчёркиваю, это только пример:
цифры (которые станут видны чуть ниже в этом сообщении) всегда будут частично другими, а вместо строк Title 01, Title 02, Title 03 всегда будут разные слова или словосочетания

затем скрипт выполняет вставку (и для этого нужен ctrl+v) моего подготовленного в другой программе короткого текстового фрагмента (он всегда разный)
и тогда содержимое нужного окна блокнота становится таким:
FILE "CDImage.wav" WAVE
  TRACK 01 AUDIO
    INDEX 01 00:00:00
  TRACK 02 AUDIO
    INDEX 01 03:54:00
  TRACK 03 AUDIO
    INDEX 01 07:30:02

Title 01
Title 02
Title 03


затем требуется выполнение пунктов 2 и 3 из первого сообщения этой темы
после их выполнения выглядит текст так:
FILE "1.flac" WAVE
  TRACK 01 AUDIO
    TITLE ""
    INDEX 01 00:00:00
  TRACK 02 AUDIO
    TITLE ""
    INDEX 01 03:54:00
  TRACK 03 AUDIO
    TITLE ""
    INDEX 01 07:30:02

Title 01
Title 02
Title 03


затем требуется выполнение пункта 4 из первого сообщения этой темы (мне не важно как именно, лишь бы работало не хуже, чем работал проверенный скрипт из старой темы)
после выполнения пункта 4 выглядит текст так:
FILE "1.flac" WAVE
  TRACK 01 AUDIO
    TITLE "Title 01"
    INDEX 01 00:00:00
  TRACK 02 AUDIO
    TITLE "Title 02"
    INDEX 01 03:54:00
  TRACK 03 AUDIO
    TITLE "Title 03"
    INDEX 01 07:30:02

затем требуется выполнение пунктов 5 и 6 из первого сообщения этой темы: сохранение и закрытие окна

если вдруг моё пожелание/просьба будет всё-таки в итоге учтена:
вычисляем, какой файл открыт в последнем окне блокнота в панели задач, закрываем это окно и далее работаем с файлом
то пункт 6 не понадобится, а мне при таком варианте будет чуть лучше/удобнее

Оффлайн Alofa [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1405
  • Репутация: 205
  • Пол: Мужской
  • Windows 7 /10 [x64]
    • Награды
  • Версия AutoIt: 3.3.12.0
Ох много чего хотелось сказать, но думаю не стоит.
В место этого, чтобы вы и те, кто будет читать этот пост понимали как я, человек который привык видеть воплощение задачи в коде, воспринимаю подобные темы.
А воспринимаю я это буквально. Для меня нужно знать все детально, пошагово: каждый шаг может привести к тому или иному результату – что делать и как реагировать на него и какой будет следующий шаг. А вот отрывки примеров тех или иных файлов я воспринимаю как шаблон, некую структуру, которая берется за основу.
И так, с учетом всего вышесказанного взгляните снова на Ответ #15, каков там результат (шаблон) -  я именно все так и описал, как вы в вашем предыдущем посте.
И тут вы заявляете:
... "следующего содержания" не будет никогда...
Я это понимаю так: "такого шаблона не будет никогда".
И что мне при этом думать?
Или вот  еще:
... я на это уже ответил (то есть, он должен делать перенос строк особым образом)...
А о чем существенном эта фраза мне может поведать? Да ни о чем. Мне пришлось перечитывать старую вашу тему, чтобы вспомнить этот "особый образ переноса".

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


Оффлайн Alexey [?]

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

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
нелепость ситуации в том, что я тоже воспринимаю буквально. и под фразой
Цитировать
... "следующего содержания" не будет никогда...
я имел в виду: именно такого содержания (именно с такими символами/буквами/цифрами) не будет никогда
то есть, я давал понять, что это только пример/ориентир (по виду и сути очень близкий к тому, что будет отображаться каждый раз в реальных условиях использования скрипта)

Цитировать
А о чем существенном эта фраза мне может поведать?
про перечитывание понимаю, так как это нужно мне в первую очередь, поэтому только я держу постоянно в голове принцип этого "особого образа переноса"
но действительно ли этот момент является настолько существенным? ведь изначально в первом сообщении сказано:
Цитировать
однократный запуск вот этого стороннего готового скрипта
не было ли возможности в этот новый скрипт просто разместить/скопировать/интегрировать без изменений (или почти без изменений) весь тот старый скрипт?


если какие-то мои пояснения сбили с толку, то прошу за это прощения; это было не намеренно
я наоборот пытался формулировать как можно детальнее, чтобы были понятны все нюансы

в любом случае на данный момент скрипт использовать никак не получается. в чём может быть причина того, что:
- вставка из буфера обмена произошла в соседнее окно блокнота?
- а при варианте без вставки скрипт вообще ничего не делает

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

Оффлайн Alofa [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1405
  • Репутация: 205
  • Пол: Мужской
  • Windows 7 /10 [x64]
    • Награды
  • Версия AutoIt: 3.3.12.0
Попробуйте этот вариант:
(нажмите для показа/скрытия)
« Последнее редактирование: Май 04, 2018, 19:47:43 от Alofa »

Оффлайн Alexey [?]

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

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
Цитировать
Попробуйте этот вариант
несколько раз попробовал - ничего не происходит

вдогонку добавлю наблюдение про предыдущий вариант скрипта:
если строку 5
$hWnd = WinWaitActive('[REGEXPCLASS:(?i)Notepad2]', '', 5)
изменить на
$hWnd = WinWaitActive('[ACTIVE]', '', 5)то вставка из буфера обмена происходит в нужное окно блокнота

Оффлайн Alofa [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1405
  • Репутация: 205
  • Пол: Мужской
  • Windows 7 /10 [x64]
    • Награды
  • Версия AutoIt: 3.3.12.0
Прошу прощения за невнимательность.
С учетом этого
... окно блокнота принадлежит файлу notepad.exe...
изменил скрипт.


Добавлено: Май 03, 2018, 10:37:25
Первый скрипт тоже подправил.
« Последнее редактирование: Май 03, 2018, 10:37:25 от Alofa, Причина: Объединение сообщений »

Оффлайн Alexey [?]

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

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
я пробовал несколько раз оба подправленных варианта, ничего в них не меняя:
вариант 1: ничего не происходит
вариант 2: происходит вставка из буфера обмена, затем ничего не происходит

я запускал вариант 1, убрав первые 2 символа в строке 10:
вставка из буфера обмена происходит не в то окно блокнота, которое нужно, а в предыдущее на панели задач (затем ничего не происходит)

также я попробовал вариант 1, убрав первые 2 символа в строке 10, а также заменив эти символы в строке 5:
[REGEXPCLASS:(?i).*Pad.*]
на символы:
[REGEXPCLASS:(?i).*?Pad.*?]которые взяты из старой темы (ведь у того готового скрипта нет проблем ни с определением нужного окна блокнота, ни с обработкой текста в самом окне)
в итоге тоже самое:
вставка из буфера обмена происходит не в то окно блокнота, которое нужно, а в предыдущее на панели задач (затем ничего не происходит)

Оффлайн Alofa [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1405
  • Репутация: 205
  • Пол: Мужской
  • Windows 7 /10 [x64]
    • Награды
  • Версия AutoIt: 3.3.12.0
Alexey давайте поэкспериментируем (заодно вы увидите как я понял вашу задачу):
- Скомпилируйте второй вариант скрипта
- Перейдите с ним на другой ПК (для чистоты эксперимента)
- Откройте там несколько файлов .cue (окон "notepad2"), исполняемый файл должен быть "notepad.exe"
- В последнее окно (файл) вставьте и сохраните
Цитировать
Title 01
Заголовок 02
Еще текст 03
- Возьмите в буфер обмена
Цитировать
FILE "CDImage.wav" WAVE
  TRACK 01 AUDIO
    INDEX 01 00:00:00
  TRACK 02 AUDIO
    INDEX 02 33:333:33
  TRACK 03 AUDIO
    INDEX 03 44:44:44
- деактивируйте последнее (нужное нам) окно блокнота
- запустите скомпилированный скрипт от имени администратора
- наблюдайте что будет, отпишитесь.

Оффлайн Alexey [?]

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

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
внимательно сделал всё кроме чистоты эксперимента (нет возможности перейти на другой ПК)
Цитировать
наблюдайте что будет
нужное окна блокнота активировалось, туда вставилось содержимое буфера обмена, и получилось это:
Цитировать
FILE "CDImage.wav" WAVE
  TRACK 01 AUDIO
    INDEX 01 00:00:00
  TRACK 02 AUDIO
    INDEX 02 33:333:33
  TRACK 03 AUDIO
    INDEX 03 44:44:44Title 01
Заголовок 02
Еще текст 03
больше ничего не происходило

есть ли техническая возможность попробовать пойти по-другому?
а именно полностью взять за основу скрипт из старой темы; никак (почти никак) его не сокращать и не оптимизировать (раз уж он гарантированно рабочий)
и пока добавить туда только часть пунктов из этой темы
пункт 3 в любом случае необходим, а с ним можно заодно и пункт 2, а можно и без пункта 2 пока (то есть начать только с добавления пункта 3)
тогда остальные пункты будут временно делаться мной вручную. вроде бы не самая плохая идея, я бы хотел её попробовать в деле

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


 

Похожие темы

  Тема / Автор Ответов Последний ответ
1 Ответов
2517 Просмотров
Последний ответ Август 06, 2012, 00:36:40
от DarWiM
1 Ответов
1528 Просмотров
Последний ответ Март 06, 2013, 19:28:41
от InnI
0 Ответов
1441 Просмотров
Последний ответ Июнь 14, 2013, 20:12:29
от madmasles
4 Ответов
2009 Просмотров
Последний ответ Март 05, 2014, 14:04:11
от Yuriy
1 Ответов
1595 Просмотров
Последний ответ Май 30, 2014, 13:32:39
от InnI
5 Ответов
3732 Просмотров
Последний ответ Апрель 07, 2015, 18:41:20
от darklord422
2 Ответов
1988 Просмотров
Последний ответ Июнь 01, 2015, 11:28:10
от ---Zak---
7 Ответов
1357 Просмотров
Последний ответ Декабрь 18, 2015, 00:19:29
от m4e
7 Ответов
3018 Просмотров
Последний ответ Февраль 18, 2016, 15:42:10
от Alofa
0 Ответов
418 Просмотров
Последний ответ Август 11, 2017, 10:03:51
от dimcomp