[英]C# Key hooks key down event
创建一个按键钩,以便在按下组合键时,应用程序将再次打开。 我研究了各种方法,但是不知道本示例中的输入组合会是什么:
if (e.KeyCode == Keys.C && e.Modifiers == Keys.Control && e.Modifiers == Keys.Shift)
{
//Do work
}
else if (e.KeyCode == Keys.V && e.Modifiers == Keys.Control)
{
//Paste
}
我们的输入组合来自用户,他们在此处从组合框中选择要输入的组合。
public void KeyboardHooks_OnKeyPress(object sender, KeyPressArgs e)
{
//The first input
if (LastKey != Keys.None)
{
Keys combinationOne = (Keys)cmbCombinationOne.SelectedValue;
Keys combinationTwo = (Keys)cmbCombinationTwo.SelectedValue;
}
LastKey = e.Key;
MessageBox.Show("KeyPressed");
}
不确定如何将我们的值设置为组合框的
从您的代码段中,您似乎正在走WinForms关键事件的路线。 如果用户在您的应用程序中进行了按键组合,而您又对其他内容进行了“打开”操作,那么您将走上正确的道路。 您只需要使其动态即可查看是否按下了用户定义的项目。 因此,当您保存用户设置时,请将其转换为键码,以便您可以进行常规
if(e.KeyCode == Settings.FirstModKey && e.KeyCode == Settings.SecondModKey && e.KeyCode == Settings.FirstKey)
您需要考虑多种情况,修饰符Shift,Alt和Control可以为无,一,二或全三。 在我上面的内容中,如果用户仅选择Ctrl,则FirstModKey和SecondModKey可以具有相同的值,或者如果用户同时选择Ctrl和Shift,则它们可以进行处理。 然后FirstKey是非mod键,例如'A'。
该应用程序将再次打开
但是,从引号看来,您似乎想要一个全局钩子,即无论用户在任何应用程序中的任何位置,并且您的应用程序都未运行,您都希望监听并执行其关键代码。 您需要研究服务和低级挂钩。 这可能接近键盘记录,您需要注意谁是受众,安全风险以及可能破坏合规性的问题。
{
//The first input
if (LastKey != Keys.None)
{
int combination1 = (int)Enum.Parse(typeof(Keys), cmbCombinationOne.SelectedValue.ToString());
int combination2 = (int)Enum.Parse(typeof(Keys), cmbCombinationTwo.SelectedValue.ToString());
int LastKeyPress = (int)Enum.Parse(typeof(Keys), LastKey.ToString());
ThisKey = e.Key;
if (combination1 == LastKeyPress && combination2 == Convert.ToInt32(ThisKey))
{
MessageBox.Show("Key pressed");
}
}
LastKey = e.Key;
}
这与我原来的原始代码一起工作
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.