Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Общие вопросы по .NET и C# > клавиатура и С# |
Автор: 70n70 9.9.2006, 16:04 |
не подскажите как сделать тчобы при нажатии кнопки в активное окно добавлялось "значение" кнопки. пример кнопка "а" и добавлялась буква "а".. в окно которе сейчас используется...(не считая саму программу) или пример показать.. |
Автор: $tatic 9.9.2006, 17:49 |
Пользуйся классом System.Windows.Forms.SendKeys |
Автор: 70n70 9.9.2006, 18:25 |
я конечно извиняюсь, но не могли бы вы привести пример. ![]() 70n70 |
Автор: ivashkanet 9.9.2006, 19:41 | ||||
Если приложение твое, то выставляешь наружу метод формы ReceiveKey(string Key);
Если нет, то есть пример из MSDN:
P.S. Ничего не проверял, но должно работать ![]() |
Автор: Exception 10.9.2006, 19:40 |
Так ведь SendKeys и шлёт клавишу активному приложению ![]() |
Автор: $tatic 10.9.2006, 20:36 |
Так как планируется создать аналог экранной клавиатуры, то ее приложение будет являться активным во время его использования. Поэтому не надо забывать переключать фокус окна на требуемое приложение, поскольку еще ДО нажатия кнопки (точнее, до срабатывания события Click) на неактивной форме клавиатуры, на нее будет переходить фокус. Я не знаю как это противоречие разрешено в экранной клавиатуре винды. Может необходимо запоминать в отдельном потоке активное приложение (если это не клавиатура), затем при наступлении события активировать это окно и печатать в него. |
Автор: mr.DUDA 10.9.2006, 22:44 |
В экранной клавиатуре используется windows hook, даю зуб на отсечение ![]() |
Автор: $tatic 11.9.2006, 17:00 |
mr.DUDA, проблема в том, что хуки - это системное программирование, а нам надо под .NET ![]() |
Автор: mr.DUDA 12.9.2006, 11:06 |
Вроде я не так понял. Если нужно просто послать нажатие клавиши в выбранное окно - незачем делать его активным, т.к. это может проглючить (остаться висеть) и вообще будет заметно. Достаточно просто вызвать SendMessage с сообщениями WM_KEYDOWN/WM_KEYUP, см. тему про программное нажатие кнопок в приложении. |
Автор: $tatic 12.9.2006, 14:19 |
mr.DUDA, да, наверное ему так лучше будет. И оформить в класс. |
Автор: neProger 24.6.2010, 13:36 |
А есть ли что-нибудь еще кроме System.Windows.Forms.SendKeys.Send и keybd_event, чтобы имитировать нажатие кнопки? В некоторые игры не удаеца отправить клавишу таким образом (игры не риагируют на нажатие), а вот тот же пунтосвичер и экранная клавиатура отправляют туда клавиши на ура. Как это у них получаеца? |