|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
我觉得很重要,一般所说的不重要应该指的是:你学好一种以后再学另一种就很容易了。(因为这样大家可能有一个错觉就是语言不是很重要,只要随便学一种就可以了,其实不是这样的。某天,为了给微博粉丝精灵增添个老板键功效,找一惯的体例,入手下手从收集动手寻觅:关头字相似”C#老板键“,一搜,一堆又一堆,但是出来的代码,基础上都是一个样的:
一般来讲,老板键一样平常少不了:Alt+Ctrl+Shift+XX这类多组合体例,但是各种代码就是不间接申明,也没个提醒,看来是成心埋没,终究,仍是被我发明个中的一些不为人知的埋没属性:
上面看一下自己修正自收集罕见的代码:
publicdelegatevoidHotkeyEventHandler(intHotKeyID);
publicclassSystemHotKey:System.Windows.Forms.IMessageFilter
{
List<UInt32>keyIDs=newList<UInt32>();
IntPtrhWnd;
publiceventHotkeyEventHandlerOnHotkey;
publicenumKeyFlags
{
Alt=0x1,
Ctrl=0x2,
Shift=0x4,
Win=0x8,
//组合键即是值相加
Alt_Ctrl=0x3,
Alt_Shift=0x5,
Ctrl_Shift=0x6,
Alt_Ctrl_Shift=0x7
}
[DllImport("user32.dll")]
publicstaticexternUInt32RegisterHotKey(IntPtrhWnd,UInt32id,UInt32fsModifiers,UInt32vk);
[DllImport("user32.dll")]
publicstaticexternUInt32UnregisterHotKey(IntPtrhWnd,UInt32id);
[DllImport("kernel32.dll")]
publicstaticexternUInt32GlobalAddAtom(StringlpString);
[DllImport("kernel32.dll")]
publicstaticexternUInt32GlobalDeleteAtom(UInt32nAtom);
publicSystemHotKey(IntPtrhWnd)
{
this.hWnd=hWnd;
}
publicintRegisterHotkey(KeyFlagskeyflags,System.Windows.Forms.KeysKey)
{
System.Windows.Forms.Application.AddMessageFilter(this);
UInt32hotkeyid=GlobalAddAtom(System.Guid.NewGuid().ToString());
RegisterHotKey((IntPtr)hWnd,hotkeyid,(UInt32)keyflags,(UInt32)Key);
keyIDs.Add(hotkeyid);
return(int)hotkeyid;
}
publicvoidUnregisterHotkeys()
{
if(keyIDs.Count>0)
{
System.Windows.Forms.Application.RemoveMessageFilter(this);
foreach(UInt32keyinkeyIDs)
{
UnregisterHotKey(hWnd,key);
GlobalDeleteAtom(key);
}
keyIDs.Clear();
}
}
publicboolPreFilterMessage(refSystem.Windows.Forms.Messagem)
{
if(m.Msg==0x312)
{
if(OnHotkey!=null)
{
foreach(UInt32keyinkeyIDs)
{
if((UInt32)m.WParam==key)
{
OnHotkey((int)m.WParam);
returntrue;
}
}
}
}
returnfalse;
}
}
以上有几个要点说一下:
1:System.Windows.Forms.Application.AddMessageFilter(this);这句必要对应System.Windows.Forms.Application.RemoveMessageFilter(this);这里用完要记得作废。
因为本来的程序,只在机关函数里增加,以是作废后,再设置就会生效了,这里间接在注册的时分给加上,作废时往失落,注重下这个效果便可。
2:热键的组合:
//组合键即是值相加
Alt_Ctrl=0x3,
Alt_Shift=0x5,
Ctrl_Shift=0x6,
Alt_Ctrl_Shift=0x7
这个是不经意义觉察的,网上的代码都没有提到,估量转的人太多了,晓得的又不写出来。
3:把Hastable变动成List<Unint32>体例。
比来事对照多,写文都对照复杂了,年夜伙包涵了。
2003年中微软发布最新版本的ASP.netWebMatrix,对于我们喜欢用Asp.net来编程的朋友实在是个好消息,我也实实在在的将Asp.net更深入的研究了一下,以方便我以后更好的运用它,同时我也讲讲使用它的感受。 |
|