Page 1 of 1

Хендл окна стороннего приложения

PostPosted: 06 Jul 2019, 17:03
by Схемотехник
Здравствуйте!
Можно ли в LabVIEW считать хендл окна сторонней программы? Окно имеет поле для ввода числа и кнопку подтверждения ввода. Можно ли в LabVIEW имитировать действия человека-пользователя, установив фокус на окно, ввести требуемое число в окне и выполнить программное действие, равносильное нажатию кнопки подтверждения ввода? В общем, все то же самое, что сделал бы человек, но, без участия человека. В какую сторону смотреть?

Re: Хендл окна стороннего приложения

PostPosted: 06 Jul 2019, 22:11
by Kosist
Вот здесь (https://forums.ni.com/t5/LabVIEW/How-ca ... ue#M410554) пишется об утилитке, которая (возможно) позволить сделать Вам то, что требуется. Сама утилита здесь - https://forums.ni.com/t5/LabVIEW/lvwuti ... ue#M346030.

Re: Хендл окна стороннего приложения

PostPosted: 06 Jul 2019, 22:34
by dadreamer
Kosist, эти VI-шки уже устарели, да и не будут работать в 64-битном :labview: . Когда-то попадался мне более модернизированный тулкит для WinAPI, но сейчас сходу не смог найти. Но я думаю, для задачи автора доп. пакет ставить излишне. Поиск окна выполняется через FindWindow; готовый :vi: можно взять здесь (\Make Window Transparent\Windows GUI Tools\Get Window Handle.vi). Чтобы работало в LV 64-bit, нужно поменять тип возвращаемого значения с U32 на Unsigned Pointer-sized Int. То же самое для параметра lpszClassName. Хотя, лучше конечно задать lpszClassName в виде строки и явно указывать класс окна при поиске - больше шансов найти именно нужное окно, а не чужое. Всё остальное - работа с клавой и мышью, т.е. перевод курсора на определённые координаты, нажатия конкретных клавиш, перевод на другие координаты, нажатие кнопки мыши. Это можно сделать либо через сторонний кликер (например, на AHK или ещё на чём; запуск через System Exec), либо с помощью функций WinAPI SetCursorPos и SendInput (или более олдскульный keybd_event). Погуглите на форумах NI по именам этих функций, тема с управлением мыши/клавы поднималась множество раз.

Sorry, не посмотрел версию :labview: , думаю, адаптация для 64-бит не актуальна. :)

Re: Хендл окна стороннего приложения

PostPosted: 06 Jul 2019, 23:11
by Схемотехник
Спасибо всем откликнувшимся.
Я правильно понимаю, что никаких vi мне не нужно, а требуется справочник по win api и user32.dll?

Re: Хендл окна стороннего приложения

PostPosted: 06 Jul 2019, 23:59
by Kosist
В принципе, да - но, как написал dadreamer, где-то уже существует :labview:-обертка этих dll - если найдете, будет проще. А если нет - то нужно писать самому.

Re: Хендл окна стороннего приложения

PostPosted: 08 Jul 2019, 22:42
by Схемотехник
Я начал пробовать прописывать ручками вызов нужных функций. В принципе, все понятно. Примеры есть, msdn есть, литературы по api32 и справочников системного программиста хватает - есть все, что нужно для полного счастья. Как говорится-спасибо, что дали пинка в нужном направлении.