Member 12891988 Ответов: 2

Запрос справки о клиент-серверном приложении на языке C++


Я должен разработать клиент-серверное приложение на c++, которое должно быть способно отправлять команды(ctrl/alt/shift, а затем a/b/...1/2/3) с сервера в приложение, которое на самом деле находится в фокусе.

Что я уже пробовал:

Я сделал только клиент сервер но не управляющую команду для приложения на сервере от клиента

2 Ответов

Рейтинг:
2

CPallini

Цитата:
Я сделал только клиент сервер но не управляющую команду для приложения на сервере от клиента
Что ж, никто вам в этом не мешает.
Если у вас есть клиент и сервер, и они могут общаться, следующий шаг прост: отправьте "команды" на основе простого протокола, а с другой стороны интерпретируйте и выполняйте их, давая обратную связь по мере необходимости. В чем же тогда препятствие?


Member 12891988

Спасибо за ваш ответ.
Я не знаю, как я могу отправить команду (ctrl+c, например) от клиента к серверу.
Я знаю, как отправить буфер символа или строки, но я не знаю, как я могу отправить комбинацию клавиш с клавиатуры.

CPallini

Что не так в sendig код управляющего ключа (0x11), за которым следует "C" (0x43)?

Member 12891988

Я не знаю, как отправить команду с клавиатуры, чтобы взаимодействовать с процессом в фокусе.
Например: у меня на стороне сервера открыт firefox, и когда я нажимаю ctrl*f с клавиатуры, открывается панель поиска.
Поэтому я бы сделал то же самое, но нажал ctrl+f с моего клиентского компьютера и открыл панель поиска в firefox, установленном на серверном компьютере.
Я просто хочу использовать команду с клавиатуры для взаимодействия с оконным приложением.
и после того,как я не нажимаю enter или send, я хочу только этого: если я нажимаю только ctrl, сервер должен получить его, если я нажимаю ctrl+f, сервер должен получить его и так далее.

CPallini

Ну, тогда вам нужно просто перехватить нажатия клавиш в клиентском приложении и отправить их на сервер. Как это сделать, зависит от вашей операционной системы. В Windows вы можете посмотреть саму документацию:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms646268(v=против 85). aspx

Member 12891988

Большое вам спасибо за вашу помощь.
Я попробую.
С уважением

Member 12891988

Привет, мне нужен еще один совет, я знаю, что есть способы проверить, работает ли процесс уже (через перечисление). Тем не менее, мне было интересно, есть ли способ слушать, когда процесс начинается и заканчивается (например, notepad.exe), а затем выполните какое-либо действие, когда будет обнаружено начало или окончание этого процесса. Я предполагаю, что можно было бы запустить непрерывный цикл перечисления и проверки для каждой предельной единицы времени, но мне было интересно, есть ли более чистое решение.
Как заранее
С уважением

Рейтинг:
2

Jochen Arndt

Вы можете использовать двухканальную связь. После установления соединения сервер может создать новое соединение с клиентом для отправки команд. В этом сценарии (и реализации кода) сервер теперь действует как клиент, а ваше приложение-как сервер (когда ваш клиент открывает соединение, он создает другой прослушивающий сокет для обработки команд с сервера).


Member 12891988

Привет, мне нужен еще один совет, я знаю, что есть способы проверить, работает ли процесс уже (через перечисление). Тем не менее, мне было интересно, есть ли способ слушать, когда процесс начинается и заканчивается (например, notepad.exe), а затем выполните какое-либо действие, когда будет обнаружено начало или окончание этого процесса. Я предполагаю, что можно было бы запустить непрерывный цикл перечисления и проверки для каждой предельной единицы времени, но мне было интересно, есть ли более чистое решение.
Как заранее
С уважением