Автор Тема: Отключить все эффекты  (Прочитано 1275 раз)

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

Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3973
  • Репутация: 1055
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Отключить все эффекты
« Ответ #15, Отправлен: Сентябрь 09, 2018, 13:28:17 »
SharkyEXE  [?]
Цитировать
чтобы строка "Динамики" искалась, на нее ставилось выделение
Вы издеваетесь?! Мы с этого начали ещё в той теме. А в этой продублировали в первом же скрипте. Посмотрите собственный спойлер в описании темы.

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

Re: Отключить все эффекты
« Ответ #15 Отправлен: Сентябрь 09, 2018, 13:28:17 »

Оффлайн SharkyEXE [?]

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

  • Автор темы
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Отключить все эффекты
« Ответ #16, Отправлен: Сентябрь 09, 2018, 13:34:39 »
InnI

Здравствуйте.

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

Я здесь поглубже проверил, ошибка у меня выдается сразу же после строки
Код: AutoIt [Выделить]
$iItem = ControlListView("Звук", "", "SysListView321", "FindItem", "Динамики")


То есть до строки
Код: AutoIt [Выделить]
$iItem = ControlListView("Звук", "", "SysListView321", "FindItem", "Динамики")

ошибки нету , после отработки строки
Код: AutoIt [Выделить]
$iItem = ControlListView("Звук", "", "SysListView321", "FindItem", "Динамики")

ошибка

Поэтому я очнеь Вас прошу - можете , пожалуйста, другой алгоритм выделения придумать, очень надо

Повторюсь , Send("^{Down 3}") - строка "Динамики" может быть и 1й сверху вниз, и 5й сверху вниз

А мне хочется по другому поиск строки "Динамики" , выделить эту строку - типа один раз на эту строку нажать левой кнопкой мышки - будет синее выделение или еще как-то
« Последнее редактирование: Сентябрь 09, 2018, 13:44:15 от SharkyEXE »
Скорблю и помню.


Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3973
  • Репутация: 1055
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Отключить все эффекты
« Ответ #17, Отправлен: Сентябрь 09, 2018, 13:44:17 »
SharkyEXE  [?]
Цитировать
после отработки строки ошибка
Какая ошибка? И как вы определили, что именно после этой строки?
После этой строки идёт строка нажатия пробела. Может, всё-таки, после нажатия пробела ошибка?

Оффлайн SharkyEXE [?]

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

  • Автор темы
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Отключить все эффекты
« Ответ #18, Отправлен: Сентябрь 09, 2018, 13:49:43 »
Какая ошибка? И как вы определили, что именно после этой строки?
После этой строки идёт строка нажатия пробела. Может, всё-таки, после нажатия пробела ошибка?

После строки
Код: AutoIt [Выделить]
$iItem = ControlListView("Звук", "", "SysListView321", "FindItem", "Динамики")

вставил строку
Код: AutoIt [Выделить]
Sleep ( 100000 )


Запустил скрипт - F5 , появилось окно с заголовком "Звук" и сразу же ошибка - прикрепил картинку к этому сообщению.

Нет желания никогда никому создавать проблемы, вот видео - https://yadi.sk/i/_mItqoAZVeS16A


Внимание: Для просмотра прикреплённых файлов необходимо Войти или Зарегистрироваться
« Последнее редактирование: Сентябрь 09, 2018, 14:06:36 от SharkyEXE »

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

Re: Отключить все эффекты
« Ответ #18 Отправлен: Сентябрь 09, 2018, 13:49:43 »

Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3973
  • Репутация: 1055
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Отключить все эффекты
« Ответ #19, Отправлен: Сентябрь 09, 2018, 14:10:55 »
Ещё раз повторю: уберите из кода отключение редиректа и посмотрите, что будет.

Оффлайн SharkyEXE [?]

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

  • Автор темы
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Отключить все эффекты
« Ответ #20, Отправлен: Сентябрь 09, 2018, 14:32:17 »
Ещё раз повторю: уберите из кода отключение редиректа и посмотрите, что будет.

Убрал, на видео видно, что редирект закомментирован, вот ссылка - https://yadi.sk/i/_O7q4Y6_9PLYMA

Вы можете, пожалуйста, я Вас очень прошу, сделать так, из окна с заголовком "Звук" получить порядковый номер строки, в которой написано "Динамики" , это число загнать в переменную, типа $a

Переменную $a загнать сюда Send("^{Down $a}") , где $a - может быть 1, 2 или 5 или любая цифра

Это и будет решение проблемы

Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3973
  • Репутация: 1055
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Отключить все эффекты
« Ответ #21, Отправлен: Сентябрь 09, 2018, 14:43:04 »
SharkyEXE  [?]
Цитировать
Это и будет решение проблемы
Какая наивная самоуверенность.

