检测Powershell中的特定击键

时间:2014-11-25 21:26:16

标签: powershell conditional

我正在编写一个程序,当我的电池电量达到80%时自动关闭充电器,但我想要一个覆盖键盘快捷键。

我正在使用Powershell与Arduino进行连接,这样可以更轻松地关闭我的远程插座,而且我几乎所有的编码都工作了,我似乎无法找到让Powershell监控的方法击键的特定组合(例如cntrl + alt + c)然后只需打开充电器并忽略其余部分。基本上,我只是想知道是否有一种方法让变量保持为假,直到我输入一个特定的击键(即使在最好的情况下在不同的窗口中工作),然后将其值更改为true。我目前每五分钟检查一次程序,所以我认为我还可以检查所述变量的值,然后再按每个间隔进行一次。

如果没有,是否有办法完成相同类型的切换,这样如果您在控制台中随时键入一个值,该变量将更改值,但在程序监听时仍然会运行其余代码对于那个输入?

由于

1 个答案:

答案 0 :(得分:0)

C# here中有一个关于低级键盘挂钩的示例。你应该能够剽窃/转换/修改这个例子供你自己使用。

基本思想是你需要挂钩非托管代码才能在所有进程中执行此操作。您需要使用GetModuleHandle来获取应用的句柄,将此句柄传递到SetWindowsHookEx以注册回调,CallNextHookEx将链接传递给链接,并{{3完成后删除它。在回调内部,您将能够评估参数以确定是否按下了您要查找的键。有很多从UnhookWindowsHookEx拨打电话的例子。