繁体   English   中英

SendKeys.发送和关闭键修饰符

[英]SendKeys.Send and turning off key modifiers

我想让 ^N 与树控件中的向下箭头一样工作。 我想我只需要将以下内容添加到 KeyDown 处理程序中:

SendKeys.Send("{Down}");

但这被视为 Control-Down 箭头,因为当前按下了控制键。 msdn 页面描述了如何打开控制修饰符,但没有描述如何关闭它。

谢谢,基思

很抱歉来晚了,但我想我找到了解决办法:

首先,导入 SetKeyboardState:

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

然后,只需在调用 SendKeys.Send() 之前用一个零字节数组调用它:

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

这对我有用。 希望这可以帮助!

您可以 p/invoke 到 keybd_event。 这将让您模拟“向上”和“向下”state 的键。

这是做这件事的艰难方法。 我承认这不是最好的方法。 我相信你已经知道了。 您可能希望重载控件的 WindProc 方法并使用 SendMsg Win32 Api。 这就是我过去让事情恢复正常的方式。

您也可以尝试等到不再按下控制键,然后再按下KeySend ,例如:

while (System.Windows.Input.Keyboard.IsKeyDown(Key.LeftCtrl))
{
    // lets try again after a while
    System.Threading.Thread.Sleep(250);
}
SendKeys.Send("{Down}");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM