C# 钩子 keybd_event 输出问题 在线等!第一次提问。大家多多支持。

Jackoder 2010-12-08 10:02:13
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
困扰我好久了
...全文
242 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
失落的凡凡 2010-12-08
  • 打赏
  • 举报
回复
有C#的区的,转到那边去吧。

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