Эмуляция нажатия клавиш

Тема в разделе ".NET", создана пользователем Rema, 11 мар 2008.

  1. Rema

    Rema Гость

    Репутация:
    0
    Как программно иммитировать нажатие клавиши ?
     
  2. fenhuan

    fenhuan Гость

    Репутация:
    0
    SendKeys.Send(...)
     
  3. Rema

    Rema Гость

    Репутация:
    0
    SendKeys хороший метод, только как к нему прицепить коды служебных клавиш,
    например Insert ?
     
  4. fenhuan

    fenhuan Гость

    Репутация:
    0
    ну тогда только сканкод посылать, наверное
     
  5. Rema

    Rema Гость

    Репутация:
    0
    Win32 API юзать в "безопасном коде" нельзя. Надо ScanCod послать средствами .NET
     
  6. Pasha

    Pasha Гость

    Репутация:
    0
    Можно, если у вызывающего кода есть SecurityPermission на UnmanagedCode. Если нет - можно вынести вызывающий код работы с Win32 API в отдельную dll, и через CAS Policy дать этой dll нужные права.
    EDIT: как и сделал MS для SendKeys :)
     
  7. Rema

    Rema Гость

    Репутация:
    0
    У меня SendKeys посылает Unicod-аналог скан-кода, а это далеко не то, что хотелось бы
     
  8. Pasha

    Pasha Гость

    Репутация:
    0
    Rema
    Unicode-аналог скан-кода? Это как o_O? Что, например, приходит при отправке "{INS}"?
     
  9. Rema

    Rema Гость

    Репутация:
    0
    Поставим вопрос так: как передать Keys.Insert в качестве строкового параметра методу SendKeys.Send(keys) ?
     
  10. Pasha

    Pasha Гость

    Репутация:
    0
    Rema
     
  11. fenhuan

    fenhuan Гость

    Репутация:
    0
    Вот такой код успешно работает:

    Form f = new Form();
    RichTextBox tb = new RichTextBox();
    tb.Dock = DockStyle.Fill;
    f.Controls.Add(tb);
    tb.Click += delegate { SendKeys.Send("{INS}"); };
    f.ShowDialog();

    т.е. SendKeys нормально отрабатывает {INS}
     
  12. Rema

    Rema Гость

    Репутация:
    0
    Да, пожалуй срабатывает. Только не понятно как метод определяет, что {INS} соответствует Keys.Insert и где найти соответствия для остальных скан-кодов
     
  13. Pasha

    Pasha Гость

    Репутация:
    0
    Rema
    Судя по всему, в MSDN по SendKeys.Send ты даже не заглядывал? Действительно, зачем? Ведь напрячь сидящих на форуме проще, они же удовольствие получают от копипаста документации по используемым тобой функциям.
     
  14. Rema

    Rema Гость

    Репутация:
    0
    Напряги с английским. Если бы все ходили в MSDN, тогда зачем нужны русско-язычные форумы ?
     
  15. Rema

    Rema Гость

    Репутация:
    0
    RSDN создавался как раз с этой целью, но почему-то переродился в обычный форум
     
  16. Pasha

    Pasha Гость

    Репутация:
    0
    Rema
    Наверное потому что довольно скучно на голом энтузиазме переводить кучу технической документации на русский. Особенно если учесть, что для освоения технического английского достаточно потратить месяц-два. Тебе ведь все равно придется его выучить, так зачем оттягивать неизбежное?
     
  17. Rema

    Rema Гость

    Репутация:
    0
    Я это к тому, что обычно люди смотрят информацию на родном языке,
    а уж если нет ничего подходящего, лезут в MSDN.
    На всякий случай, для таких же, как, я даю соответсвующую теме инфу:
     
Загрузка...

Поделиться этой страницей