Что нового

[Автоматизация] Как выбрать одно из значений ComboBox?

qwerty123123

Новичок
Сообщения
5
Репутация
0
Здравствуйте.
Помогите советом - как в Outlook 2003 под WinXp сменить адресную книгу по умолчанию?
Открываем Сервис -> Адресная книга... -> Сервис -> Параметры.
До этого пункта дошел:
Код:
Run(@ProgramFilesDir &"\Microsoft Office\Office11\outlook.exe")
WinWaitActive("Outlook сегодня - Microsoft Outlook")
Send("!tl")
Opt("MouseCoordMode",2)
MouseClick("left",140,-10,1)
MouseClick("left",160,20,1)

Как теперь изменить значение в поле "Отображать первым список адресов"? Пробовал сделать так, но не получиось:
Код:
ControlCommand("Обработка адреса","Отображать первым список адресов:","ComboBox1","SelectString","Отделение")

здесь Отделение - наименование требуемой адресной книги.
Как правильно сделать?
Спасибо
 

warezoogle3

Новичок
Сообщения
73
Репутация
1
Попробуйте вместо MouseClick использовать ControlClick,а вместо координат - controlID.
В ControlCommand тоже попробуйте использовать controlID.Почитайте справку про ControlClick и ControlCommand.
И поменяйте
Код:
WinWaitActive("Outlook сегодня - Microsoft Outlook")

на
Код:
WinWait("Outlook сегодня - Microsoft Outlook")
WinActivate("Outlook сегодня - Microsoft Outlook")
WinWaitActive("Outlook сегодня - Microsoft Outlook")
 
Автор
Q

qwerty123123

Новичок
Сообщения
5
Репутация
0
2 warezoogle3, а что даст предлагаемая вами замена на
Код:
WinWait("Outlook сегодня - Microsoft Outlook")
WinActivate("Outlook сегодня - Microsoft Outlook")
WinWaitActive("Outlook сегодня - Microsoft Outlook")
?
Справку читал, но чем такой вариант лучше - не понял. Это на тот случай, если какое-нибудь приложение случайно перехватит фокус у окна "Outlook сегодня - Microsoft Outlook"?

По поводу использования controlID в ControlClick и/или ControlCommand - а как определить требуемые controlID? С помощью AutoIt Window Info?
Так при наведении курсора на пункт меню "Сервис" в окне "Адресная книга" (Сервис -> Адресная книга или Ctrl+Shift+B) или на "Сервис -> Параметры" (здесь же) вкладка Control пустая.

При перемещении курсора по элементам требуемого ComboBox1 (Сервис -> Адресная книга... -> Сервис -> Параметры) на вкладке Control отображается следующее
Class: Progman
Instance: 1
ClassnameNN: Progman1
Name:
Advanced (Class): [CLASS:blum:rogman; INSTANCE:1]
ID:
Text: Program Manager
Position: 0, 0
Size: 1024, 768
ControlClick Coords: 170, 150
Style: 0x96000000
ExStyle: 0x00000080
Handle: 0x00010096
и меняется только значение параметра ControlClick Coords. Может я что-то непраильно делаю?
Или параметр ControlClick Coords и надо использовать в качестве аргумента в команде ControlClick? примерно так:
Код:
ControlClick("Обработка адреса","Отображать первым список адресов:","","",170,150))

При таком варианте выпадающая менюшка из требуемого ComboBox1 какое-то время мерцает, но нужного эффекта все равно нет
 

warezoogle3

Новичок
Сообщения
73
Репутация
1
qwerty123123,сможете сделать скриншоты или видеоролик?
Просто сейчас нет возможности поставить outlook 2003.
 
Автор
Q

qwerty123123

Новичок
Сообщения
5
Репутация
0
warezoogle3, скриншоты с outlook и AutoIt Window Info на вкладке Control?
 

warezoogle3

Новичок
Сообщения
73
Репутация
1
Попробуйте:
Код:
Run(@ProgramFilesDir &"\Microsoft Office\Office11\outlook.exe")
WinWaitActive("Outlook сегодня - Microsoft Outlook")
Send("^+B")
WinWaitActive("Адресная книга")
WinMenuSelectItem("Адресная книга", "", "&Сервис", "&Параметры...")
WinWaitActive("Обработка адреса")
ControlCommand("Обработка адреса", "", 651, "SelectString", 'Управление')
ControlClick("Обработка адреса","",12321)
ControlClick("Обработка адреса","",1)
Send("!{F5}")
 
Автор
Q

qwerty123123

Новичок
Сообщения
5
Репутация
0
warezoogle3, указанный вами код не работает. Сначала все замирает на появившемся окне "Адресная книга", т.е. как буд-то не отрабатывает команда
Код:
WinMenuSelectItem("Адресная книга", "", "&Сервис", "&Параметры...")

т.к. если я сам мышкой выберу Сервис->Параметры, то появляется окно "Обработка адреса" и быстро пропадает (да и выполнение скрипта можно прервать по Ctrl+Breack, т.е. он еще выполняется). В фокусе оказывается окно "Адресная книга" и выполнение скрипта завершается.
Почитал справку по WinMenuSelectItem - вроде бы надо убрать &, т.к. подчеркиваний в менюшках нет (в словах Сервис и Параметры), но без & все равно не работает.
ControlCommand тоже не работает - адресная книга по умолчанию не изменилась.
Спасибо
P.S. не могу понять, откуда взялось значение ControlID в строке
Код:
ControlClick("Обработка адреса","",12321)

на принтскринах такого вроде нет.
 

warezoogle3

Новичок
Сообщения
73
Репутация
1
Код:
P.S. не могу понять,  откуда взялось значение ControlID в строке
Код: AutoIt [Выделить]
ControlClick("Обработка адреса","",12321)
на принтскринах такого вроде нет.

Это просто кноопка "Применить" (Apply) :smile:
Попробую поколдовать еще,может получится? :smile: :beer: :IL_AutoIt_1:
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
warezoogle3
Пробуй
Код:
Run(@ProgramFilesDir &"\Microsoft Office\Office11\outlook.exe")
WinWait("Outlook сегодня - Microsoft Outlook", "", 5)
Sleep(100)
ControlSend("Outlook сегодня - Microsoft Outlook", "", "[Class:MsoCommandBar]", "+^b")
WinWait("Адресная книга", "", 5)
Sleep(100)
WinMenuSelectItem("Адресная книга", "", "С&ервис", "&Параметры")
WinWait("Обработка адреса", "", 5)
Sleep(100)
ControlSend("Обработка адреса", "", "[CLASS:ComboBox; INSTANCE:1]", "{DOWN}")
Sleep(100)
ControlClick("Обработка адреса", "", "[CLASS:Button; INSTANCE:8]");Применить
;ControlClick("Обработка адреса", "", "[CLASS:Button; INSTANCE:6]");Ок
 

warezoogle3

Новичок
Сообщения
73
Репутация
1
Yuriy,извините, я был болен.
Русского outlook-а у меня не оказалось.
Поменял имена и попробовал на английском.
Все работает!
qwerty123123,попробуйте.
 
Верх