SendKeys.Отправить и отключить ключевые модификаторы - PullRequest
1 голос
/ 05 марта 2009

Я хочу, чтобы ^ N работал так же, как стрелка вниз в древовидной структуре. я думал Мне просто нужно добавить следующее в обработчик KeyDown:

SendKeys.Send("{Down}");

но это рассматривается как стрелка Control-Down, так как клавиша управления в данный момент нажата. Страница msdn описывает, как включить модификатор управления, но не как его отключить.

Спасибо, Кит

Ответы [ 3 ]

4 голосов
/ 21 мая 2009

Извините, что опоздал на вечеринку, но я думаю, что нашел решение:

Сначала импортируем SetKeyboardState:

[DllImport("user32.dll")]
public static extern bool SetKeyboardState(byte[] lpKeyState);

Затем просто вызовите его с нулевым байтовым массивом перед вызовом SendKeys.Send ():

SetKeyboardState(new byte[256]);
SendKeys.Send("your key sequence");

Это сработало для меня. Надеюсь, это поможет!

1 голос
/ 26 марта 2009

Вы можете p / вызвать к keybd_event. Это позволит вам смоделировать ключ, находящийся в состоянии «вверх» и «вниз».

0 голосов
/ 05 марта 2009

Вот трудный способ сделать это. Я признаю, что это не оптимальный способ сделать это. Я уверен, что вы уже знаете это. Возможно, вы захотите перегрузить метод WindProc элемента управления и использовать SendMsg Win32 Api. Вот так я привык возвращать вещи в тот день.

...