C#魔兽世界改键源码.docx
- 文档编号:8457982
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:14
- 大小:35.83KB
C#魔兽世界改键源码.docx
《C#魔兽世界改键源码.docx》由会员分享,可在线阅读,更多相关《C#魔兽世界改键源码.docx(14页珍藏版)》请在冰豆网上搜索。
C#魔兽世界改键源码
本例以演示C#键盘钩子的应用为主,通过调用windows中API函数来实现魔兽世界改键功能。
程序窗体及全体代码如下!
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.Diagnostics;
usingSystem.Runtime.InteropServices;
usingMicrosoft.Win32;
usingSystem.Media;
usingSystem.Threading;
namespace魔§兽篢世酣?
界?
改?
键ü20150327
{
publicpartialclassForm1:
Form
{
publicForm1()
{
InitializeComponent();
}
[DllImport("user32.dll",CharSet=CharSet.Auto,CallingConvention=CallingConvention.StdCall)]//钩3子哩?
安?
装痢?
函ˉ数簓
privateexternstaticintSetWindowsHookEx(intidHook,HookProclpfn,IntPtrhinstance,IntPtrthredid);
[DllImport("user32.dll",CharSet=CharSet.Auto,CallingConvention=CallingConvention.StdCall)]
privateexternstaticboolUnhookWindowsHookEx(intidhook);//钩3子哩?
卸?
载?
函ˉ数簓
[DllImport("user32.dll")]
privatestaticexternIntPtrIsIconic(IntPtrhWnd);
[DllImport("user32.dll")]
privatestaticexternIntPtrFindWindow(stringlpClassname,stringlpWindowsName);//该?
函ˉ数簓获?
得?
一?
个?
顶¥层?
窗洹?
口ú的?
句?
柄括?
[DllImport("user32.dll")]
privatestaticexternvoidkeybd_event(Bytebkv,Bytebscan,Int32dwFlag,Int32dwExtraInfo);//键ü盘ì钩3子哩?
函ˉ数簓
[DllImport("kernel32.dll",CharSet=CharSet.Auto,SetLastError=true)]
privatestaticexternIntPtrGetModuleHandle(stringlpModuleName);//获?
取?
系μ统?
进?
程ì
//----------------------一?
以?
下?
是?
所ù需è要癮的?
设Θ?
定¨的?
系μ统?
变?
量?
-----------------------------------
privateboolopenHook=true;//打洙?
开a关?
闭?
钩3子哩?
privateint[]text=newint[14];
privateinthHook=0;
privateintwin=1;
privateRegistryKeyk1,k2;
privatedelegateintHookProc(intnCode,IntPtrwParam,IntPtrlParam);
privateHookProchp;
privatevoidForm1_Load(objectsender,EventArgse)
{
k1=Registry.CurrentUser;
k2=k1.CreateSubKey("Software\\WarcraftKeyChange");
try
{
text[0]=(int)k2.GetValue("1");
text[1]=(int)k2.GetValue("2");
text[2]=(int)k2.GetValue("3");
text[3]=(int)k2.GetValue("4");
text[4]=(int)k2.GetValue("5");
text[5]=(int)k2.GetValue("6");
text[6]=(int)k2.GetValue("7");
text[7]=(int)k2.GetValue("8");
text[8]=(int)k2.GetValue("9");
text[9]=(int)k2.GetValue("10");
text[10]=(int)k2.GetValue("11");
text[11]=(int)k2.GetValue("12");
text[12]=(int)k2.GetValue("13");
text[13]=(int)k2.GetValue("14");
win=(int)k2.GetValue("15");
}
catch
{
text[0]=81;
text[1]=50;
text[2]=51;
text[3]=52;
text[4]=53;
text[5]=54;
text[6]=48;
text[7]=48;
text[8]=48;
text[9]=48;
text[10]=48;
text[11]=48;
text[12]=48;
text[13]=48;
win=1;
k2.SetValue("1",text[0]);
k2.SetValue("2",text[1]);
k2.SetValue("3",text[2]);
k2.SetValue("4",text[3]);
k2.SetValue("5",text[4]);
k2.SetValue("6",text[5]);
k2.SetValue("7",text[6]);
k2.SetValue("8",text[7]);
k2.SetValue("9",text[8]);
k2.SetValue("10",text[9]);
k2.SetValue("11",text[10]);
k2.SetValue("12",text[11]);
k2.SetValue("13",text[12]);
k2.SetValue("14",text[13]);
k2.SetValue("15",win);
}
textBox1.Text="小?
键ü盘ì7";
textBox2.Text="小?
键ü盘ì8";
textBox3.Text="小?
键ü盘ì4";
textBox4.Text="小?
键ü盘ì5";
textBox5.Text="小?
键ü盘ì1";
textBox6.Text="小?
键ü盘ì2";
textBox7.Text=((char)text[6]).ToString();
textBox8.Text=((char)text[7]).ToString();
textBox9.Text=((char)text[8]).ToString();
textBox10.Text=((char)text[9]).ToString();
textBox11.Text=((char)text[10]).ToString();
textBox12.Text=((char)text[11]).ToString();
textBox13.Text=((char)text[12]).ToString();
textBox14.Text=((char)text[13]).ToString();
if(win==1)
{
checkBox1.Checked=true;
}
else
{
checkBox1.Checked=false;
}
InsertHook();
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
check();
}
privatevoidpress(bytevk)//键ü盘ì对?
应畖的?
操ù作痢?
事?
件t
{
keybd_event(vk,0,0,0);//键ü盘ì按恪?
下?
keybd_event(vk,0,0x0002,0);//键ü盘ì松é开a
}
privatevoidcheck()
{
toolTip1.Show(null,label1);
if(openHook==false)
{
openHook=true;
button1.Text="开a启?
改?
键ü";
//toolTip1.Show("改?
键ü已?
开a启?
",label1,500);
SystemSounds.Asterisk.Play();
}
else
{
openHook=false;
button1.Text="关?
闭?
改?
键ü";
//toolTip1.Show("改?
键ü已?
关?
闭?
",label1,500);
SystemSounds.Asterisk.Play();
}
}
privateintKbHookProc(intnCode,IntPtrwParam,IntPtrlParam)
{
if(Marshal.ReadInt32(lParam)==(int)Keys.Home&&wParam==(IntPtr)0x100)
{
check();
return1;
}
IntPtrhwnd=FindWindow(null,"WarcraftIII");
if(openHook&&hwnd!
=IntPtr.Zero&&nCode>=0&&wParam==(IntPtr)0x100)
{
if(IsIconic(hwnd)==IntPtr.Zero)
{
intvkcode=Marshal.ReadInt32(lParam);
if(vkcode==text[0])
{
press((Byte)Keys.NumPad7);
return1;
}
elseif(vkcode==text[1])
{
press((byte)Keys.NumPad8);
return1;
}
elseif(vkcode==text[2])
{
press((Byte)Keys.NumPad4);
return1;
}
elseif(vkcode==text[3])
{
press((byte)Keys.NumPad5);
return1;
}
if(vkcode==text[4])
{
press((byte)Keys.NumPad1);
return1;
}
elseif(vkcode==text[5])
{
press((byte)Keys.NumPad2);
return1;
}
elseif(vkcode==text[7])
{
press((byte)text[6]);
return1;
}
elseif(vkcode==text[9])
{
press((byte)text[8]);
return1;
}elseif(vkcode==text[11])
{
press((byte)text[10]);
return1;
}elseif(vkcode==text[13])
{
press((byte)text[12]);
return1;
}elseif(vkcode==(int)Keys.LWin&&win==1)
{
return1;
}
return0;
}
}
return0;
}
privatevoidInsertHook()//安?
装痢?
钩3子哩?
{
hp=newHookProc(KbHookProc);
ProcesscurProcess=Process.GetCurrentProcess();
ProcessModulecurModule=curProcess.MainModule;
hHook=SetWindowsHookEx(13,hp,GetModuleHandle(curModule.ModuleName),IntPtr.Zero);
if(hHook==0)
{
Unhook();
}
}
privatevoidUnhook()
{
if(hHook!
=0)
{
UnhookWindowsHookEx(hHook);
hHook=0;
}
}
privatevoidForm1_FormClosed(objectsender,FormClosedEventArgse)
{
Unhook();
}
privatevoidbutton2_Click(objectsender,EventArgse)
{
this.Visible=false;
}
privatevoidtextBox1_KeyDown(objectsender,KeyEventArgse)
{
k2.SetValue("1",e.KeyValue);
text[0]=e.KeyValue;
textBox1.Text=e.KeyData.ToString();
}
privatevoidtextBox2_KeyDown(objectsender,KeyEventArgse)
{
k2.SetValue("2",e.KeyValue);
text[1]=e.KeyValue;
textBox2.Text=e.KeyData.ToString();
}
privatevoidtextBox3_KeyDown(objectsender,KeyEventArgse)
{
k2.SetValue("3",e.KeyValue);
text[2]=e.KeyValue;
textBox3.Text=e.KeyData.ToString();
}
privatevoidtextBox4_KeyDown(objectsender,KeyEventArgse)
{
k2.SetValue("4",e.KeyValue);
text[3]=e.KeyValue;
textBox4.Text=e.KeyData.ToString();
}
privatevoidtextBox5_KeyDown(objectsender,KeyEventArgse)
{
k2.SetValue("5",e.KeyValue);
text[4]=e.KeyValue;
textBox5.Text=e.KeyData.ToString();
}
privatevoidtextBox6_KeyDown(objectsender,KeyEventArgse)
{
k2.SetValue("6",e.KeyValue);
text[5]=e.KeyValue;
textBox6.Text=e.KeyData.ToString();
}
privatevoidtextBox7_KeyDown(objectsender,KeyEventArgse)
{
k2.SetValue("7",e.KeyValue);
text[6]=e.KeyValue;
textBox7.Text=e.KeyData.ToString();
}
privatevoidtextBox8_KeyDown(objectsender,KeyEventArgse)
{
k2.SetValue("8",e.KeyValue);
text[7]=e.KeyValue;
textBox8.Text=e.KeyData.ToString();
}
privatevoidtextBox9_KeyDown(objectsender,KeyEventArgse)
{
k2.SetValue("9",e.KeyValue);
text[8]=e.KeyValue;
textBox9.Text=e.KeyData.ToString();
}
privatevoidForm1_MouseDoubleClick(objectsender,MouseEventArgse)
{
this.Visible=true;
this.WindowState=FormWindowState.Normal;
}
privatevoidtextBox10_TextChanged(objectsender,EventArgse)
{
}
privatevoidtextBox10_KeyDown(objectsender,KeyEventArgse)
{
k2.SetValue("10",e.KeyValue);
text[9]=e.KeyValue;
textBox10.Text=e.KeyData.ToString();
}
privatevoidtextBox11_KeyDown(objectsender,KeyEventArgse)
{
k2.SetValue("11",e.KeyValue);
text[10]=e.KeyValue;
textBox11.Text=e.KeyData.ToString();
}
privatevoidtextBox12_KeyDown(objectsender,KeyEventArgse)
{
k2.SetValue("12",e.KeyValue);
text[11]=e.KeyValue;
textBox12.Text=e.KeyData.ToString();
}
privatevoidtextBox13_KeyDown(objectsender,KeyEventArgse)
{
k2.SetValue("13",e.KeyValue);
text[12]=e.KeyValue;
textBox13.Text=e.KeyData.ToString();
}
privatevoidtextBox14_KeyDown(objectsender,KeyEventArgse)
{
k2.SetValue("14",e.KeyValue);
text[13]=e.KeyValue;
textBox14.Text=e.KeyData.ToString();
}
privatevoidcheckBox1_CheckedChanged(objectsender,EventArgse)
{
if(checkBox1.Checked==true)
{
win=1;
}
else
{
win=0;
}
k2.SetValue("15",win);
}
privatevoidgroupBox1_MouseHover(objectsender,EventArgse)
{
toolTip1.Show("依皑?
次?
对?
应畖物?
品·栏?
",label1);
}
privatevoidgroupBox2_MouseHover(objectsender,EventArgse)
{
}
privatevoidbutton1_MouseHover(objectsender,EventArgse)
{
//toolTip1.Show("打洙?
开a关?
闭?
改?
键ü",label1);
}
privatevoidbutton2_MouseHover(objectsender,EventArgse)
{
//toolTip1.Show("隐皌藏?
到?
状痢?
态?
栏?
",label1);
}
privatevoidcheckBox1_MouseHover(objectsender,EventArgse)
{
//toolTip1.Show("作痢耊in键ü是?
否?
作痢?
用?
",label1);
}
privatevoidForm1_MouseClick(objectsender,MouseEventArgse)
{
if(e.Button==MouseButtons.Left)
{
this.Visible=true;
this.WindowState=FormWindowState.Normal;
}
}
privatevoidtextBox9_KeyDown_1(objectsender,KeyEventArgse)
{
}
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# 魔兽世界 源码