我对c#很陌生,我试图创建一个小型系统托盘应用程序,它根据短文本和热键粘贴活动窗口中的内容(发送CTRL + V命令)写在窗口。
实施例。如果在记事本中键入| hl,则应用程序将在活动窗口中粘贴Hello。
到目前为止,我根据找到的here示例,使用NotifyIcon将应用程序设置为系统中的stat,并且能够设置键盘挂钩以侦听按键事件。
我现在需要的是:
if(e.KeyCode.ToString() == "OemPipe") //if hotkey is pressed
{
//listen for the next 5 KeyCode
if(//next 5 KeyCode are A, B, C, D and E)
{
//do stuff
}
else
{
//ignore and listen for hotkey again
}
}
我一直在撞墙试图找几天如何做到这一点,但我甚至无法找到让我开始的东西。
任何想法都会非常感激,如果你有一个代码样本,那就更好了。
答案 0 :(得分:1)
我会试着伸手。
我假设您正在通过KeyEventArgs
对象接收密钥代码,如果您滚动浏览其属性,您会发现两个有趣的内容:
KeyEventArgs.Modifiers
KeyEventArgs.Shift
使用CTRL,ALT或SHIFT按键时,如果按键被锁定,那么在您的代码中,您可以添加到一个数组中,按住这些热键时按键被连续按下,如果找到正确的组合则执行某些操作或者只是清除数组,如果下一个键没有出现任何修饰符。
Somehing如:
private void button1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if ((Control.ModifierKeys & Keys.Shift) == Keys.Shift)
{
AddtoShiftArray(e.keyCode);
clearAllOtherBuffers(); //ignore and listen for hotkey again
if(seeIFWithWhatIHaveHereICanDoStuff()){
doMyStuff();
clearShiftBuffer();
}
}
//Same for ctrl
//Same for alt
}
希望这有帮助! :d