Цитировать
получить порядковый номер строки, в которой написано "Динамики"
Именно это делает та строка кода, после которой у вас ошибка.
Поймите, что, если при обращении к списку происходит вылет, то мы не сможем ни найти текст, ни получить текст пункта или выделения. В лучшем случае узнаем количество пунктов. Пробуйте этот код
Код: AutoIt [Выделить]
ShellExecute("mmsys.cpl")
WinWaitActive("Звук")

$iCount = ControlListView("Звук", "", "SysListView321", "GetItemCount")
For $i = 0 To $iCount - 1
  If ControlListView("Звук", "", "SysListView321", "GetText", $i) = "Динамики" Then ExitLoop
Next
If $i = $iCount Then Exit MsgBox(262144, "Ошибка", "Пункт 'Динамики' не найден")
Send("{down " & $i + 1 & "}")
ControlClick("Звук", "", "Button3")



Добавлено: Сентябрь 09, 2018, 14:46:56
SharkyEXE  [?]
Цитировать
редирект закомментирован
Комментарии в AutoIt начинаются с символа ; (точка с запятой)

Оффлайн SharkyEXE [?]

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

  • Автор темы
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Отключить все эффекты
« Ответ #22, Отправлен: Сентябрь 09, 2018, 14:49:48 »
InnI

В коде
(нажмите для показа/скрытия)
заменил строки на Ваши
(нажмите для показа/скрытия)

При запуске - ошибка , что и раньше

При таком коде
Код: AutoIt [Выделить]
$iCount = ControlListView("Звук", "", "SysListView321", "GetItemCount")
$i = ControlListView("Звук", "", "SysListView321", "GetText", $iCount) = "Динамики"
Send("{down " & $i & "}")
ControlClick("Звук", "", "Button3")

ошибки нету, но и строка "Динамики" не запускается

Я Вас очень прошу - сделайте по проще, мягко сказать, "по тупому" код - должно получиться

Вполне возможно, чем сложнее конструкция, цикл For тот же самый - может вызывать ошибку
« Последнее редактирование: Сентябрь 09, 2018, 14:58:00 от SharkyEXE »

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

Re: Отключить все эффекты
« Ответ #22 Отправлен: Сентябрь 09, 2018, 14:49:48 »

Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3973
  • Репутация: 1055
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Отключить все эффекты
« Ответ #23, Отправлен: Сентябрь 09, 2018, 15:19:18 »
SharkyEXE  [?]
Цитировать
При таком коде
Этот код обращается к несуществующему пункту списка, т.е. не работает. Поэтому и ошибки нет.
Я не знаю, как вам объяснить, что у вас проблемы с системой, а не с AutoIt.

Последняя попытка. Но это, как "из пушки по воробьям". UIAutomate. При наличии ошибок в консоле SciTE будут сообщения с префиксом !> _UIA_

Код: AutoIt [Выделить]
#include <UIAutomate.au3>

ShellExecute("mmsys.cpl")
WinWaitActive("Звук")

$oLV = _UIA_GetElementFromHandle(ControlGetHandle("Звук", "", "SysListView321"))
$oItem = _UIA_GetControlTypeElement($oLV, "UIA_ListItemControlTypeId", "Динамики")
_UIA_ElementMouseClick($oItem, "", Default, Default, 2)


Оффлайн SharkyEXE [?]

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

  • Автор темы
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Отключить все эффекты
« Ответ #24, Отправлен: Сентябрь 09, 2018, 15:32:21 »
InnI

Здравствуйте.

что у вас проблемы с системой, а не с AutoIt.

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

Последняя попытка.

Огромное Вам спасибо, заработало

Вот рабочий код
(нажмите для показа/скрытия)

PS. Все-же ну вот заело, стандартными способами, без подключения дополнительных библиотек ( UIAutomate ) сделать , чтобы работало

А нельзя сделать другое - найти строку, содержащую слово "Динамики" и вернуть сразу же ее индекс, типа в одну строку, без For , может заработает?
« Последнее редактирование: Сентябрь 09, 2018, 15:46:03 от SharkyEXE »

Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3973
  • Репутация: 1055
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Отключить все эффекты
« Ответ #25, Отправлен: Сентябрь 09, 2018, 15:52:51 »
SharkyEXE  [?]
Цитировать
найти строку, содержащую слово "Динамики" и вернуть сразу же ее индекс
Блин. Ну вот же эта команда, которая ищет и сразу возвращает индекс пункта
Код: AutoIt [Выделить]
$iItem = ControlListView("Звук", "", "SysListView321", "FindItem", "Динамики")

Но вы утверждаете, что она приводит к ошибке.

Цитировать
стандартными способами, без подключения дополнительных библиотек ( UIAutomate ) сделать , чтобы работало
Установите нормальную Windows и всё заработает.

