dota2卡尔一键切技能切技能好难啊,那些一下放4个技能的到底怎么玩的

套装地下城全精通获取心得,不妥之处相互交流,只为给各位有兴趣的朋友提供帮助。
首先声明,这个帖子是建立在有基友的基础上,如果有哪位朋友立志于单刷那么看看笑笑即可,不必当真,本人也就是小屌丝一枚,闲来无事将这个做完,也算是给自己这个版本一个交代吧,闲话休提,言归正传。所有的宝石都是转煞、火牛和毁伤,因为有人帮忙打,生存第一位。首先从我的首发英雄开始,这个版本一开始先玩儿的猎魔人,所以套装最早集齐。(这里要感谢一下大神的帖子算是剽窃一下,见谅[url]http://bbs.ngacn.cc/read.php?tid=8752246[/url])多重套:难度--低入口位置----传送卡尔蒂姆城,出城门向右走,破旧马车处。[img]./mon_/318_56e89ce64ca95.png[/img]相关任务目标[img]./mon_/318_56e89d2b3f401.png[/img]TIPS:1、多重套地图是A5要塞,有四个大平台,怪物充足,邀请一个拉僧好基友,帮忙拉怪然后多重射击;
2、戒律不能低于50%所以建议带飞刀腰带--使用暗影飞刀后不消耗戒律。掠夺套:难度--0入口位置---传送A3战场,最中间投石机处[img]./mon_/318_56e89e496591d.png[/img]相关任务目标[img]./mon_/318_56e89e5f96e72.png[/img]TIPS:1、带好箭塔箭袋,站在门口放箭塔;
2、找个多重DH、跑马豆角基友帮忙清怪;
3、别走神。暗影套:难度--中暗影套入口:通往A5最终BOSS的路上[img]./mon_/318_56e89ef836b54.png[/img]相关任务目标[img]./mon_/318_56e89f1481a9c.png[/img]TIPS:1、武器使用回憎匕首;
2、飞刀不要使用穿透的匕首;
3、建议带死亡标记,用标记来数怪,标记一个打一个;
4、建议找多重DH基友帮忙清怪
5、装备强度最好是能够秒单体怪,萃取穿怪鞋。娜塔亚套:难度---低娜塔亚套入口:A1沃桑小教堂门口右边[img]./mon_/318_56e8a.png[/img]相关任务目标[img]./mon_/318_56e8a0550276e.png[/img]TIPS:1、武器还是娜塔亚和黎明,保证不要消耗完你的憎恨;
2、剑雨用8秒物理剑雨;
3、地图是永恒战场,建议走外圈;
4、怪物强度不高,建议有CDR的部位洗出CDR第二个说说秘法师整体而言秘法师四套在有基友的帮助下都属于比较简单的塔拉夏:难度---中塔拉夏入口:A1,大教堂门口上吊树旁边[img]./mon_/318_56e8a2a90272b.jpg[/img]相关任务目标[img]./mon_/318_56e8a2d1ddecc.jpg[/img]TIPS:1、萃去以太(法师都萃取这个建议)
2、被动星辰之躯,启发,残影,不稳异能
3、难度在于地上钻出来的虫子,但是虫子位置是固定的,有6-8只,具体没数,打几次熟练一下就可以了;
4、装备有一定强度,否则怪物打不死,90个怪要求还是比较高的;
5、找个DH基友帮忙清怪。罩子套:难度--中罩子套入口:A3,天冠城垛,右下角一个角落[img]./mon_/318_56e8a3e11f035.jpg[/img]相关任务目标[img]./mon_/318_56e8a3e4ae12b.jpg[/img]TIPS:1、一个拉僧基友一个多重基友
2、原力波反弹必带
3、地图是方形的,拉僧和法师本人一人一条路,优先完成罩子罩30怪的任务,反弹很简单,运气好10秒就完成了
4、保命第一,保命第一,保命第一不死鸟套:难度---低不死鸟套入口:A2佐敦库勒陵墓外面桥头[img]./mon_/318_56e8a522d8168.jpg[/img]相关任务目标[img]./mon_/318_56e8a.jpg[/img]TIPS:1、技能带黑洞:[1]魔星1#,[2]冰霜新星2#,[3]传送1#,[4]黑洞1#,[左]魔法飞弹5#,[右] 瓦解射线2#
2、被动带星辰之躯,启发,残影,烧焚
3、先进去拉怪完成陨石炸怪
4、黑洞丢完瓦解射线,这个图怪多,一次能完成3-4次的灼烧20只怪,很容易
5、找个DH基友帮忙清怪。OVER维尔套:难度---低维尔套入口:A3,拉基斯之渡飞到头[img]./mon_/318_56e8a644b7d91.jpg[/img]相关任务目标[img]./mon_/318_56e8a6443157f.jpg[/img]TIPS:1、装备带棒棒糖一套,腰带穿萃取黑人出来50层都可以
2、被动星辰之躯,启发,残影,不稳异能
3、进门开黑人开罩子炸炸炸
4、找个DH基友帮忙清怪,OVER第三个说蛮子这个版本蛮子的荒原套简直丧心病狂(谁设计的,拉出来我绝壁不打死你)荒原套:难度---高荒原套入口:A5,混沌要塞入口附近[img]./mon_/318_56e8a.jpg[/img]相关任务目标基本目标:在未受到致命伤害的情况下,击杀 161 只怪物套装目标:一次撕裂 10 个不同的敌人,共 3 次套装目标:在地城内期间完全不受任何物理伤害TIPS:1、武僧基友拉怪,DH基友清怪
2、注意不要被陷阱菜刀砍刀,砍刀就可以GG思密达了
3、痛割用增加距离的符文冲锋套:难度---中冲锋套入口:A5,城镇右手边出口出去往上走[img]./mon_/318_56e8a91f7cc5b.jpg[/img]相关任务目标基本目标:在未受到致命伤害的情况下,击杀 375 只怪物套装目标:以狂暴冲锋一次击中 15 个不同的敌人,共 6 次套装目标:使用 1500% 伤害加成效果的能量消耗技能,一次击中 15 个不同的敌人TIPS:1、冲锋套的层数是可以累积的,所以进入地下城前在外面冲锋个几十次,进去之后冲锋一个怪就可以丢石头,效果也是1500%
2、怪比较分散而且会跑,所以一定确定了15个怪再冲锋;
3、优先做第一个目标大地套:难度---中大地套入口:[img]./mon_/318_56e8a9df591f1.jpg[/img]相关任务目标基本目标:在未受到致命伤害的情况下,击杀 168 只怪物套装目标:对每个精英怪在 6 秒内依序使出跃击、震地践踏和裂地之震套装目标:在一分钟内,每 10 秒钟至少要击杀 1 个冻结的敌人TIPS:1、这几个技能必须按照顺序来施放,只需要击杀6只精英
2、所有技能的符文都带冰冻效果的就可以了,非常简单
3、不要同时对两只精英使用COMBO、不要同时对两只精英使用COMBO、不要同时对两只精英使用COMBO---重要事情说三遍不朽之王套:难度---低不朽之王套入口:[img]./mon_/318_56e8a9e50abff.jpg[/img]相关任务目标基本目标:在未受到致命伤害的情况下,击杀 168 只怪物套装目标:在250%伤害加成效果下杀死每只精英怪套装目标:让狂战之怒维持 120 秒TIPS:1、我用的方式是冲层的不朽5+冲锋3方式做的,如果不愿意用这个BD建议用血球锤;
2、萃取血球回怒护腕;
3、赛亚人尽量在快结束前使用第四个说下豆角豆角的四个套装都是很简单的圣光套:难度---低圣光套入口:A2,浸水小径,走到头[img]./mon_/318_56e8acca40f19.jpg[/img]相关任务目标[img]./mon_/318_56e8acc9a02b2.jpg[/img]TIPS:1、技能带:[1]阿卡拉特勇士4#,[2]天罚之剑4#,[3]盾闪3#,[4]挑衅3#,[左]祝福之锤3#,[右]战马冲锋4#
2、被动带:一统千军,铁处女,热忱,铁胆钢心
3、轰击很好躲,躲不开就去切JJ
4、用祝福之锤刷天罚之剑CD,达成目标后坐等基友清怪。唤魔套:难度----低唤魔套入口:建立新人物出生地[img]./mon_/318_56e8accb68840.jpg[/img]相关任务目标[img]./mon_/318_56e8adb1900ca.jpg[/img]TIPS:1、主动技能带:[1]阿卡拉特勇士4#,[2]钢铁之肤1#,[3]奉献2#,[4]轰击1#,[左]烈焰斩5#,[右]战马冲锋4#
2、被动技能带:一统千军,铁处女,热忱,铁胆钢心
3、见到精英先放轰击,然后用烈焰斩打到残血,再开钢铁之肤和奉献击杀之。
4、然后坐等基友帮忙清场。罗兰套:难度---低罗兰套入口:A2,阿尔喀纳斯之路[img]./mon_/318_56e8accac8374.jpg[/img]相关任务目标[img]./mon_/318_56e8ae6b8ba7e.jpg[/img]TIPS:1、主动技能带:[1]阿卡拉特勇士4#,[2]钢铁之肤5#,[3]盾闪3#,[4]挑衅3#,[左]横扫5#,[右]战马冲锋4#
2、被动技能带:一统千军,铁处女,热忱,铁胆钢心
3、建议萃取穿怪鞋,带刨肉金枷
4、于怪物密集处施展横扫,用盾闪和挑衅回怒以达成耗怒目标
5、任务完成坐等基友清场。阿克汗套:难度---低阿克汗套入口:A3,要塞主城地下一层小房间里[img]./mon_/318_56e8accc130f4.jpg[/img]相关任务目标[img]./mon_/318_56e8af9102368.jpg[/img]TIPS:1、主动技能:[1]阿卡拉特勇士4#,[2]钢铁之肤5#,[3]天谴1#,[4]挑衅3#,[左]祝福之盾4#,[右]战马冲锋4#
2、被动技能:一统千军,铁处女,热忱,铁胆钢心
3、进门策马驰骋,于怪物密集处开天谴吸怪,然后开外星人,飞盾击杀之。第五个说下武僧武僧整体也不难,除了捂脸。。。丧心病狂啊捂脸娜:难度--丧心病狂(其他都是5-10分钟搞定就这个花了2小时)入口位置:A5,右上角萨卡兰姆大教堂[img]./mon_/318_56e8b.jpg[/img]相关任务目标[img]./mon_/318_56e8b138c0a49.jpg[/img]TIPS:1、带银剑,狮爪,头带瑟夫,火免项链很重要
2、萃取永恒之悟
3、主要看运气,因为怪物分布有一定随机性。此图怪物数量有限,单波怪物数量不足,必须引怪聚怪,不允许失误。进门回廊第一波定成败,如未成功不妨重来。使用飓风破聚怪+断筋诀引爆。
4、图非常大、非常大、非常大、大.........,找两个帮手清怪,不然真的很难很难很难千风飓套:难度---低入口位置:A1,旧废墟[img]./mon_/318_56e8b239b42ea.jpg[/img]相关任务目标[img]./mon_/318_56e8b23a75b1d.jpg[/img]TIPS:1、先上一张地图的图,地图不会变,找两个帮手一个专注清怪,另一个帮你开路,轻松随意[img]./mon_/318_56e8b23af1b5a.jpg[/img]2、带个银剑,没什么好说的了尹娜套:难度---低入口位置:A2&“秘密营地”&“卡尔蒂姆集市”&“被淹没的堤道”[img]./mon_/318_56e8b34caf0de.jpg[/img]相关任务目标[img]./mon_/318_56e8b34d4746e.jpg[/img]TIPS:1、到怪堆里去放技能
2、带个冰免项链
3、找个帮手帮忙清怪,坐等完成猴王套:难度---低入口位置:A4,大菠萝门口左边[img]./mon_/318_56e8b40bb00c5.jpg[/img]相关任务目标[img]./mon_/318_56e8b40a58673.jpg[/img]地下城地图[img]./mon_/318_56e8b40b00482.jpg[/img]TIPS:1、萃取银剑啊,带大殿香炉,地图太大了,不然打不完,京四郎之魂是核心之核心
2、主动技能:[1]灵光悟1#,[2]疾风击1#,[3]飓风破2#,[4]劲风煞3#,[左]断筋诀3#,[右]救赎真言3#
3、被动技能:先发制人,伊塔之辉,天人合一,健步如飞
4、进门开劲风煞,一路前进即可,不时打拳补风,依靠自动嘲讽,基本可以完成目标。之所以将我污放最后因为整体巫医是最难的亚拉基尔套:难度---中入口位置[img]./mon_/318_56e8b588d9c7d.jpg[/img]相关任务目标[img]./mon_/318_56e8b5896ddd7.jpg[/img]TIPS:1、主动技能:[1]灵魂行走1#,[2]食人鱼1#,[3]尸蛛2#,[4]妖术4#,[左]蟾蜍之疫5#,[右]瘟疫虫群1#
2、被动技能:剥削死者,欺瞒仪式,沼泽调谐,灵魂容器
3、一路向前,灵行加速,蟾蜍CD好了就放,遇到精英先让你的蜘蛛打到半血再放你的食人鱼,成功率高祖尼玛萨套:难度---中入口位置[img]./mon_/318_56e8b628ba875.jpg[/img]相关任务目标[img]./mon_/318_56e8b629ee0b6.jpg[/img]地图信息[img]./mon_/318_56e8b62a714d1.jpg[/img]TIPS:1、维尔根之触,通冥腰带是核心
2、技能带[1]灵魂行走1#,[3]亡者之握4#,[4]鬼娃大军3#
3、被动鬼娃跟班,狂热忠诚
4、这个地城怪很少,注意优先完成任务,不然怪不够就GG思密达了玉魂师:难度---低入口位置[img]./mon_/318_56e8b708d3350.jpg[/img]相关任务目标[img]./mon_/318_56e8b.jpg[/img]玉魂师地图[img]./mon_/318_56e8b.jpg[/img]TIPS:1、先完成目标
2、找帮手清场,OVER魔牙套:难度---中入口位置[img]./mon_/318_56e8b79d89bad.jpg[/img]相关任务目标[img]./mon_/318_56e8b79e75348.jpg[/img]地下城地图[img]./mon_/318_56e8b79ef26fe.jpg[/img]TIPS:1、小鸡51即可
2、一波怪肯定是不够滴,至少两拨怪拉一起
3、亡者之墙用最后一个冰符文,很简单就能完成
4、带毒免 项链切记
5、找帮手清怪,OVER我勒个去,终于写完了,累shi我了!!!!!!!!!!!!!!!!!!!
剩下的正在截图,等下继续编辑
终于完成了,累shi我了!!!!!!!
好桑心,写这么多没人看,自己顶一下
支持楼主,码字传图辛苦了!其实蛮后悔的,自己做[del]完[/del]的时候看了各种帖子,NGA和某恩的都有,其中总有相对较好的打法,也有自己觉得可以改良的,只是一路做下来没有记录。但是有一条是通用的:除非要挑战自我,有要单人过关的强迫症以外,有1-2个好基友帮你清怪聚怪什么的话,这些地下城的难度直接折半(甚至为0,典型的掠夺者套)
感谢腻死大神带我飞,塔拉夏已经是我心中永远的阴影了(岩虫的位置已经印到了脑海里)[s:ac:怕]
还没决定去不去做,一个人做太虐心,又没有好基友
[b]Reply to [pid=03200,1]Reply[/pid] Post by [uid=1481002]谈笑舞乾坤[/uid] ( 10:44)[/b]欢迎来我们战队一起玩耍,很多好心人可以帮你
[b]Reply to [pid=03200,1]Reply[/pid] Post by [uid=]nero0000[/uid] ( 00:39)[/b]不客气不客气
哈哈,这个全看自己的兴趣了不是吗
楼主好人……珍藏了[s:ac:goodjob]
楼主写了这么多,辛苦了!像我这样的野人的话这套成就确实不好做
单人做了22个,玉魂、千飓找人帮忙,越到后面越没耐心
辛苦了,赞一个
能写写技能就好了,虽然我的只剩蛮子的。楼主辛苦?
因为我是单刷过的,所以不是单刷的都鄙视一下,不是单刷的还能叫对这个版本有交代吗?下个版本就削弱了,你想证明自己也不能了![del]其实是没有基友啊,我也想轻松拿翅膀啊[/del]
感谢楼主分享,已经收藏了,以后要做慢慢看![s:ac:blink]
感谢楼主,已收!
赞赞赞,哈哈,我就要鄙视你们只做了荆棘套就罢手的路过,什么绿翅膀,好看吗?听说守望先锋的完爆它啊,哎,这种也就成就党喜欢,对于单刷玩家,好难上手的说,
[b]Reply to [pid=03200,1]Reply[/pid] Post by [uid=]雅美腻死[/uid] ( 19:31)[/b]求加战队,非赛季好无聊2里面卡尔是个神一样的角色,操作好的话实现三连甚至7连都有可能,这在团战争的恐怖输出就是团灭对方的节奏,但是实际游戏中还需要看情况来释放技能,下面是卡尔操作技巧分享。操作技巧七连方法分享‍分路很多人停留在冰雷卡盛行的DO1时代,认为卡尔就应该烈单。事实是路人的话去烈单卡尔废了一半。卡尔是一个很占资源,需要占线占得很稳的英雄,前期等级太重要。如果没有9J,大招22秒CD,一波打架本来四个技能就只能放三个,而火人75蓝,性价比奇高,肯定挂身上,肯定要放弃冰墙或者天火其中一个,但是一个火人战斗力不算太强,这就很尴尬,所以卡尔最好赖住线,带好TP必要支援,发育到至少9级,最好10J再去打团。当然机会特别好可以考虑游走一下,一定要保证成功率,游走后马山回到线上继续发育。卡尔优秀路发育的话中路一定搭配推进核心,或者物理伪核,搭配ST之类GANK能力强的容错率很低,对中路要求太高,打不出优势后期卡尔被针对团战就会很乏力。路人还是单中优势路留个大哥稍稳一点。然后出装,优势路无脑裸点金。中路除非被针对得太厉害,也推荐裸点金。很多人喷点金卡尔,我想大部分喷是因为玩的这个人不懂点金的意义。为什么裸?不是裸个点金去刷无解肥。首先裸出点金后点一次补几个刀就有鞋了,然后你很快就能到9J,这意味具有参团能力的时间点提前了。冰火卡不是相位大魔棒护腕打架就凶,是9J!10分钟之内9J你战斗力裸体也比相位战鼓8J强!点金过后草鞋或者相位看个人喜好。然后就是推推。个人推荐草鞋推推。切入都是不错的选择。很多人喜欢风杖。风杖对于卡尔留人回复效果无可厚非,但是你要迷信风杖TDB那就活该被喷了。就算你三级大,12秒CD,打架你风杖TDB秒掉对面一个脆皮了,之后呢?之后12S你就是高级远程兵。抓人的时候被蹲了一套打下来隐身都切不了,被打断那就更崩了。这套个人感觉是针对AM
ST NW QOP之类中期喜欢一个人出现在线上的。风杖吹起GFY,FYB都不错,至少你火人在可以保证后续,而且Y的CD
20S没有TDB那么长。不推荐A杖出太早。前中期冰火卡打团有用的技能只有FYDBG跑路V收割T就不说了,D和B都很少需要。而且魔很容易几下打空。太早出个A杖真心不如羊刀或者BKB来得有用。怕对面DOOM或者点控就林肯,生存能力和续航都大大加强。大后期标准神装,飞鞋羊刀推推BKB(林肯)A杖刷新。什么风杖跳刀这些杂技装玩的溜的你也没必要看我这个贴了,你不比我差。10J后加点遇到之前说的特殊情况需要风杖TDB针对的时候,可以继续加火。一般来说至少11J补个2J大招,之后升火还是3J大看个人喜好吧。16J这点很关键。很多人认为这时候4冰1雷满火了就该开始补雷了,不是的,5J冰很重要,因为5J冰吹风时两秒。在A杖满级大的时候2S吹风可以X接CDB或者DBG四连。17J5冰1雷,然后4雷,然后满冰,最后满雷。冰的等级高了吹风好接技能。不过对面冲脸凶5冰先满雷。而且冲脸阵容多怕磁暴消耗。前中期单杀,留FG的话推上去FGY比较简单。留的是FY的话,位置不是太好需要侧身G。这个要单机多练练,G不到人还是很尴尬。不过这一套比起TDB不太耗蓝,杀不到人也不是很伤。看情况比如要杀QOP,AM,FYB好一点,不过对操作要求很高。打团,多数情况下只需要三个技能,FGY,小火人不容易死的话,注意F的CD,好了就重新开出来。保证火人在战场的持续时间。一般小火人跟着自己集火秒人,迂回战可以用它追着对面脆皮点,也可以狂点对面冲脸的。打团除非对切入很有把握,推上去放冰墙这种事需谨慎,侧身放效果很不错的。被抓一定要冷静。比如你看见一个鱼人开T冲上来,那你想的不该是跑,果断回头打。FYG他脆得跟纸一样。最好是开了F等他靠近一点再上Y,这样他意识到冲不上来的时候可以G留住。强势期卡尔最不怕的就是冲脸。对线很多卡尔喜欢在线上挂天火。个人觉得不可取。天火不要放太勤,太耗蓝,扔不到太伤,扔到了还容易被队友喷K人头,必要的时候再切出来用,平时挂FY,火人单分45S左右召出来看符,看到F酱油不去控直接A掉。双分35S左右召出来去拉大野,这里要保证2J冰,不然持续时间不够。线上机会好还可以直接FY切个天火单杀。被抓了对面进塔了就回头FYT,如果对面吃下这一套你还是死了那你跑也是死,毕竟移动速度是硬伤。有个小技巧,很多人都知道卡尔急速冷却接天火这一套,所以你把对面打残了他会走位,但是你先放天火的话就不一样了。如果身上刚好挂有天火,可以在对面准备补刀的位置先放个天火,再上极速冷却,配合小火人点。讲几套比较熟练的卡尔连招,这里所谓的连招是狂按不带停的,什么刷新20连就别扯淡了前期,火人急速冷却天火。中期,火人冰墙急速冷却,火人急速冷却超声波,无脑风杖TDB后期,这个只能简写了。以下都是建立在至少17J
A杖 至少5J冰1。XDBG
身上挂EWQ(注意顺序,EWQ是你按键的顺序,下同)预留XD(先切出X后切出D,下同)操作:XRDBQERG这一套是2。XCDB
看个人喜好。A.可以身上挂WWW 预留XD 操作:XRCDEQRB 这种切法优点是,身上预留的WWW,跑得快。B.也可以挂EEW,预留XC
操作:XRCDBQRB 这套优点是切超声波只需要按QR,也就是只用按7个键刷新七连1.XCDBDBG
操作:同B,刷新BD后QERG2.XCDBCBG 操作:同A,刷新CB后QERG3.这个操作难一点 我偶尔会失误 XCDBDBC
前四个跟1一样,刷新后D马上WWWR然后BC,因为第一个B的冲击时间,手快的话第二个B能无缝接上的。COOK的刷新8连就是这套,只不过后面加了个冰墙。因为最后切冰墙需要等1秒左右R的CD了,所以其实算不上连。这些看着很华丽,其实练练谁都会。关键是切入点太重要。COOK也不是每次都成功,很多时候放空或者效果不太好,所以不要迷恋连招,打团能把10个技能都放好就很犀利了。
英雄和物品3204人阅读
dota外挂(4)
可执行程序和源代码下载地址:
卡尔一键放技能
&&&& 突然间想试试用卡尔这个英雄,毕竟这个英雄技能多比较爽,但不好的是技能太多转换起来好麻烦好难记,所以有个一键放技能的工具就好了。
&&&&&& 其实这个原理跟dota改键精灵的是一样的,都是利用windows挂钩技术,首先设置好键盘钩子,然后捕获键盘消息,再调用自己写的发送按键消息的函数,即可一键切换技能。
举个例子吧,比如卡尔的“急速冷却”这个技能,原本是按QQQR来切换,再加上Y来释放,比如我们想用数字键“1”来一键释放这个技能,那么就在捕获了用户按下“1”这个键之后,想魔兽3这个窗体发送QQQRY几个按键消息,
SendMessage(childWnd, WM_KEYDOWN, 'Q', 0);
&&&&&&&&&&& SendMessage(childWnd, WM_KEYUP, 'Q', 0);
&&&&&&&&&&& SendMessage(childWnd, WM_KEYDOWN, 'Q', 0);
&&&&&&&&&&& SendMessage(childWnd, WM_KEYUP, 'Q', 0);
&&&&&&&&&&& SendMessage(childWnd, WM_KEYDOWN, 'Q', 0);
&&&&&&&&&&& SendMessage(childWnd, WM_KEYUP, 'Q', 0);
&&&&&&&&&&& SendMessage(childWnd, WM_KEYDOWN, 'R', 0);
&&&&&&&&&&& SendMessage(childWnd, WM_KEYUP, 'R', 0);
&&&&&&&&&&& Thread.Sleep(300);//有时候不延迟一点会无法释放技能的
&&&&&& &&&&&SendMessage(childWnd, WM_KEYDOWN, 'Y', 0);
&&&&&&&&&&& SendMessage(childWnd, WM_KEYUP, 'Y', 0);
&&&&&& 当然在这之前要设置钩子,大约如下
&&&&&&&&&&&&& using (System.Diagnostics.Process curProcess = System.Diagnostics.Process.GetCurrentProcess())
&&&&&&&&&&&&& using (System.Diagnostics.ProcessModule curModule = curProcess.MainModule)
&&&&& &&&&&&&&hKeyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardHookProcedure, GetModuleHandle(curModule.ModuleName), 0);
SetWindowsHookEx的第一个参数为要截获的消息类型,这里肯定是键盘消息啊,第二个参数为截获到消息后的回调函数,第三个参数为回调函数所在dll或exe的模块的句柄,这里是本执行程序的句柄,第四个为关联的线程id(这个不是很懂,不过知道的是系统钩子设置为0即可)。
&&&&&& 然后回调函数做的事就是根据用户按下的键而决定向魔兽3发送什么按键消息。
&&&&&& 刚开始有点坑爹,本来我打算先用c语言写个控制台程序实现一键放技能的功能,但是貌似控制台程序有个缺点,就是它会尽可能快的结束这个程序的运行,就是它按着main函数运行,一般很快就到return 了,一return程序就不工作了,它不会像窗体程序那样在等待消息。我试过用system(“pause”)让main函数阻塞在那里,但回调函数还是不起效即不会工作。还试过在main函数里面设置一个while的死循环,在里面输出点什么或者向记事本发送几个字符,有时截获到消息有时又没有。哎,总之,对windows的消息机制还不是很懂,解决不了。最后还是用窗体程序做吧。
&&&&&& 后来用wpf做了,其中发现一个很有趣的事情。就是用到CallNextHookEx,网上声明这个函数的一般的方法都是将第四个参数声明为int或者Int32的,但我观察到一个现象就是对于同一个函数,很多人用的时候声明有时候不一样的,特别是参数类型,但的确都是可行的,我就纳闷了,于是结合几篇文章,瞎搞了一下,就是把第四个参数类型设为自己定义的结构体,没想到竟然可以,声明如下&&&&&& public static extern int CallNextHookEx(int idHook, int nCode,
Int32 wParam, ref KeyboardHookStruct lParam);
其中[StructLayout(LayoutKind.Sequential)]
&&&&&&& public struct KeyboardHookStruct
&&&&&&&&&&& public int vkC//键盘虚拟码
&&&&&&&&&&& public int scanC//扫描码
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&& public int dwExtraI
真不是很懂windows api的调用是怎样子的啊,看来有时间要研究一下这个问题。
贴一下源代码吧(用wpf写的):
&Window x:Class=&Carl.MainWindow&
& & & & xmlns=&/winfx/2006/xaml/presentation&
& & & & xmlns:x=&/winfx/2006/xaml&
& & & & Title=&卡尔一键释放技能-linger& Height=&700& Width=&525&
& & & & Loaded=&Window_Loaded&
& & & & Left=&100&
& & & & Top=&30&
& & & & Icon=&icon.ico&
& & & & Deactivated=&Window_Deactivated&
& & &Window.Background&
& & & & &ImageBrush ImageSource=&carl.jpg& /&
& & &/Window.Background&
& & &ScrollViewer&
& & & & &StackPanel &
& & & & & & &Button Width=&100& Margin=&30& Click=&Button_Click&&应用&/Button&
& & & & & & &StackPanel Orientation=&Horizontal& HorizontalAlignment=&Center&&
& & & & & & & &&
& & & & & & & & &TextBlock Margin=&0,0,50,0&&
& & & & & & & & & & & & & &Foreground=&Red&
& & & & & & & & & & & & & &FontSize=&15&&
& & & & & & & & & & 按键&/TextBlock&
& & & & & & & & &TextBlock
& & & & & & & & & & &Foreground=&Red&
& & & & & & & & & & FontSize=&15&&技能&/TextBlock&
& & & & & & &/StackPanel&
& & & & & & &StackPanel Name=&main&&
& & & & & & & & &!--
& & & & & & & & &StackPanel Orientation=&Horizontal& HorizontalAlignment=&Center&&
& & & & & & &TextBox Width=&50& Height=&20& MaxLength=&1& Margin=&20&&
& & & & & & &/TextBox&
& & & & & & &ComboBox Name=&cb& Width=&100& Height=&20&&&
& & & & & & & & & & & & &ComboBoxItem&急速冷却&/ComboBoxItem&
& & & & & & & & & & & & &ComboBoxItem&浑沌陨石&/ComboBoxItem&
& & & & & & & & & & & & &ComboBoxItem&超震声波&/ComboBoxItem&
& & & & & & & & & & & & &ComboBoxItem&强袭飓风&/ComboBoxItem&
& & & & & & & & & & & & &ComboBoxItem&熔炉精灵&/ComboBoxItem&
& & & & & & & & & & & & &ComboBoxItem&冰墙&/ComboBoxItem&
& & & & & & & & & & & & &ComboBoxItem&电磁脉冲&/ComboBoxItem&
& & & & & & & & & & & & &ComboBoxItem&幽灵漫步&/ComboBoxItem&
& & & & & & & & & & & & &ComboBoxItem&阳炎冲击&/ComboBoxItem&
& & & & & & & & & & & & &ComboBoxItem&灵动迅捷&/ComboBoxItem&
& & & & & & & & & & & & & &
& & & & & & &/ComboBox&
& & & & &/StackPanel&--&
& & & & &&
& & & & &/StackPanel&
& & &/StackPanel&
& & &/ScrollViewer&
&Window x:Class=&Carl.MainWindow&
& & & & xmlns=&/winfx/2006/xaml/presentation&
& & & & xmlns:x=&/winfx/2006/xaml&
& & & & Title=&卡尔一键释放技能-linger& Height=&700& Width=&525&
& & & & Loaded=&Window_Loaded&
& & & & Left=&100&
& & & & Top=&30&
& & & & Icon=&icon.ico&
& & & & Deactivated=&Window_Deactivated&
& & &Window.Background&
& & & & &ImageBrush ImageSource=&carl.jpg& /&
& & &/Window.Background&
& & &ScrollViewer&
& & & & &StackPanel &
& & & & & & &Button Width=&100& Margin=&30& Click=&Button_Click&&应用&/Button&
& & & & & & &StackPanel Orientation=&Horizontal& HorizontalAlignment=&Center&&
& & & & & & & &&
& & & & & & & & &TextBlock Margin=&0,0,50,0&&
& & & & & & & & & & & & & &Foreground=&Red&
& & & & & & & & & & & & & &FontSize=&15&&
& & & & & & & & & & 按键&/TextBlock&
& & & & & & & & &TextBlock
& & & & & & & & & & &Foreground=&Red&
& & & & & & & & & & FontSize=&15&&技能&/TextBlock&
& & & & & & &/StackPanel&
& & & & & & &StackPanel Name=&main&&
& & & & & & & & &!--
& & & & & & & & &StackPanel Orientation=&Horizontal& HorizontalAlignment=&Center&&
& & & & & & &TextBox Width=&50& Height=&20& MaxLength=&1& Margin=&20&&
& & & & & & &/TextBox&
& & & & & & &ComboBox Name=&cb& Width=&100& Height=&20&&&
& & & & & & & & & & & & &ComboBoxItem&急速冷却&/ComboBoxItem&
& & & & & & & & & & & & &ComboBoxItem&浑沌陨石&/ComboBoxItem&
& & & & & & & & & & & & &ComboBoxItem&超震声波&/ComboBoxItem&
& & & & & & & & & & & & &ComboBoxItem&强袭飓风&/ComboBoxItem&
& & & & & & & & & & & & &ComboBoxItem&熔炉精灵&/ComboBoxItem&
& & & & & & & & & & & & &ComboBoxItem&冰墙&/ComboBoxItem&
& & & & & & & & & & & & &ComboBoxItem&电磁脉冲&/ComboBoxItem&
& & & & & & & & & & & & &ComboBoxItem&幽灵漫步&/ComboBoxItem&
& & & & & & & & & & & & &ComboBoxItem&阳炎冲击&/ComboBoxItem&
& & & & & & & & & & & & &ComboBoxItem&灵动迅捷&/ComboBoxItem&
& & & & & & & & & & & & & &
& & & & & & &/ComboBox&
& & & & &/StackPanel&--&
& & & & &&
& & & & &/StackPanel&
& & &/StackPanel&
& & &/ScrollViewer&
&Window x:Class=&Carl.MainWindow&
& & & & xmlns=&/winfx/2006/xaml/presentation&
& & & & xmlns:x=&/winfx/2006/xaml&
& & & & Title=&卡尔一键释放技能-linger& Height=&700& Width=&525&
& & & & Loaded=&Window_Loaded&
& & & & Left=&100&
& & & & Top=&30&
& & & & Icon=&icon.ico&
& & & & Deactivated=&Window_Deactivated&
& & &Window.Background&
& & & & &ImageBrush ImageSource=&carl.jpg& /&
& & &/Window.Background&
& & &ScrollViewer&
& & & & &StackPanel &
& & & & & & &Button Width=&100& Margin=&30& Click=&Button_Click&&应用&/Button&
& & & & & & &StackPanel Orientation=&Horizontal& HorizontalAlignment=&Center&&
& & & & & & & &&
& & & & & & & & &TextBlock Margin=&0,0,50,0&&
& & & & & & & & & & & & & &Foreground=&Red&
& & & & & & & & & & & & & &FontSize=&15&&
& & & & & & & & & & 按键&/TextBlock&
& & & & & & & & &TextBlock
& & & & & & & & & & &Foreground=&Red&
& & & & & & & & & & FontSize=&15&&技能&/TextBlock&
& & & & & & &/StackPanel&
& & & & & & &StackPanel Name=&main&&
& & & & & & & & &!--
& & & & & & & & &StackPanel Orientation=&Horizontal& HorizontalAlignment=&Center&&
& & & & & & &TextBox Width=&50& Height=&20& MaxLength=&1& Margin=&20&&
& & & & & & &/TextBox&
& & & & & & &ComboBox Name=&cb& Width=&100& Height=&20&&&
& & & & & & & & & & & & &ComboBoxItem&急速冷却&/ComboBoxItem&
& & & & & & & & & & & & &ComboBoxItem&浑沌陨石&/ComboBoxItem&
& & & & & & & & & & & & &ComboBoxItem&超震声波&/ComboBoxItem&
& & & & & & & & & & & & &ComboBoxItem&强袭飓风&/ComboBoxItem&
& & & & & & & & & & & & &ComboBoxItem&熔炉精灵&/ComboBoxItem&
& & & & & & & & & & & & &ComboBoxItem&冰墙&/ComboBoxItem&
& & & & & & & & & & & & &ComboBoxItem&电磁脉冲&/ComboBoxItem&
& & & & & & & & & & & & &ComboBoxItem&幽灵漫步&/ComboBoxItem&
& & & & & & & & & & & & &ComboBoxItem&阳炎冲击&/ComboBoxItem&
& & & & & & & & & & & & &ComboBoxItem&灵动迅捷&/ComboBoxItem&
& & & & & & & & & & & & & &
& & & & & & &/ComboBox&
& & & & &/StackPanel&--&
& & & & &&
& & & & &/StackPanel&
& & &/StackPanel&
& & &/ScrollViewer&
&Window x:Class=&Carl.MainWindow&
& & & & xmlns=&/winfx/2006/xaml/presentation&
& & & & xmlns:x=&/winfx/2006/xaml&
& & & & Title=&卡尔一键释放技能-linger& Height=&700& Width=&525&
& & & & Loaded=&Window_Loaded&
& & & & Left=&100&
& & & & Top=&30&
& & & & Icon=&icon.ico&
& & & & Deactivated=&Window_Deactivated&
& & &Window.Background&
& & & & &ImageBrush ImageSource=&carl.jpg& /&
& & &/Window.Background&
& & &ScrollViewer&
& & & & &StackPanel &
& & & & & & &Button Width=&100& Margin=&30& Click=&Button_Click&&应用&/Button&
& & & & & & &StackPanel Orientation=&Horizontal& HorizontalAlignment=&Center&&
& & & & & & & &&
& & & & & & & & &TextBlock Margin=&0,0,50,0&&
& & & & & & & & & & & & & &Foreground=&Red&
& & & & & & & & & & & & & &FontSize=&15&&
& & & & & & & & & & 按键&/TextBlock&
& & & & & & & & &TextBlock
& & & & & & & & & & &Foreground=&Red&
& & & & & & & & & & FontSize=&15&&技能&/TextBlock&
& & & & & & &/StackPanel&
& & & & & & &StackPanel Name=&main&&
& & & & & & & & &!--
& & & & & & & & &StackPanel Orientation=&Horizontal& HorizontalAlignment=&Center&&
& & & & & & &TextBox Width=&50& Height=&20& MaxLength=&1& Margin=&20&&
& & & & & & &/TextBox&
& & & & & & &ComboBox Name=&cb& Width=&100& Height=&20&&&
& & & & & & & & & & & & &ComboBoxItem&急速冷却&/ComboBoxItem&
& & & & & & & & & & & & &ComboBoxItem&浑沌陨石&/ComboBoxItem&
& & & & & & & & & & & & &ComboBoxItem&超震声波&/ComboBoxItem&
& & & & & & & & & & & & &ComboBoxItem&强袭飓风&/ComboBoxItem&
& & & & & & & & & & & & &ComboBoxItem&熔炉精灵&/ComboBoxItem&
& & & & & & & & & & & & &ComboBoxItem&冰墙&/ComboBoxItem&
& & & & & & & & & & & & &ComboBoxItem&电磁脉冲&/ComboBoxItem&
& & & & & & & & & & & & &ComboBoxItem&幽灵漫步&/ComboBoxItem&
& & & & & & & & & & & & &ComboBoxItem&阳炎冲击&/ComboBoxItem&
& & & & & & & & & & & & &ComboBoxItem&灵动迅捷&/ComboBoxItem&
& & & & & & & & & & & & & &
& & & & & & &/ComboBox&
& & & & &/StackPanel&--&
& & & & &&
& & & & &/StackPanel&
& & &/StackPanel&
& & &/ScrollViewer&
c#:using S
using System.Collections.G
using System.L
using System.T
using System.W
using System.Windows.C
using System.Windows.D
using System.Windows.D
using System.Windows.I
using System.Windows.M
using System.Windows.Media.I
using System.Windows.N
using System.Windows.S
using System.C
using System.Runtime.InteropS
using System.T
namespace Carl
& & /// &summary&
& & /// MainWindow.xaml 的交互逻辑
& & /// &/summary&
& & public partial class MainWindow : Window
& & & & //using System.Runtime.InteropS记得添加
& & & & [DllImport(&USER32.DLL&)]
& & & & public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
& & & & [DllImport(&user32.dll&)]
& & & & private static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
& & & & [DllImport(&User32.DLL&)]
& & & & public static extern int SendMessage(IntPtr hWnd, uint Msg, int wParam, int lParam);
& & & & [DllImport(&kernel32.dll&)]
& & & & public static extern IntPtr GetModuleHandle(string lpModuleName);
& & & & //安装钩子
& & & & [DllImport(&user32.dll&, CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
& & & & public static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId);
& & & & //下一个钩子
& & & & [DllImport(&user32.dll&, CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
& & & & public static extern int CallNextHookEx(int idHook, int nCode, Int32 wParam, ref KeyboardHookStruct lParam);
& & & & //卸载钩子
& & & & [DllImport(&user32.dll&, CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
& & & & public static extern bool UnhookWindowsHookEx(int idHook);
& & & & public delegate int HookProc(int nCode, Int32 wParam,ref KeyboardHookStruct lParam);
& & & & HookProc KeyboardHookP
& & & & public const int WH_KEYBOARD_LL = 13;
& & & & const int WM_CHAR = 0x102;
& & & & const int &WM_KEYDOWN = 0x100;
& & & & const int WM_KEYUP = 0x101;
& & & & IntPtr npWnd, childW
& & & & static int hKeyboardHook = 0;
& & & & &[StructLayout(LayoutKind.Sequential)]
& & & & public struct KeyboardHookStruct
& & & & & & public int vkC//表示一个1到254间的虚拟键盘码
& & & & & & public int scanC//表示硬件扫描码
& & & & & &
& & & & & &
& & & & & & public int dwExtraI
& & & & public MainWindow()
& & & & & & InitializeComponent();
& & & & & & for (int i = 0; i & 10;i++ )
& & & & & & & & addNew();
& & & & & & ht = new Hashtable();
& & & & & & init(0, &1&, &急速冷却&);
& & & & & & init(1, &2&, &浑沌陨石&);
& & & & & & init(2, &3&, &超震声波&);
& & & & & & init(3, &4&, &强袭飓风&);
& & & & & & init(4, &5&, &熔炉精灵&);
& & & & & & init(5, &6&, &冰墙&);
& & & & & & init(6, &7&, &电磁脉冲&);
& & & & & & init(7, &8&, &幽灵漫步&);
& & & & & & init(8, &9&, &阳炎冲击&);
& & & & & & init(9, &0&, &灵动迅捷&);
& & & & & &
& & & & & &&
& & & & void updateKeyValue()
& & & & & & &ColdSnap = (char)(ht[&急速冷却&].ToString().ToCharArray())[0];
& & & & & & &ChaosMeteor = toVcode(&浑沌陨石&);
& & & & & & &DefeaningBlast = toVcode(&超震声波&);
& & & & & & &Tornado = toVcode(&强袭飓风&);
& & & & & & &ForgedSpirit = toVcode(&熔炉精灵&);
& & & & & & &IceWall = toVcode(&冰墙&);
& & & & & & &EMP = toVcode(&电磁脉冲&);
& & & & & & &GhostWalk = toVcode(&幽灵漫步&);
& & & & & & &SunStrike = toVcode(&阳炎冲击&);
& & & & & & &Alacrity = toVcode(&灵动迅捷&);
& & & & char toVcode(string str)
& & & & & & char ch = &(char)(ht[str].ToString().ToCharArray())[0];
& & & & & & //小写还要转成大写
& & & & & & if(ch &= 'a' && ch &='z')
& & & & & & & & ch = (char)(ch - 'a' +'A');
& & & & & &
& & & & void init(int index,string key,string tec)
& & & & & & StackPanel sp = (StackPanel)main.Children[index];
& & & & & & ComboBox cbb = (ComboBox)sp.Children[1];
& & & & & & TextBox tbb = (TextBox)sp.Children[0];
& & & & & & tbb.Text =
& & & & & & cbb.SelectedValue =
& & & & & & ht.Add((cbb.SelectedItem).ToString(),tbb.Text);
& & & & void addNew()
& & & & & & StackPanel sp = new StackPanel();
& & & & & & sp.Orientation = Orientation.H
& & & & & & sp.HorizontalAlignment = System.Windows.HorizontalAlignment.C
& & & & & & TextBox tb = new TextBox();
& & & & & & tb.Width = 50;
& & & & & & tb.Height = 20;
& & & & & & tb.Margin = new Thickness(20);
& & & & & & tb.MaxLength = 1;
& & & & & & sp.Children.Add(tb);
& & & & & & ComboBox cb2 = new ComboBox();
& & & & & & cb2.Width = 100;
& & & & & & cb2.Height = 20;
& & & & & & //原来下面添加的字符串不是ComboxItem
& & & & & & cb2.Items.Add(&急速冷却&);
& & & & & & cb2.Items.Add(&浑沌陨石&);
& & & & & & cb2.Items.Add(&超震声波&);
& & & & & & cb2.Items.Add(&强袭飓风&);
& & & & & & cb2.Items.Add(&熔炉精灵&);
& & & & & & cb2.Items.Add(&冰墙&);
& & & & & & cb2.Items.Add(&电磁脉冲&);
& & & & & & cb2.Items.Add(&幽灵漫步&);
& & & & & & cb2.Items.Add(&阳炎冲击&);
& & & & & & cb2.Items.Add(&灵动迅捷&);
& & & & & & sp.Children.Add(cb2);
& & & & & & main.Children.Add(sp);
& & & & private void Window_Loaded(object sender, RoutedEventArgs e)
& & & & & & //npWnd = FindWindow(&notepad&, null);//刚开始用记事本作为测试
& & & & & // &if (npWnd == IntPtr.Zero)
& & & & & &// {
& & & & & &// & & MessageBox.Show(&找不到窗口&);
& & & & & & // & &
& & & & & & //}
& & & & & // &childWnd = FindWindowEx(npWnd, IntPtr.Zero, &Edit&, null);
& & & & & & childWnd = FindWindow(null, &Warcraft III&);
& & & & & & if (childWnd == IntPtr.Zero)
& & & & & & {
& & & & & & & & MessageBox.Show(&魔兽3未启动,设置失败&);
& & & & & & & &
& & & & & & }
& & & & & & KeyboardHookProcedure = new HookProc(KeyboardHookProc);
& & & & & & & using (System.Diagnostics.Process curProcess = System.Diagnostics.Process.GetCurrentProcess())
& & & & & & & using (System.Diagnostics.ProcessModule curModule = curProcess.MainModule)
& & & & & & & & & hKeyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardHookProcedure, GetModuleHandle(curModule.ModuleName), 0);
& & & & //冰 Q & &雷W & & 火E
& & & & //急速冷却 (Y) &技能组合:QQQ+R & &ColdSnap &= 1
& & & & // 浑沌陨石 (D) & 技能组合:EEW+R & ChaosMeteor =2&
& & & & //超震声波 (B) & 技能组合:QWE+R & DefeaningBlast =3&
& & & & //强袭飓风 (X) & 技能组合:WWQ+R & &Tornado &=4&
& & & & //熔炉精灵 (F) &技能组合:EEQ+R & &ForgedSpirit &=5&
& & & & //冰墙 (G) &技能组合:QQE+R & & & &IceWall &=6&
& & & & //电磁脉冲 (C) & 技能组合:WWW+R & EMP &=7
& & & & //幽灵漫步 (V) & 技能组合:QQW+R & GhostWalk &=8
& & & & //阳炎冲击 (T) &技能组合:EEE+R & & SunStrike &=9
& & & & //灵动迅捷 (Z) &技能组合:WWE+R & Alacrity &= 0
& & & & Hashtable ht = new Hashtable();
& & & & //用户输入决定哪个键对应哪个技能,比如用户 &&急速冷却& &对应于 i键
& & & & //则令 &ColdSnap等于 ht[&急速冷却&] = i的虚拟码
& & & & //以下是默认值
& & & & int ColdSnap = '1';
& & & & int ChaosMeteor = '2';
& & & & int DefeaningBlast = '3';
& & & & int Tornado = '4';
& & & & int ForgedSpirit = '5';
& & & & int IceWall = '6';
& & & & int EMP = '7';
& & & & int GhostWalk = '8';
& & & & int SunStrike = '9';
& & & & int Alacrity = '0';
& & & & void RunAlacrity()
& & & & { //WWE+R & Z
& & & & & & Run('W', 'W', 'E', 'R', 'Z');
& & & & void RunSunStrike()
& & & & { //EEE+R &T
& & & & & & Run('E', 'E', 'E', 'R', 'T');
& & & & void RunGhostWalk()
& & & & { //QQW+R &V
& & & & & & Run('Q', 'Q', 'W', 'R', 'V');
& & & & void RunEMP()
& & & & { //WWW+R & C
& & & & & & Run('W', 'W', 'W', 'R', 'C');
& & & & void RunIceWall()
& & & & { //QQE+R &G
& & & & & & Run('Q', 'Q', 'E', 'R', 'G');
& & & & void RunForgedSpirit()
& & & & { //EEQ+R & F
& & & & & & Run('E', 'E', 'Q', 'R', 'F');
& & & & void RunTornado()
& & & & {//WWQ+R &X
& & & & & & Run('W', 'W', 'Q', 'R', 'X');
& & & & void RunDefeaningBlast()
& & & & { //QWE+R B
& & & & & & Run('Q', 'W', 'E', 'R', 'B');
& & & & void RunChaosMeteor()
& & & & {//EEW+R
& & & & & & Run('E','E','W','R','D'); & & & & &
& & & & void RunColdSnap()
& & & & & & SendMessage(childWnd, WM_KEYDOWN, 'Q', 0);
& & & & & & SendMessage(childWnd, WM_KEYUP, 'Q', 0);
& & & & & & SendMessage(childWnd, WM_KEYDOWN, 'Q', 0);
& & & & & & SendMessage(childWnd, WM_KEYUP, 'Q', 0);
& & & & & & SendMessage(childWnd, WM_KEYDOWN, 'Q', 0);
& & & & & & SendMessage(childWnd, WM_KEYUP, 'Q', 0);
& & & & & & SendMessage(childWnd, WM_KEYDOWN, 'R', 0);
& & & & & & SendMessage(childWnd, WM_KEYUP, 'R', 0);
& & & & & & Thread.Sleep(300);
& & & & & & SendMessage(childWnd, WM_KEYDOWN, 'Y', 0);
& & & & & & SendMessage(childWnd, WM_KEYUP, 'Y', 0);
& & & & & & /*
& & & & & & SendMessage(childWnd, WM_CHAR, 'Q', 0);
& & & & & & SendMessage(childWnd, WM_CHAR, 'Q', 0);
& & & & & & SendMessage(childWnd, WM_CHAR, 'Q', 0);
& & & & & & SendMessage(childWnd, WM_CHAR, 'R', 0);
& & & & & & SendMessage(childWnd, WM_CHAR, 'Y', 0);*/
& & & & void Run(int a, int b, int c, int d, int e)
& & & & & & SendMessage(childWnd, WM_KEYDOWN, a, 0);
& & & & & & SendMessage(childWnd, WM_KEYUP, a, 0);
& & & & & & SendMessage(childWnd, WM_KEYDOWN, b, 0);
& & & & & & SendMessage(childWnd, WM_KEYUP, b, 0);
& & & & & & SendMessage(childWnd, WM_KEYDOWN, c, 0);
& & & & & & SendMessage(childWnd, WM_KEYUP, c, 0);
& & & & & & SendMessage(childWnd, WM_KEYDOWN, d, 0);
& & & & & & SendMessage(childWnd, WM_KEYUP, d, 0);
& & & & & & Thread.Sleep(300);
& & & & & & SendMessage(childWnd, WM_KEYDOWN, e, 0);
& & & & & & SendMessage(childWnd, WM_KEYUP, e, 0);
& & & & private int KeyboardHookProc(int nCode, Int32 wParam, ref KeyboardHookStruct lParam)
& & & & & &// MessageBox.Show(&截获到消息&);
& & & & & &// if (wParam == WM_KEYDOWN)
& & & & &// & MessageBox.Show(lParam.vkCode.ToString());
& & & & & & //为何我这里验证-号的虚拟码是189呢,算了不用这个了
& & & & & & if (wParam == WM_KEYDOWN &&enable)//可以识别小a了
& & & & & & {
& & & & & & & & if (lParam.vkCode == ColdSnap)
& & & & & & & & {
& & & & & & & & & & RunColdSnap();
& & & & & & & & }
& & & & & & & & else if (lParam.vkCode == ChaosMeteor)
& & & & & & & & {
& & & & & & & & & & RunChaosMeteor();
& & & & & & & & }
& & & & & & & & else if (DefeaningBlast == lParam.vkCode)
& & & & & & & & & & RunDefeaningBlast();
& & & & & & & & else if (Tornado == lParam.vkCode)
& & & & & & & & & & RunTornado();
& & & & & & & & else if (ForgedSpirit == lParam.vkCode)
& & & & & & & & & & RunForgedSpirit();
& & & & & & & & else if (IceWall == lParam.vkCode)
& & & & & & & & & & RunIceWall();
& & & & & & & & else if (EMP == lParam.vkCode)
& & & & & & & & & & RunEMP();
& & & & & & & & else if (GhostWalk == lParam.vkCode)
& & & & & & & & & & RunGhostWalk();
& & & & & & & & else if (SunStrike == lParam.vkCode)
& & & & & & & & & & RunSunStrike();
& & & & & & & & else if (Alacrity == lParam.vkCode)
& & & & & & & & & & RunAlacrity();
& & & & & & & & else
& & & & & & & & & & return CallNextHookEx(hKeyboardHook, nCode, wParam, ref lParam);
& & & & & & & & return 1;
& & & & & & & & //根据返回值的范围决定是否继续传播
& & & & & & & & //以下方法是可行的
& & & & & & & & //返回1阻止消息继续传播
& & & & & & & & //返回0消息继续传播
& & & & & & }
& & & & & & //交给下一个钩子处理消息
& & & & & & return CallNextHookEx(hKeyboardHook, nCode, wParam,ref lParam);
& & & & & &&
& & & & private void Button_Click(object sender, RoutedEventArgs e)
& & & & & & childWnd = FindWindow(null, &Warcraft III&);
& & & & & & if (childWnd == IntPtr.Zero)
& & & & & & {
& & & & & & & & MessageBox.Show(&魔兽3未启动,设置失败&);
& & & & & & & &
& & & & & & }
& & & & & & ht.Clear();
& & & & & &foreach(StackPanel sp in main.Children)
& & & & & &{
& & & & & & & &ComboBox cbb = (ComboBox)sp.Children[1];
& & & & & & & &TextBox tbb = (TextBox)sp.Children[0];
& & & & & & & &if (null != cbb.SelectedItem && tbb.Text != null)
& & & & & & & &{
& & & & & & & & & // ht.Add(tbb.Text, (cbb.SelectedItem).ToString());
& & & & & & & & & &ht.Add((cbb.SelectedItem).ToString(), tbb.Text);
& & & & & & & & & // MessageBox.Show(tbb.Text + ((ComboBoxItem)cbb.SelectedItem).ToString());
& & & & & & & & & &//MessageBox.Show( (cbb.SelectedItem).ToString());
& & & & & & & &}
& & & & & &}
& & & & & &updateKeyValue();
& & & & bool enable =//因为是系统钩子,所以避免挂钩本程序的按键
& & & & private void Window_Deactivated(object sender, EventArgs e)
& & & & & & enable =//失去焦点时再起效
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:379864次
积分:5653
积分:5653
排名:第3344名
原创:159篇
评论:309条
(1)(1)(1)(1)(3)(3)(3)(8)(2)(5)(8)(8)(4)(2)(15)(11)(20)(12)(21)(13)(2)(2)(2)(1)(1)(1)(9)(2)}

我要回帖

更多关于 卡尔怎么切技能 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信