在启动期间在Main-Method中获取WPF应用程序中的键盘状态

时间:2009-10-09 07:16:28

标签: c# wpf keyboard

当我的应用程序在静态void Main方法中启动时,我想确定是否按下了Alt或Ctrl等键,然后以某种Option-Mode启动Application。如何确定启动时是否按下某个键?

我已经发现了一些样本,但它们都导入了一个windows dll,这是我不想做的事情。

3 个答案:

答案 0 :(得分:9)

使用Keyboard.IsKeyDown()静态方法将帮助您检查您感兴趣的键的状态。

if (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl)
       || Keyboard.IsKeyDown(Key.LeftAlt) || Keyboard.IsKeyDown(Key.RightAlt) )
{
    //Load in a special mode
}
else
{
    //Load standard mode
}

答案 1 :(得分:3)

如果您确实需要在main方法中执行此操作,则必须使用

[DllImport("user32.dll")]
public static extern int GetKeyboardState(byte [] lpKeyState);

docs here

因为您通常使用的键盘静态成员在此时不起作用:

Keyboard.Modifiers Keyboard.IsKeyDown

但您可以尝试连接到Application.Startup事件并在那里进行键盘测试。

答案 2 :(得分:1)

您可能想查看this question [SO]

我遇到了同样的问题,最后检查了Loaded事件中的键盘修饰符......