2009-03-05 2 views
1

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

SendKeys.Send("{Down}"); 

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

Спасибо, Keith

ответ

4

К сожалению опаздывать к партии, но я думаю, что я нашел решение:

первый, импорт SetKeyboardState:

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

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

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

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

+0

+1 Работаю для меня тоже;) – JustLoren

0

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

1

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

Смежные вопросы