Как правильно активировать окно и переключить фокус клавиатуры на него в чужом потоке с использованием оконных сообщений16.12.2021, 05:23. Показов 7019. Ответов 20
Метки нет (Все метки)
Я почитал инструкции которые здесь описаны https://docs.microsoft.com/en-... g-messages, тема довольно объёмная сложная, примеров очень мало. Значит я нахожу дескриптор окна по этому алгоритму(в дальнейшем его можно переделать на более простой если система конечно не запрещает отправлять сообщения к не вызывающим потокам) https://www.cyberforum.ru/blog... g7148.html, далее после 64ой строчки дописываю код.
cout<<"PeekMessageA "<<PeekMessageA(&MSG,g_HWND[1],WA_ACTIVE,WM_KEYLAST,PM_QS_SENDMESSAGE)<<en;//не знаю или это корректно. Результата нет.Примечание 2. По идее эта функция должна посылать сообщение в другой поток, обычно для этого требуются бешеные привилегии и такие функции как правило не работают. Хотя в инструкции сказано что такие привилегии нужны если идёт работа с удалённым рабочим столом. Я посылаю команду на активацию и переключения реагирования клавиатуры поэтому 2 раза указываю WA_ACTIVE. Последним параметром я пишу о том что нужно снять активацию с текущего окна, т.е. любого окна верхнего уровня, т.к. работаю с дебагом то понятно что на переднем плане компилятор а не запускаемая программа. В инструкции сказано что можно 0 писать, может система сама снимает активацию. Это очень странно что её нужно снимать с 1го окна и переводить на другое возникает вопрос как работать во многопотоке, там что тоже активация постоянно переключается и создаётся впечатления что активация не снимается. Примечание 3. Получаю информацию. В конечном итоге получаю ошибку 1159 что говорит о некой синхронизации не совсем понятно почему если я укзал что нужно снять с верхнего окна активацию и переключиться на g_HWND[1]. Проверил дескриптор окна он верный, номер потока тоже да и в принципе здесь записано так if(GetWindowThreadProcessId(g_HWND[1]=(HWND)++rrr[0],&rrr[1])==pe32pt.th32ThreadID)... что в принципе проверяет возвращается ли номер потока с участием этого процесса ну и конечно дескриптора окна. Хотя можно и вручную вбить разницы нет. Покажите пример как эти функции выполнют такую задачу.
0
|
||||||
| 16.12.2021, 05:23 | |
|
Ответы с готовыми решениями:
20
Как переключить фокус программы на нужное окно? Переключить раскладку клавиатуры в чужом окне
|
|
0 / 0 / 0
Регистрация: 17.12.2021
Сообщений: 11
|
||||||||||||||||
| 22.12.2021, 10:40 | ||||||||||||||||
0
|
||||||||||||||||
| 22.12.2021, 10:40 | |
|
Помогаю со студенческими работами здесь
21
Как переключить фокус на другую открытую форму? Как правильно создать двумерный массив указателей с использованием calloc? и ввод данных в него Проблема с перехватом оконных сообщений Как переключить раскладку клавиатуры из VB? Обьясните логику в Последовательности оконных сообщений Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|