Не пойму, как получить CtrlId? Да и hWnd?vuClickButton(<hWnd>, <Ctrl ID>)
vuClickButton(WindowHandle, Control Id) will simulate a left-click of a specific control on a specific window (regardless of which control has focus).
Return Value: Always returns true
Calling Parameters: hWnd Long - containing the Window Handle of the Window containing the control
CtrlId Long - containing the specific Control ID of the control you are working with
EXAMPLE
hWnd Long
CtrlId Long
hWnd = <the handle of the window containing the control>
CtrlId = <the Control ID of the buttonb>
vuClickButton(hWnd,CtrlId)
Получить ControlID (vuSendKeys)
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- morkovin
- Ветеран
- Сообщения: 909
- Зарегистрирован: 20 Июль 2005, 14:53
- Откуда: Volgograd, Russia
- Благодарил (а): 2 раза
- Поблагодарили: 3 раза
- Контактная информация:
Получить ControlID (vuSendKeys)
Цитата из хелпа:
Последний раз редактировалось morkovin 11 Июнь 2019, 3:38, всего редактировалось 2 раза.
WBR, morkovin
-
- Активист
- Сообщения: 185
- Зарегистрирован: 07 Февраль 2017, 16:58
Подучить ControlID
Ну, HANDLE окна или контрола получить просто:
0{PROP:HANDLE} - Handle окна;
?Control{PROP:HANDLE} - Handle контрола.
Непонятно, что такое ControlID... Это из какого хелпа цитата?
0{PROP:HANDLE} - Handle окна;
?Control{PROP:HANDLE} - Handle контрола.
Непонятно, что такое ControlID... Это из какого хелпа цитата?
- morkovin
- Ветеран
- Сообщения: 909
- Зарегистрирован: 20 Июль 2005, 14:53
- Откуда: Volgograd, Russia
- Благодарил (а): 2 раза
- Поблагодарили: 3 раза
- Контактная информация:
Подучить ControlID
vuSendKeys (www.valutilites.com)
Пришлось читать весь хелп:
Хрень какая-то - Id и Handle меняются при каждом запускеIn order to use these new vuSendKeys functions, you will need to use an external program (such as "Spy++" which ships with Visual Studio or "WinSpy++" a freeware program available at http://www.catch22.net/software/winspy.asp) to gleen the ID Number from the Control you want. To obtain the ID of a control, follow these few simple steps (using WinSpy):
WBR, morkovin
-
- Активист
- Сообщения: 185
- Зарегистрирован: 07 Февраль 2017, 16:58
Подучить ControlID
Так, теперь понятно.
Как получить Handle, написано выше, а Control ID, в данном случае, можно получить функцией:
https://docs.microsoft.com/en-us/window ... tdlgctrlid
Соответственно, делать все после открытия окна.
Как получить Handle, написано выше, а Control ID, в данном случае, можно получить функцией:
https://docs.microsoft.com/en-us/window ... tdlgctrlid
Соответственно, делать все после открытия окна.
-
- Активист
- Сообщения: 185
- Зарегистрирован: 07 Февраль 2017, 16:58
-
- Активист
- Сообщения: 185
- Зарегистрирован: 07 Февраль 2017, 16:58
Подучить ControlID
И еще непонятно: нужно в кларионовской программе нажать на кнопку или из кларионовской программы нажать на кнопку в другой программе?
- morkovin
- Ветеран
- Сообщения: 909
- Зарегистрирован: 20 Июль 2005, 14:53
- Откуда: Volgograd, Russia
- Благодарил (а): 2 раза
- Поблагодарили: 3 раза
- Контактная информация:
Подучить ControlID
Из кларионовской (моей) проги хотел заполнять Логин+Пароль+ОК в другой проге.
WBR, morkovin
-
- Активист
- Сообщения: 185
- Зарегистрирован: 07 Февраль 2017, 16:58
Подучить ControlID
Тогда несколько сложнее:
1. Находим Handle нужного окна с помощью FindWindow или EnumWindows (можно привязаться к заголовку или классу окна).
2. Перебираем контролы в окне с помощью EnumChildWindows.
3. Находим нужный контрол (по тексту, позиции или классу) и обрабатываем его нужным образом.
4. Нажимаем на кнопку ОК с помощью SendMessage.
1. Находим Handle нужного окна с помощью FindWindow или EnumWindows (можно привязаться к заголовку или классу окна).
2. Перебираем контролы в окне с помощью EnumChildWindows.
3. Находим нужный контрол (по тексту, позиции или классу) и обрабатываем его нужным образом.
4. Нажимаем на кнопку ОК с помощью SendMessage.
-
- Активист
- Сообщения: 185
- Зарегистрирован: 07 Февраль 2017, 16:58
Подучить ControlID
Пример можно посмотреть здесь:
https://stackoverflow.com/questions/122 ... -c-windows
https://stackoverflow.com/questions/122 ... -c-windows
- morkovin
- Ветеран
- Сообщения: 909
- Зарегистрирован: 20 Июль 2005, 14:53
- Откуда: Volgograd, Russia
- Благодарил (а): 2 раза
- Поблагодарили: 3 раза
- Контактная информация:
Подучить ControlID
C11,ABC
Вот так работает. Осталось только логины и пароли подставлять в динамике.
З.Ы. Просто юзеров жалко - требования к паролям больше 8-ми случайных символов, а Копи-паст не проходит.
Код: Выделить всё
hLoginId=16387
hPswId =16389
hOkBtn=16394 !get from WinSpy
MyData = 'Регистрация' !window header
hWnd = vuName2Handle(MyData)
IF hWnd > 0 THEN
!
cLogin = 'Admin{{TAB}'
vuSendKeys(cLogin,1) !first focus field is Login
cPsw = '123'
vuSendKeys(cPsw,1) !second field is PSw
vuClickButton(hWnd,hOkBtn) !
ELSE
MESSAGE('LOGIN NOT AVAILABLE!','Error!')
!RUN(....)
END
З.Ы. Просто юзеров жалко - требования к паролям больше 8-ми случайных символов, а Копи-паст не проходит.
WBR, morkovin
-
- ✯ Ветеран ✯
- Сообщения: 1703
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 9 раз
- Поблагодарили: 4 раза
Подучить ControlID
Изменить шапку на - Получить
аналогичное viewtopic.php?p=29872#p29872 или viewtopic.php?p=24013#p24013
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
-
- Активист
- Сообщения: 185
- Зарегистрирован: 07 Февраль 2017, 16:58
Получить ControlID (vuSendKeys)
Что-то я сомневаюсь, что эти ControlID всегда будут такими...
Однозначно, лучше получать их в динамике.
- morkovin
- Ветеран
- Сообщения: 909
- Зарегистрирован: 20 Июль 2005, 14:53
- Откуда: Volgograd, Russia
- Благодарил (а): 2 раза
- Поблагодарили: 3 раза
- Контактная информация:
Получить ControlID (vuSendKeys)
проверил на рабочем сервере - всё совпадает.Constantine писал(а): ↑11 Июнь 2019, 8:31Что-то я сомневаюсь, что эти ControlID всегда будут такими...
WBR, morkovin
-
- Активист
- Сообщения: 185
- Зарегистрирован: 07 Февраль 2017, 16:58
Получить ControlID (vuSendKeys)
Если мне не изменяет мой склероз (давно не имел дела), ControlID формируется на основе номера атома класса контрола в глобальной таблице атомов (Global Atom Table). GAT штука довольно стабильная, но все же, меняющаяся. Меняться она может, например, при установке нового софта, переустановке Windows и т.п.
Думаю, лучше поостеречься и формировать ControlID динамически.
Впрочем, хозяин - барин...
Думаю, лучше поостеречься и формировать ControlID динамически.
Впрочем, хозяин - барин...