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

Простейшие вопросы в области инженерной разработки

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

Postby Схемотехник on 06 Jul 2019, 17:03

Здравствуйте!
Можно ли в LabVIEW считать хендл окна сторонней программы? Окно имеет поле для ввода числа и кнопку подтверждения ввода. Можно ли в LabVIEW имитировать действия человека-пользователя, установив фокус на окно, ввести требуемое число в окне и выполнить программное действие, равносильное нажатию кнопки подтверждения ввода? В общем, все то же самое, что сделал бы человек, но, без участия человека. В какую сторону смотреть?
Схемотехник
interested
interested
 
Posts: 3
Joined: 06 Jul 2019, 16:53
LabVIEW Version: 8.2
Karma: 0

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

Postby Kosist on 06 Jul 2019, 22:11

Вот здесь (https://forums.ni.com/t5/LabVIEW/How-ca ... ue#M410554) пишется об утилитке, которая (возможно) позволить сделать Вам то, что требуется. Сама утилита здесь - https://forums.ni.com/t5/LabVIEW/lvwuti ... ue#M346030.
Мы делили апельсин - много наших полегло...
User avatar
Kosist
expert
expert
 
Posts: 1006
Joined: 21 Feb 2011, 23:44
Medals: 2
Activity (1) Gold (1)
LabVIEW Version: 2013-2017
Karma: 282
CLAD I/O VIP students

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

Postby dadreamer on 06 Jul 2019, 22:34

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-бит не актуальна. :)
User avatar
dadreamer
professor
professor
 
Posts: 3336
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2019
Karma: 845
I/O VIP vision internet

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

Postby Схемотехник on 06 Jul 2019, 23:11

Спасибо всем откликнувшимся.
Я правильно понимаю, что никаких vi мне не нужно, а требуется справочник по win api и user32.dll?
Схемотехник
interested
interested
 
Posts: 3
Joined: 06 Jul 2019, 16:53
LabVIEW Version: 8.2
Karma: 0

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

Postby Kosist on 06 Jul 2019, 23:59

В принципе, да - но, как написал dadreamer, где-то уже существует :labview:-обертка этих dll - если найдете, будет проще. А если нет - то нужно писать самому.
Мы делили апельсин - много наших полегло...
User avatar
Kosist
expert
expert
 
Posts: 1006
Joined: 21 Feb 2011, 23:44
Medals: 2
Activity (1) Gold (1)
LabVIEW Version: 2013-2017
Karma: 282
CLAD I/O VIP students

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

Postby Схемотехник on 08 Jul 2019, 22:42

Я начал пробовать прописывать ручками вызов нужных функций. В принципе, все понятно. Примеры есть, msdn есть, литературы по api32 и справочников системного программиста хватает - есть все, что нужно для полного счастья. Как говорится-спасибо, что дали пинка в нужном направлении.
Схемотехник
interested
interested
 
Posts: 3
Joined: 06 Jul 2019, 16:53
LabVIEW Version: 8.2
Karma: 0


Return to Для чайников

Who is online

Users browsing this forum: MSN, Yandex and 1 guest

cron