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

Простейшие вопросы в области инженерной разработки
Ответить
Схемотехник
interested
interested
Сообщения: 3
Зарегистрирован: 06 июл 2019, 16:53
Репутация: 0
Версия LabVIEW: 8.2
Контактная информация:

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

Сообщение Схемотехник »

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

Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1069
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Репутация: 0
Версия LabVIEW: 2013-2020
Контактная информация:

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

Сообщение Kosist »

Вот здесь (https://forums.ni.com/t5/LabVIEW/How-ca ... ue#M410554) пишется об утилитке, которая (возможно) позволить сделать Вам то, что требуется. Сама утилита здесь - https://forums.ni.com/t5/LabVIEW/lvwuti ... ue#M346030.
Мы делили апельсин - много наших полегло...

Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3507
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Репутация: 0
Версия LabVIEW: 2.5 — 2020
Контактная информация:

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

Сообщение 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-бит не актуальна. :)

Схемотехник
interested
interested
Сообщения: 3
Зарегистрирован: 06 июл 2019, 16:53
Репутация: 0
Версия LabVIEW: 8.2
Контактная информация:

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

Сообщение Схемотехник »

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

Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1069
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Репутация: 0
Версия LabVIEW: 2013-2020
Контактная информация:

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

Сообщение Kosist »

В принципе, да - но, как написал dadreamer, где-то уже существует :labview:-обертка этих dll - если найдете, будет проще. А если нет - то нужно писать самому.
Мы делили апельсин - много наших полегло...

Схемотехник
interested
interested
Сообщения: 3
Зарегистрирован: 06 июл 2019, 16:53
Репутация: 0
Версия LabVIEW: 8.2
Контактная информация:

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

Сообщение Схемотехник »

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

Ответить

Вернуться в «Для чайников»