C# 钩子 keybd_event 输出问题 在线等!第一次提问。大家多多支持。
public static void OneKey(byte VirtuaKey, int _interval, int KeyUpDown)
{
keybd_event(VirtuaKey, 0, KeyUpDown, 0);
Thread.Sleep(_interval);
}
public int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam)
{
nameofwindows = windowtoset.Text;//窗口的名字
KeyBoardHookStruct_yj input = (KeyBoardHookStruct_yj)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct_yj));
int wcHandle = FindWindow(null, nameofwindows);
if (wcHandle != 0)
{
SetForegroundWindow((IntPtr)wcHandle);
/**********单快捷键操作*************/
if (checkone1.Checked != false)//设置的快捷键是否可用
{
if (input.yjCode == strtokey(set1.Text))//相对应的操作是一个字符串 例如“A+B+C”
{
string temp=null;
string code=set1_be.Text;
for (int i = 0; i < code.Length; i++)
{
if (code[i] != '+')
{
temp += code[i].ToString();
}
if (i == code.Length - 1)
{
OneKey(strtokey(temp), 0, 0);
OneKey(strtokey(temp), 0, KEYENENTF_KEYUP);
}
else
{
OneKey(strtokey(temp), 0, 0);
OneKey(strtokey(temp), 0, KEYENENTF_KEYUP);
temp = null;
}
}
return 1;
}
}
}
else
{
MessageBox.Show("未发现窗口,请检查是否定义窗口对象或已经打开相应的窗口。");
return 1;
}
//return 0;
return CallNextHookEx(hHook, nCode, wParam, lParam);
}
为什么我在记事本上测试的时候都是输出两个比如 ABAB
困扰我好久了