Как разделить нажатия клавиш или щелчки мыши между несколькими экземплярами программы?

#c #winapi #mouseevent #keystroke

#c #winapi #mouseevent #нажатие клавиши

Вопрос:

В настоящее время я занят достижением чего-то, чего, похоже, не могу понять.

Допустим, у меня на экране открыто 3 окна блокнота. В первом, который я начинаю печатать, как я могу поделиться вводом с другими 2 окнами блокнота и позволить им выводить одно и то же?

Их НЕ нужно скрывать, я предпочитаю, чтобы они были открыты на моем экране, поэтому допустим, что они находятся рядом друг с другом. Мне не нужен код, но мне нужно какое-то объяснение, как этого добиться. Я читал об SendInput() и SendMessage() , но я не понимаю, как они могут отправлять правильные координаты, например, щелчки мыши в одном и том же месте.

Что я сделал до сих пор, так это сделал дескрипторы для всех окон блокнота, чтобы они имели точно такие же координаты, когда активны, но как я могу разделить щелчок левой кнопкой мыши по всем из них только с 1 активным окном, а остальные 2 рядом с ним?

Комментарии:

1. Вы можете установить оконные перехваты в «главном» процессе и передать эти события другим процессам, но для таких вещей, как ввод с помощью мыши, это действительно зависит от того, как Notepad и любые базовые элементы управления реагируют на сообщения окна. Вы можете подделать положение мыши, чтобы операции координации между экраном и клиентом компенсировали различное положение окна, но если что-либо в программе определяет положение мыши из вызовов Windows API вместо данных, прикрепленных к сообщениям, вам, вероятно, не повезло. По крайней мере, с точки зрения дублирования поведения путем имитации ввода.

2. Автоматизация пользовательского интерфейса — единственный надежный способ добиться этого, не мешая пользователю.

3. Чего именно вы хотите достичь? Похоже, вы хотите скопировать ввод одного из блокнотов. Для нажатий клавиш, возможно, вы могли бы попробовать установить клавиатурный хук, а затем отслеживать клавиатуру и это окно блокнота и записывать в другие файлы вручную.