Узнать активно ли текущее окно GetWindowThreadProcessId user32.dll

Темы связанные с инженерными разработками, но не подходящие в другие ветки форума
Ответить
Аватара пользователя
Juri
I/O
I/O
Сообщения: 268
Зарегистрирован: 19 апр 2017, 23:06
Версия LabVIEW: 2021
Благодарил (а): 15 раз
Поблагодарили: 6 раз

Узнать активно ли текущее окно GetWindowThreadProcessId user32.dll

Сообщение Juri »

В примере есть функция GetForegroundWindow которая выдает id текущего активного окна. А мне надо получить id окна моей программы, чтобы знать когда оно активно. Вроде как функция GetGUIThreadInfo может дать такой id. Как сделать драйвер вызова функции?
Описание тут

Код: Выделить всё

BOOL GetGUIThreadInfo(
  [in]      DWORD          idThread,
  [in, out] PGUITHREADINFO pgui
);

Код: Выделить всё

typedef struct tagGUITHREADINFO {
  DWORD cbSize;
  DWORD flags;
  HWND  hwndActive;
  HWND  hwndFocus;
  HWND  hwndCapture;
  HWND  hwndMenuOwner;
  HWND  hwndMoveSize;
  HWND  hwndCaret;
  RECT  rcCaret;
} GUITHREADINFO, *PGUITHREADINFO, *LPGUITHREADINFO;
Вложения
Test.vi
(14.29 КБ) 8 скачиваний
Последний раз редактировалось Juri 21 июн 2024, 13:02, всего редактировалось 2 раза.
Аватара пользователя
Juri
I/O
I/O
Сообщения: 268
Зарегистрирован: 19 апр 2017, 23:06
Версия LabVIEW: 2021
Благодарил (а): 15 раз
Поблагодарили: 6 раз

Re: GetGUIThreadInfo user32.dll

Сообщение Juri »

Возможно тут есть решение

Код: Выделить всё

DWORD GetWindowThreadProcessId(
  [in]            HWND    hWnd,
  [out, optional] LPDWORD lpdwProcessId
);
Аватара пользователя
zxc_pavel
adviser
adviser
Сообщения: 244
Зарегистрирован: 02 июн 2016, 12:07
Версия LabVIEW: 15
Благодарил (а): 9 раз
Поблагодарили: 23 раза
Контактная информация:

Re: GetGUIThreadInfo user32.dll

Сообщение zxc_pavel »

Вроде так можно
1306.png
Artem.spb

Activity Автор
professor
professor
Сообщения: 3457
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 53 раза
Поблагодарили: 178 раз
Контактная информация:

Re: GetGUIThreadInfo user32.dll

Сообщение Artem.spb »

Juri писал(а): 13 июн 2024, 15:54 А мне надо получить id окна моей программы, чтобы знать когда оно активно.
Как сделать драйвер вызова функции?
вам ехать, или шашечки?
Нужен статус окна, или драйвер функции?

001.JPG
002.JPG
003.JPG
Аватара пользователя
Juri
I/O
I/O
Сообщения: 268
Зарегистрирован: 19 апр 2017, 23:06
Версия LabVIEW: 2021
Благодарил (а): 15 раз
Поблагодарили: 6 раз

Re: GetGUIThreadInfo user32.dll

Сообщение Juri »

Artem.spb писал(а): 13 июн 2024, 21:08 вам ехать, или шашечки?
Нужен статус окна, или драйвер функции?
Оно работает только при переключении между окнами одной программы. Если сделать активным любую другую программу, эта штука об этом не сообщит
Artem.spb

Activity Автор
professor
professor
Сообщения: 3457
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 53 раза
Поблагодарили: 178 раз
Контактная информация:

Re: GetGUIThreadInfo user32.dll

Сообщение Artem.spb »

Да, странная индикация.
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3951
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 12 раз
Поблагодарили: 137 раз
Контактная информация:

Re: GetGUIThreadInfo user32.dll

Сообщение dadreamer »

Juri писал(а): 13 июн 2024, 16:22Возможно тут есть решение
Вложения
Untitled 1.vi
lv2021
(10.62 КБ) 18 скачиваний
FredP
beginner
beginner
Сообщения: 28
Зарегистрирован: 19 апр 2020, 01:22
Версия LabVIEW: 2021
Благодарил (а): 4 раза
Поблагодарили: 5 раз
Контактная информация:

Re: GetGUIThreadInfo user32.dll

Сообщение FredP »

Я обычно для работы с окнами использую вот эту библиотеку. Тут есть window ID кстати по имени.
Вложения
WINUTIL.LLB
(383.88 КБ) 9 скачиваний
LVWUtil32.zip
(6.25 КБ) 10 скачиваний
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3951
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 12 раз
Поблагодарили: 137 раз
Контактная информация:

Re: GetGUIThreadInfo user32.dll

Сообщение dadreamer »

FredP писал(а): 16 июн 2024, 09:29Я обычно для работы с окнами использую вот эту библиотеку. Тут есть window ID кстати по имени.
Есть обёртка поновее: https://forums.ni.com/t5/LabVIEW/How-to ... 6#M1179928 Без внешних зависимостей и с поддержкой 64 бит.
Аватара пользователя
Juri
I/O
I/O
Сообщения: 268
Зарегистрирован: 19 апр 2017, 23:06
Версия LabVIEW: 2021
Благодарил (а): 15 раз
Поблагодарили: 6 раз

Re: GetGUIThreadInfo user32.dll

Сообщение Juri »

dadreamer писал(а): 15 июн 2024, 20:45
спасибо! это то что нужно
Аватара пользователя
Juri
I/O
I/O
Сообщения: 268
Зарегистрирован: 19 апр 2017, 23:06
Версия LabVIEW: 2021
Благодарил (а): 15 раз
Поблагодарили: 6 раз

Re: Узнать активно ли текущее окно GetWindowThreadProcessId user32.dll

Сообщение Juri »

Как узнать путь к exe или имя exe по его hWnd?
Вроде GetModuleFileNameExA это делает. А тут даже есть решение. Но у меня ошибка 1097
Вложения
test hWnd.vi
(23.96 КБ) 5 скачиваний
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3951
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 12 раз
Поблагодарили: 137 раз
Контактная информация:

Re: Узнать активно ли текущее окно GetWindowThreadProcessId user32.dll

Сообщение dadreamer »

Смотрел по диагонали только в LV 64-bit. В нескольких местах типы данных неверные стояли. Где-то по ссылке передавался аргумент. Советую обращаться к Windows Data Types, если есть сомнения.
Вложения
test hWnd.vi
lv2021
(8.63 КБ) 8 скачиваний
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Общие»