Страница 1 из 1
Получить ControlID (vuSendKeys)
Добавлено: 10 Июнь 2019, 9:47
morkovin
Цитата из хелпа:
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)
Не пойму, как получить CtrlId? Да и hWnd?
Подучить ControlID
Добавлено: 10 Июнь 2019, 9:55
Constantine
Ну, HANDLE окна или контрола получить просто:
0{PROP:HANDLE} - Handle окна;
?Control{PROP:HANDLE} - Handle контрола.
Непонятно, что такое ControlID... Это из какого хелпа цитата?
Подучить ControlID
Добавлено: 10 Июнь 2019, 11:43
morkovin
Constantine писал(а): ↑10 Июнь 2019, 9:55Это из какого хелпа цитата?
vuSendKeys (
www.valutilites.com)
Пришлось читать весь хелп:
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):
Хрень какая-то - Id и Handle меняются при каждом запуске
Подучить ControlID
Добавлено: 10 Июнь 2019, 12:47
Constantine
Так, теперь понятно.
Как получить Handle, написано выше, а Control ID, в данном случае, можно получить функцией:
https://docs.microsoft.com/en-us/window ... tdlgctrlid
Соответственно, делать все после открытия окна.
Подучить ControlID
Добавлено: 10 Июнь 2019, 12:53
Constantine
На всякий случай, прототип функции:
GetDlgCtrlID(LONG),LONG,PASCAL
Подучить ControlID
Добавлено: 10 Июнь 2019, 13:09
Constantine
И еще непонятно: нужно в кларионовской программе нажать на кнопку или из кларионовской программы нажать на кнопку в другой программе?
Подучить ControlID
Добавлено: 10 Июнь 2019, 14:17
morkovin
Из кларионовской (моей) проги хотел заполнять Логин+Пароль+ОК в другой проге.
Подучить ControlID
Добавлено: 10 Июнь 2019, 14:22
Constantine
Тогда несколько сложнее:
1. Находим Handle нужного окна с помощью FindWindow или EnumWindows (можно привязаться к заголовку или классу окна).
2. Перебираем контролы в окне с помощью EnumChildWindows.
3. Находим нужный контрол (по тексту, позиции или классу) и обрабатываем его нужным образом.
4. Нажимаем на кнопку ОК с помощью SendMessage.
Подучить ControlID
Добавлено: 10 Июнь 2019, 14:26
Constantine
Подучить ControlID
Добавлено: 10 Июнь 2019, 16:20
morkovin
C11,ABC
Код: Выделить всё
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-ми случайных символов, а Копи-паст не проходит.
Подучить ControlID
Добавлено: 10 Июнь 2019, 17:16
gopstop2007
morkovin писал(а): ↑10 Июнь 2019, 16:20
Вот так работает. Осталось только логины и пароли подставлять в динамике.
З.Ы. Просто юзеров жалко - требования к паролям больше 8-ми случайных символов, а Копи-паст не проходит.
Изменить шапку на - Получить
аналогичное
viewtopic.php?p=29872#p29872 или
viewtopic.php?p=24013#p24013
Получить ControlID (vuSendKeys)
Добавлено: 11 Июнь 2019, 8:31
Constantine
morkovin писал(а): ↑10 Июнь 2019, 16:20hLoginId=16387
hPswId =16389
hOkBtn=16394 !get from WinSpy
Что-то я сомневаюсь, что эти ControlID всегда будут такими...
Однозначно, лучше получать их в динамике.
Получить ControlID (vuSendKeys)
Добавлено: 11 Июнь 2019, 9:14
morkovin
Constantine писал(а): ↑11 Июнь 2019, 8:31Что-то я сомневаюсь, что эти ControlID всегда будут такими...
проверил на рабочем сервере - всё совпадает.
Получить ControlID (vuSendKeys)
Добавлено: 11 Июнь 2019, 9:51
Constantine
Если мне не изменяет мой склероз (давно не имел дела), ControlID формируется на основе номера атома класса контрола в глобальной таблице атомов (Global Atom Table). GAT штука довольно стабильная, но все же, меняющаяся. Меняться она может, например, при установке нового софта, переустановке Windows и т.п.
Думаю, лучше поостеречься и формировать ControlID динамически.
Впрочем, хозяин - барин...