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

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

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

使用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 } 

如果你真的需要在main方法中使用它,你将不得不使用它

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

这里的文档

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

Keyboard.Modifiers Keyboard.IsKeyDown

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

您可能想查看这个问题 [SO]

我有同样的问题,最终检查Loaded事件中的键盘修饰符…