仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1292|回复: 11
打印 上一主题 下一主题

[学习教程] ASP.NET网站制作之Winform 多组合老板键Alt_Ctrl_Shift仓酷云

[复制链接]
逍遥一派 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:15:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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更深入的研究了一下,以方便我以后更好的运用它,同时我也讲讲使用它的感受。
飘灵儿 该用户已被删除
沙发
发表于 2015-1-25 07:44:38 | 只看该作者
Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。
再现理想 该用户已被删除
板凳
发表于 2015-2-2 15:48:20 | 只看该作者
但是java靠开源打出的一片天地,特别是在微软的垄断下能打开今天的局面还是有它的生命力的。
飘飘悠悠 该用户已被删除
地板
发表于 2015-2-8 00:10:20 | 只看该作者
同时也感谢博客园给我们这个平台,也感谢博客园的编辑们做成专题引来这么多高人指点。
柔情似水 该用户已被删除
5#
发表于 2015-2-8 23:11:38 | 只看该作者
ASP.NET可以无缝地与WYSIWYGHTML编辑器和其他编程工具(包括MicrosoftVisualStudio.NET)一起工作。这不仅使得Web开发更加方便,而且还能提供这些工具必须提供的所有优点,包括开发人员可以用来将服务器控件拖放到Web页的GUI和完全集成的调试支持。微软为ASP.net设计了这样一些策略:易于写出结构清晰的代码、代码易于重用和共享、可用编译类语言编写等等,目的是让程序员更容易开发出Web应用,满足计算向Web转移的战略需要。
只想知道 该用户已被删除
6#
发表于 2015-2-9 15:44:31 | 只看该作者
逐步缩小出错代码段的范围,最终确定错误代码的位置。
因胸联盟 该用户已被删除
7#
发表于 2015-2-9 22:53:42 | 只看该作者
ASP是把代码交给VBScript解释器或Jscript解释器来解释,当然速度没有编译过的程序快了。
精灵巫婆 该用户已被删除
8#
发表于 2015-2-28 03:33:14 | 只看该作者
是指转换后的Servlet程序代码的行数。这给调试代码带来一定困难。所以,在排除错误时,可以采取分段排除的方法(在可能出错的代码前后输出一些字符串,用字符串是否被输出来确定代码段从哪里开始出错)。
蒙在股里 该用户已被删除
9#
发表于 2015-3-9 20:16:32 | 只看该作者
碰到复杂点的问题都不知道能不能解决,现在有点实力的公司都选择自已在开源的基础上做开发。但没听说过有人在IIS上做改进的,windows、sqlserver集群方面的应用也很少见。
莫相离 该用户已被删除
10#
发表于 2015-3-11 12:11:36 | 只看该作者
这也就是最近几年来随着各种新的后台技术的诞生,CGI应用在Internet上越来越少的原因。CGI方式不适合大访问量的应用。
小女巫 该用户已被删除
11#
发表于 2015-3-18 10:28:52 | 只看该作者
通过这次激烈的讨论,我从大家身上学到了太多,开阔了眼界,不管是支持我的还是骂我的,都感谢你们。
逍遥一派 该用户已被删除
12#
 楼主| 发表于 2015-3-25 15:52:19 | 只看该作者
是目前ASP在UNIX/Linux上的应用可以说几乎为0)。所以平台的局限性和ASP自身的安全性限制了ASP的广泛应用。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-6-30 06:20

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表