![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
70n70 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 16.8.2006 Репутация: нет Всего: нет |
не подскажите как сделать тчобы при нажатии кнопки в активное окно добавлялось "значение" кнопки. пример кнопка "а" и добавлялась буква "а".. в окно которе сейчас используется...(не считая саму программу)
или пример показать.. |
|||
|
||||
$tatic |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 651 Регистрация: 28.1.2005 Репутация: 2 Всего: 22 |
Пользуйся классом System.Windows.Forms.SendKeys
|
|||
|
||||
70n70 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 16.8.2006 Репутация: нет Всего: нет |
я конечно извиняюсь, но не могли бы вы привести пример.
![]() 70n70 |
|||
|
||||
ivashkanet |
|
||||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
Если приложение твое, то выставляешь наружу метод формы ReceiveKey(string Key);
Если нет, то есть пример из MSDN:
P.S. Ничего не проверял, но должно работать ![]() |
||||
|
|||||
Exception |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
Так ведь SendKeys и шлёт клавишу активному приложению
![]() |
|||
|
||||
$tatic |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 651 Регистрация: 28.1.2005 Репутация: 2 Всего: 22 |
Так как планируется создать аналог экранной клавиатуры, то ее приложение будет являться активным во время его использования. Поэтому не надо забывать переключать фокус окна на требуемое приложение, поскольку еще ДО нажатия кнопки (точнее, до срабатывания события Click) на неактивной форме клавиатуры, на нее будет переходить фокус. Я не знаю как это противоречие разрешено в экранной клавиатуре винды. Может необходимо запоминать в отдельном потоке активное приложение (если это не клавиатура), затем при наступлении события активировать это окно и печатать в него.
|
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
В экранной клавиатуре используется windows hook, даю зуб на отсечение
![]() -------------------- ![]() |
|||
|
||||
ivashkanet |
|
||||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
Не понял идею ![]() ![]() ![]() Имхо Дело обстоит так: Получаем клавишу. Отправляем клаву на задний план --- становиться активным приложение с которым работал пользователь до нажатия на клаву. Отправляем ему кнопку. Возвращаем клаву на место. Единственный скользкий момент --- клава будет прыгать вверх- вниз, но я думаю можно сделать ее всегда на верху других окон (это логично), тогда можно (а можно ли) просто убирать с нее фокус. P.S.
Действительно бред какой-то написал. "Если приложение твое... " -- на кой тогда SendKeys ![]() |
||||
|
|||||
$tatic |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 651 Регистрация: 28.1.2005 Репутация: 2 Всего: 22 |
mr.DUDA, проблема в том, что хуки - это системное программирование, а нам надо под .NET
![]() |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Вроде я не так понял. Если нужно просто послать нажатие клавиши в выбранное окно - незачем делать его активным, т.к. это может проглючить (остаться висеть) и вообще будет заметно. Достаточно просто вызвать SendMessage с сообщениями WM_KEYDOWN/WM_KEYUP, см. тему про программное нажатие кнопок в приложении.
-------------------- ![]() |
|||
|
||||
$tatic |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 651 Регистрация: 28.1.2005 Репутация: 2 Всего: 22 |
mr.DUDA, да, наверное ему так лучше будет. И оформить в класс.
|
|||
|
||||
neProger |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 8.11.2007 Репутация: нет Всего: нет |
А есть ли что-нибудь еще кроме System.Windows.Forms.SendKeys.Send и keybd_event, чтобы имитировать нажатие кнопки?
В некоторые игры не удаеца отправить клавишу таким образом (игры не риагируют на нажатие), а вот тот же пунтосвичер и экранная клавиатура отправляют туда клавиши на ура. Как это у них получаеца? |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |