Скрин области экрана.

Простейшие вопросы в области инженерной разработки
Ответить
Юрий
leader
leader
Сообщения: 526
Зарегистрирован: 28 фев 2010, 18:04
Версия LabVIEW: LV2018
Благодарил (а): 10 раз
Поблагодарили: 18 раз
Контактная информация:

Скрин области экрана.

Сообщение Юрий »

Необходимо снять определённую область экрана. Здесь, на форуме подобрал вариант, который реализовал в прилагаемом VI.
Область.png
Казалось бы всё работает, но есть некая странность, которая портит всё дело. Если активным окном является не окна LV, то результат не меняется. Например, программа запущена в цикле, она снимает какую то часть, например, тотал командера. Теперь начинаю его перемещать, при этом катинка в моей программе не меняется. Но стоит щёлкнуть по любому окну, принадлежащему LV, как картинка изменится на ожидаемую. Не думаю, что вариант, выбранный мной, удачный. Вообще нужно следить за состоянием кнопки не LVшной программы. Сама обработка сотояния кнопки по снятой картинке сделана и работает без нареканий, но понятно, что это не красивое решение.
Вложения
Область.vi
(18.42 КБ) 38 скачиваний
Аватара пользователя
dadreamer

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

Re: Скрин области экрана.

Сообщение dadreamer »

Сходу не скажу, в чём конкретно причина, возможно, в бэкграунде перестаёт выполняться симуляция нажатия клавиш. Попробуйте перевести CLFN в Any Thread (жёлтый цвет). А так, могу предложить альтернативную скриншотилку: http://www.labviewportal.org/viewtopic. ... 756#p64756 Вам понадобится найти хэндл (hwnd) окна запущенного приложения через FindWindowA, если заголовок окна не повторяется, можно обойтись без указания класса. Или посмотреть класс через WinSpy++ при необходимости.
Вложения
FindWindow_BD.png
Юрий
leader
leader
Сообщения: 526
Зарегистрирован: 28 фев 2010, 18:04
Версия LabVIEW: LV2018
Благодарил (а): 10 раз
Поблагодарили: 18 раз
Контактная информация:

Re: Скрин области экрана.

Сообщение Юрий »

dadreamer писал(а): 17 янв 2022, 10:43 Попробуйте перевести CLFN в Any Thread (жёлтый цвет).
Не помогло.
А так, могу предложить альтернативную скриншотилку:
Хендл нашёл, с Вашим вариантом и альтернативным одинаковый. Подставил в Get Image By HWND.vi. С BitBit что то есть, но не то - какой то фиксированный участок в середине монитора, не связанный с нужным окном. С BitBit=0 - чёрный прямоугольник того же размера, как с BitBit. LV 32 разрядная, Windows 8.1 64.
Ссылка WinSpy++ очень интересная и полезная, спасибо.
Юрий
leader
leader
Сообщения: 526
Зарегистрирован: 28 фев 2010, 18:04
Версия LabVIEW: LV2018
Благодарил (а): 10 раз
Поблагодарили: 18 раз
Контактная информация:

Re: Скрин области экрана.

Сообщение Юрий »

dadreamer, извиняюсь, всё адекватно работает, просто у искомого окна два похожих написания, что под ними подразумевается не стал разбираться. Со вторым хендлом работает правильно.
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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