1

Тема: AHK: Вопрос с трактовкой ControlGetText

В справке написано

Может задаваться как ClassNN (имя класса и номер данного экземпляра) или как имя/текст контрола. Все эти значения можно определить, используя программу Window Spy. При использовании имени/текста параметры их поиска можно задавать командой SetTitleMatchMode. Если параметр опущен или пустой, используется верхний контрол окна.

Что имеется ввиду под "текст контрола"?

2

Re: AHK: Вопрос с трактовкой ControlGetText

То что выдаёт ControlGetText.
Например если у Button1 текст Ми&кшер, то вместо Button1 можно пользовать Ми&кшер.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

3

Re: AHK: Вопрос с трактовкой ControlGetText

Например если у Button1 текст Ми&кшер, то вместо Button1 можно пользовать Ми&кшер.

Всегда ли этот вариант работает?
И работает ли это если Контрол содержит список?

4

Re: AHK: Вопрос с трактовкой ControlGetText

Ммм, точнее если задать SetTitleMatchMode, 1 и параметр как "Ми&" то будет использован первый найденный контрол окна, текст которого начинается с "Ми&".

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

5

Re: AHK: Вопрос с трактовкой ControlGetText

Всегда ли этот вариант работает?

Ну пару раз я пользовал, работало.

И работает ли это если Контрол содержит список?

Опишите проблему подробнее, если это не теория.

Есть также параметры SetTitleMatchMode как RegEx, 2, 3.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

6 (изменено: Malcev, 2013-07-13 19:06:33)

Re: AHK: Вопрос с трактовкой ControlGetText

DetectHiddenText, On
SetTitleMatchMode, 2
f11::
Control, ChooseString, Non-Interlaced, Upper, Rhozet Carbon Coder

Такой код не работает, приходится получать список контролов, искать в них текст "Upper", после чего получать название контрола, вставлять его в код. И тогда работает.

7

Re: AHK: Вопрос с трактовкой ControlGetText

Вообще говоря, режим slow следует использовать, только когда целевое окно не может быть однозначно опознано по его заголовку и тексту при режиме fast. Это от того, что режим Slow может быть крайне медленным, если окна какого-либо приложения заняты или "не отвечают".

Специальная версия Window Spy, распространяемая с AutoHotkey, дает отчет о текстах slow в отдельной секции так, что легко определить, нужен ли режим slow.

Если нужно изменение обоих атрибутов, используйте команду дважды:
SetTitleMatchMode, 2
SetTitleMatchMode, slow

Это не помогает?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

8

Re: AHK: Вопрос с трактовкой ControlGetText

Нет.

9

Re: AHK: Вопрос с трактовкой ControlGetText

Параметры WinTitle, WinText, ExcludeTitle и ExcludeText чувствительны к регистру. Однако, чувствительность можно убрать, используя шаблоны с флагом case-insensitive. Пример такого шаблона: i)untitled - notepad.

Регистр учтён?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

10

Re: AHK: Вопрос с трактовкой ControlGetText

Нет.

Разговор про это SetTitleMatchMode, slow. Правильно?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

11

Re: AHK: Вопрос с трактовкой ControlGetText

Регистр учтен.
Вот так не работает.

SetTitleMatchMode, 2
SetTitleMatchMode, slow
f11::
Control, ChooseString, Non-Interlaced, Upper, Rhozet Carbon Coder

12

Re: AHK: Вопрос с трактовкой ControlGetText

В ComboBox и.т.п. ControlGetText получает только выделенный элемент... может здесь собака зарыта?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

13

Re: AHK: Вопрос с трактовкой ControlGetText

И что это значит?

14

Re: AHK: Вопрос с трактовкой ControlGetText

Чем вообще, обусловлено применение таких обобщённых параметров?

, Upper, Rhozet Carbon Coder

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

15

Re: AHK: Вопрос с трактовкой ControlGetText

Название контрола, в котором нужно изменить значение постоянно меняется.
Поэтому зацепиться можно только по тексту.

16

Re: AHK: Вопрос с трактовкой ControlGetText

И что это значит?

Видимо то, что скорее всего опознование идёт методом ControlGetText...
А вот где уточнить такую догадку, увы...

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

17

Re: AHK: Вопрос с трактовкой ControlGetText

Название контрола, в котором нужно изменить значение постоянно меняется.

Т.е. ComboBox1 потом ComboBox99?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

18 (изменено: Malcev, 2013-07-13 19:40:50)

Re: AHK: Вопрос с трактовкой ControlGetText

Видимо то, что скорее всего опознование идёт методом ControlGetText...

ControlGetText и выдает Upper.

Т.е. ComboBox1 потом ComboBox99?

Да.

19

Re: AHK: Вопрос с трактовкой ControlGetText

ControlGetText и выдает Upper.

То есть указывая Upper, вы заранее знаете что он выбран в данный момент???

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

20 (изменено: Malcev, 2013-07-13 19:47:43)

Re: AHK: Вопрос с трактовкой ControlGetText

Да. Смысл всей этой затеи поменять Field First на Non-Interlaced