Оффлайн SharkyEXE [?]

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

  • Автор темы
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Отключить все эффекты
« Ответ #26, Отправлен: Сентябрь 09, 2018, 16:00:48 »
Блин. Ну вот же эта команда, которая ищет и сразу возвращает индекс пункта
Код: AutoIt [Выделить]
$iItem = ControlListView("Звук", "", "SysListView321", "FindItem", "Динамики")

Но вы утверждаете, что она приводит к ошибке.

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

Я не программист, я про то, что может еще другой метод есть
кроме
Код: AutoIt [Выделить]
$iItem = ControlListView("Звук", "", "SysListView321", "FindItem", "Динамики")

кроме
Код: AutoIt [Выделить]
$iCount = ControlListView("Звук", "", "SysListView321", "GetItemCount")
For $i = 0 To $iCount - 1
  If ControlListView("Звук", "", "SysListView321", "GetText", $i) = "Динамики" Then ExitLoop
Next

извлечь информацию

Просьба на меня не обижаться, извините...

Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3973
  • Репутация: 1055
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Отключить все эффекты
« Ответ #27, Отправлен: Сентябрь 09, 2018, 16:18:17 »
SharkyEXE  [?]
Цитировать
извлечь информацию
Ещё раз поясняю. Именно в извлечении информации по пункту списка и есть проблема.
Чтобы получить информацию по пункту SysListView32 нужно создать структуру, записать её в память чужого процесса, отправить списку специальное сообщение, прочитать структуру из памяти чужого процесса, извлечь данные из структуры. Вот где-то на этапе межпроцессного взаимодействия и происходит ошибка. Поэтому, какую бы информацию по пункту вы не попытались узнать - всегда будет ошибка.


Добавлено: Сентябрь 09, 2018, 16:28:37
Возможно, на вашей сборке вообще ограничено использование х86 приложений. Попробуйте скомпилировать скрипт под х64 и запустите. Если опять будет ошибка, то, боюсь, уже ничего не поможет.
« Последнее редактирование: Сентябрь 09, 2018, 16:28:37 от InnI, Причина: Объединение сообщений »

Оффлайн SharkyEXE [?]

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

  • Автор темы
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Отключить все эффекты
« Ответ #28, Отправлен: Сентябрь 09, 2018, 16:37:20 »
InnI

Здравствуйте.

По поводу x64 - мне нужно, чтобы на x86 тоже работал скрипт , поэтому ,к ак я понял , мне только x86 компилировать нужно

По поводу работает с UIAutomate - то , что делает UIAutomate в моем случае - внутрь моего кода никак не запихнуть , пожалуйста , может там 5-10 строк , так проще в мой код добавить , пожалуйста , конечно , если по поводу UIAutomate - там мега глобальная работа , столько строк внутри UIAutomate...

Просто как-то необычно , загадочно , мистика чтоли - как же UIAutomate удалось справиться с тем , с чем стандартные команды выбивают ошибку  ;)

Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3973
  • Репутация: 1055
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Отключить все эффекты
« Ответ #29, Отправлен: Сентябрь 09, 2018, 16:52:55 »
SharkyEXE  [?]
Цитировать
По поводу работает с UIAutomate
Если вы имеете в виду "вытащить из UDF только те фунции, которые используются в вашем коде", то нет. Это я делать не буду.

Цитировать
как же UIAutomate удалось справиться с тем , с чем стандартные команды выбивают ошибку
Кривые сборки вызывают ошибку, а не стандартные команды.
А IUIAutomation - это просто другая технология доступа к элементам. Но и она может не работать, если не включить в сборку некоторые файлы, не влияющие на работу самой системы.

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

Re: Отключить все эффекты
« Ответ #29 Отправлен: Сентябрь 09, 2018, 16:52:55 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
5 Ответов
5232 Просмотров
Последний ответ Декабрь 02, 2011, 15:25:10
от neobi
1 Ответов
3891 Просмотров
Последний ответ Февраль 21, 2014, 17:57:27
от Dimmak
15 Ответов
3470 Просмотров
Последний ответ Июнь 15, 2014, 18:12:03
от bradu
0 Ответов
551 Просмотров
Последний ответ Январь 16, 2015, 08:47:05
от Primusx
2 Ответов
1351 Просмотров
Последний ответ Февраль 18, 2015, 21:45:41
от mir546
1 Ответов
1855 Просмотров
Последний ответ Февраль 07, 2016, 00:09:55
от Garrett
9 Ответов
3790 Просмотров
Последний ответ Февраль 19, 2016, 19:02:23
от weweWe45s
5 Ответов
620 Просмотров
Последний ответ Август 14, 2017, 13:27:09
от zz555
2 Ответов
440 Просмотров
Последний ответ Ноябрь 13, 2017, 22:28:07
от Alofa
1 Ответов
417 Просмотров
Последний ответ Октябрь 06, 2018, 18:37:19
от Tempo