Дистанционное управление компьютером с КПК
Наверное, у каждого были такие ситуации, когда возникала необходимость управлять компьютером на расстоянии, или в нужный момент не было под рукой мыши.
Существуют разные готовые решения по управлению компьютером. Например, тот же пульт от телевизора в связи по ИК. У этой идеи есть свои минусы и плюсы, но речь не об этом.
Задача: управлять компьютером на расстоянии.
Что имеем: компьютер (объект управления), Wi-Fi роутер (обеспечивает работу с дистанционными устройствами) и телефон с возможностью подключения по Wi-Fi (всегда под рукой, как пульт).
Идея вырисовывается лучше:
Телефон подключается по локальной сети (Wi-Fi) к компьютеру и управляет им. Таким образом, на компьютер нужно приложение, которое будет держать соединение и выполнять команды, а на телефон приложение, отправляющее команды.
Разобравшись с задачей, перейдем к проектированию. На РС будет висеть небольшое приложение в трее
А на телефоне некое подобие мыши
Т.к. на телефоне стоит Windows Mobile 6.5 и на компьютере Windows, было решено писать все на ЯП C# в Visual Studio 2008. Для реализации поставленной задачи будем использовать сокеты для поддержания соединения компьютер-телефон, библиотеку AutoItX3.dll для выполнения управления мышью. Из библиотеки нам понадобятся следующие методы:
[DllImport("AutoItX3.dll", EntryPoint = "AU3_MouseClick")] public static extern int MouseClick(string button, int positionX, int positionY, int NumOfClics, int nSpeed); [DllImport("AutoItX3.dll", EntryPoint = "AU3_MouseMove")] public static extern int MouseMove(int positionX, int positionY, int NumOfClics, int nSpeed); [DllImport("AutoItX3.dll", EntryPoint = "AU3_MouseWheel")] public static extern int MouseWheel(string direction, int nSpeed); [DllImport("AutoItX3.dll", EntryPoint = "AU3_MouseGetPosX")] public static extern int MouseGetPosX(); [DllImport("AutoItX3.dll", EntryPoint = "AU3_MouseGetPosY")] public static extern int MouseGetPosY();
В создание клиент-серверного приложения на сокетах, думаю, не стоит углубляться, т.к. ничего необычного использовано не было. Можно отметить, что подключение происходит по IP(вы уже могли это увидеть на картинках выше), а телефонное приложение отправляет также следующие команды: lmouse, 2lmouse, rmouse, smouse, upmouse, downmouse, leftmouse, rightmouse, upscrollmouse, downscrollmouse, которые принимает приложение на РС.
В итоге имеем реализацию поставленной задачи по дистанционному управлению компьютером. Клиент-серверная часть кода не запрещает подключение нескольких клиентов, поэтому есть возможность управлять сразу с нескольких телефонов. Для запуска необходим .NET Framework 3.5.