110,534
社区成员
发帖
与我相关
我的任务
分享
/// <summary>
/// 改键方法
/// </summary>
/// <param name="Vk_num"></param>
/// <returns></returns>
private int ChangeKey(byte Vk_num)
{
//获得魔兽程序的句柄
IntPtr wcHandle = Win32API.FindWindow(null, "Warcraft III");
//获取魔兽进程的ID
IntPtr threadid = Win32API.GetWindowThreadProcessId(wcHandle, IntPtr.Zero);
//取得一个句柄,描述指定应用程序的键盘布局, 经比较中文输入法都小于0
int num = Win32API.GetKeyboardLayout(threadid);
//如果钩子有效并且不是中文输入法
if (wcHandle != IntPtr.Zero && num > 0)
{
//设置游戏窗口到最前
Win32API.SetForegroundWindow(wcHandle);
if (!KeyBoard_Press)
{
Win32API.keybd_event(Vk_num, 0, 0, 0);//按下小键盘
KeyBoard_Press = true;
}
else
{
Win32API.keybd_event(Vk_num, 0, KEYEVENTF_KEYUP, 0); //松开小键盘
KeyBoard_Press = false;
}
return 1;
}
return 0;
}