SetBatchLines, -1
DetectHiddenText, On
SetTitleMatchMode, 2
f11::
loop
{
   WinGetText, info, Rhozet Carbon Coder
   Loop, parse, info, `n, `r
   {
      if  A_Index = 4
      {
         FileNew := A_LoopField
         if (FileNew = File)
         {
            msgbox, done
            return
         }
      }
      if A_LoopField contains Field First
      {
         ControlText := A_LoopField
         WinGet, List, ControlList, Rhozet Carbon Coder
         Loop, Parse, List, `n, `r
         {
            ControlGetText, Text, %A_LoopField%, Rhozet Carbon Coder
            If (Text = ControlText)
            {
               Control, ChooseString, Non-Interlaced, %A_LoopField%, Rhozet Carbon Coder
               break
            }
         }
         break
      }
   }
   File := Filenew
   Send {down}
   sleep, 100
}

21

Re: AHK: Вопрос с трактовкой ControlGetText

Попробовал:

Control, ChooseString, Наушники, колонки, Xonar DG Audio Center

Видимо для ListBox\ComboBox не работает такой параметр.

Так понимаю, что ComboBox в вашем окне несколько?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

22

Re: AHK: Вопрос с трактовкой ControlGetText

Да, несколько.

23 (изменено: serzh82saratov, 2013-07-13 20:15:33)

Re: AHK: Вопрос с трактовкой ControlGetText

Можно увидеть List:

WinGet, List, ControlList, Rhozet Carbon Coder

идеи пока только по оптимизации...

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

24

Re: AHK: Вопрос с трактовкой ControlGetText

Так я это в скрипте и делаю.
После того как нахожу активирован ли нужный мне параметр

WinGetText, info, Rhozet Carbon Coder

Составляю список

WinGet, List, ControlList, Rhozet Carbon Coder

И в нем уже ищу название контрола соответствующее заданному тексту

        WinGet, List, ControlList, Rhozet Carbon Coder
         Loop, Parse, List, `n, `r
         {
            ControlGetText, Text, %A_LoopField%, Rhozet Carbon Coder
            If (Text = ControlText)
            {
               Control, ChooseString, Non-Interlaced, %A_LoopField%, Rhozet Carbon Coder
               break
            }
         }

Просто вышло недопонимание с "текстом контрола" из справки.

25

Re: AHK: Вопрос с трактовкой ControlGetText

Можно увидеть List?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

26

Re: AHK: Вопрос с трактовкой ControlGetText

AfxMDIFrame421
#327701
Cnps.ChamelBmpBtn.11
Cnps.ChamelBmpBtn.12
Cnps.ChamelBmpBtn.13
Cnps.ChamelBmpBtn.14
Cnps.ChameleonBtn.11
Static1
Static2
#327702
CUIDialog1
CUIStatic1
CUIButton1
CUIButton2
CUIButton3
CUIButton4
CUIButton5
CUIStatic2
CUIStatic3
CUIButton6
CUIButton7
CUIButton8
CUIStatic4
CUIStatic5
CUIStatic6
CUIEdit1
CUIListBox1
CUIButton9
ChameleonScrCtrlList1
CUIScrollBar1
ComboBox1
Static3
Static4
Static5
Static6
Static7
ComboBox2
Static8
CUIButton10
ComboBox3
Static9
CUIButton11
Static10
Static11
Static12
Static13
Afx:400000:3:10011:0:01
Afx:400000:3:10013:0:01
msctls_statusbar321

27

Re: AHK: Вопрос с трактовкой ControlGetText

      if  A_Index = 4
      {
         FileNew := A_LoopField
         if (FileNew = File)
         {
            msgbox, done
            return
         }
      }

if  A_Index = 4 что значит?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

28

Re: AHK: Вопрос с трактовкой ControlGetText

В 4 строке находится путь к файлу.
Его я сравниваю с предыдущим путем.
Если они одинаковые, значит мы изменили все файлы.
Если нет, то посылается стрелка вниз, чтобы изменить следующий файл.

29

Re: AHK: Вопрос с трактовкой ControlGetText

А нужный ComboBox не всегда находится на одной и тоже строке?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

30

Re: AHK: Вопрос с трактовкой ControlGetText

Нет. Его может вообще не быть.

31

Re: AHK: Вопрос с трактовкой ControlGetText

+ открыть спойлер

Main
Mixer
Effect
KARAOKE
FlexBass
AEC
VocalFX
Playback
Playback
Record
Record
Reset
More
Звукопоглощающая комната
Default
Bass
Treble
Dance
Opera
Rock
S-Rock
Jazz
Classic
Rap
Metal
H-Metal
UserDef
2
2 Channels
PCM 48 KHz
4 колонки
PCM
Reset
Reset
DH-1
DH-2
DH-3

Да попутал по аналогии со своим окном. У него каждый раз в той же строке выдаётся текст ComboBox (4 колонки).

Я про то что может в ControlList строчка тоже всегда на том же месте?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

32

Re: AHK: Вопрос с трактовкой ControlGetText

На разных.
Так как меню меняется в зависимости от типа файла.

33

Re: AHK: Вопрос с трактовкой ControlGetText

Единственное что можно применить, это ControlGetText использовать только для ComboBox из списка. Но это как ускорит так и удлинит код...

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

34

Re: AHK: Вопрос с трактовкой ControlGetText

На деле это заметно не будет.
Все-таки я так и не понял, почему не действует определение контрола по его тексту.
Получается в справке ошибка?