恶魔之血考古怎么能挖出装备把装备复制到对话框里

( Sun, 4 Nov 2007 03:47:00 +0800 )
Description: 第一组是老鼠和牛,老鼠代表智慧,牛代表勤奋。智慧和勤奋一定要紧紧结合在一起。如果光有智慧,不勤奋,那就变成小聪明:而光是勤奋,不动脑筋,那就变成愚蠢。这两者一定要结合。这是祖先对我们第一组的期望和要求,也是最重要的一组。 第二组是老虎和兔子。老虎代表勇猛,兔子代表谨慎。勇猛和谨慎一定要紧紧结合在一起才能作到胆大心细。如果勇猛离开了谨慎,就变成了鲁莽,而没了勇猛,就变成了胆怯。这一组也非常重要,所以,放在第二位置上。 第三组是龙和蛇,代表刚猛,蛇代表柔韧。所谓刚者易折,太刚了容易折断,但是,如果只有柔的一面就易失去主见,所以,刚柔并济是我们的祖训。 接下来是马和羊,马代表勇往直前,羊代表和顺。如果一个人只顾自己直奔目标,不顾及周围环境,必然会和周围不断磕碰,最后不见得能达到目标。但是,一个人光顾及和顺,他可能连方向都没有了。所以,勇往直前的秉性,一定要和和顺紧紧结合在一起,这是祖先对我们的第四组期望。 再接下来是猴子和鸡。猴子代表灵活,鸡定时打鸣,代表恒定。灵活和恒定一定要紧紧结合在一起。如果你光灵活,没有恒定,再好的政策也得不到收获。一方面具有稳定性,保持整体和谐和秩序,另一方面又能在变通中前进,这才是最根本的要旨。 最后是狗和猪。狗代表忠诚,猪代表随和。如果一个人太忠诚,不懂得随和,就会排斥他人。反过来,一个人太随和,没有忠诚,这个人就失去原则。无论是对一个民族的忠诚,还是对自己理想的忠诚,一定要与随和紧紧结合在一起,这样才容易保持内心深处的平衡。
( Sat, 25 Aug 2007 17:21:56 +0800 )
Description:
等咱中国强大了,全叫老外考中文***!文言文太简单,全用毛笔答题,这是便宜他们。惹急了一人一把刀一个龟壳,刻甲骨文!论文题目就叫:论三个代表!到了考听力的时候全用周杰伦的歌,《双截棍》听两遍,《菊花台》只能听一遍。告诉他们这是中国人说话最正常的语速!阅读理解全是政府工作报告,口试要求唱京剧,实验就考包粽子。考死他们。
( Tue, 7 Aug 2007 01:17:46 +0800 )
Description:
1.每次都是20-40分钟,碰上高手可以更久些 2.经常通宵,一晚上打10几局 3.看别人玩不如自己玩有意思,但是看高手对战也很有意思 4.开始时会聊上几句,后来就顾不上了 5.经验通过实战得来,技巧多半是看录像学来的 6.录像看多了会很烦 7.越久越有趣 8.新的打法总是很吸引人 9.变态的行为可以带来更多的乐趣 10.刚开始喜欢和新人玩,后来喜欢和有经验的人玩,任何时候都和 mm玩 11.有心得愿意贴出来,就像我现在做的 12、搞上了就跟你丫死掐! 13、第一次会特别紧张。。。。不知道如何下手 12,最常见的是1V1,偶尔2V2,3V3,或有达人可1V2,1V3出现 13,手指的灵活性都很重要 14,高潮阶段容易大声叫喊 15,一般是男的比较强~偶然能见到猛女~~ 16:随着年龄的增长,玩的次数越来越少 17:老了以后就玩不动了,有心无力
( Tue, 7 Aug 2007 01:00:56 +0800 )
Description:
让圣骑士放出黑暗的力量吧!!
圣骑转职死亡骑士任务
让我们堕落吧——圣骑士转职死亡骑士流程 这个任务只有人类圣骑士可以做,最低级别51,因为很多目标都是联盟的友好阵营,所以圣骑士要做好单打独斗的准备,但是在正式投入部落之前,有些任务还是可以做,而且还是属于联盟,圣骑士自己心里明白而已。 第一部分 寒冰之剑 摩根?拉迪莫尔的任务大部分人都做过,如果你是圣骑士的话,51级以后再次去他的墓碑旁边,调查墓碑,会触发另一个任务,也许你不能想到,或许仅仅因为这么一看,此后会发生难以想象的变化。
调查摩根?拉迪莫尔的墓碑,发现上面有一行字:他信仰圣光,却没有得到力量,没有力量就没有希望
接受任务:神秘的留言。
去乌鸦岭询问守墓人,得知确实有一个名字这个缩写的人在这里呆过一段时间,他叫做凯尔—舍德沃,但是现在已经不在,听说已经去了逆风小径。 接受任务:神秘的留言。 前往逆风小径,向南走,会到达一个充满了鬼魂的叫做卡拉赞的村庄,在一间屋子里,会遇到一个黑衣人。经过交谈得知,他并不是凯尔,他只是他的仆人,奉命在这里等候,凯尔说一定会有人来找他。 向他询问力量的话题,他会给你一本凯尔的笔记,里面的内容也许会让你感兴趣。 任务:察看笔记——然后和黑衣人谈话。 在笔记中,凯尔叙述了他的经历,他曾经跟随阿尔萨斯前往北方,当阿尔萨斯王子拿着霜之哀伤离开以后,他偷偷去存放剑的台子那里想看看究竟,没想到那个台子仍然是有魔力的...后来他回到艾泽拉斯以后,经常会梦到那个剑台,并且似乎有一个声音在说话,后来他也记录下来那个声音讲述的内容,似乎是重新制造霜之哀伤的方法...后来的笔记很凌乱,也许预示作者有些改变...但是在这些篇幅中,你仍然找到了那个“方法”:重新铸造寒冰之剑需要一块包含神圣和黑暗的金属用来做基础,一块冰霜之魄为它加入力量,一个平静的精华用来做祭品。 和黑衣人谈话之后,他啰嗦一堆以后,问你是否想要得到剑,选择是,他会告诉你他会协助你作出这个东西,现在可以接受三个任务。 1、神圣与黑暗交融的金属 这个任务很简单,这个金属就是维里甘之拳,如果这个东西已经被销毁,那么可以去血色修道院大检查官屋子的一个箱子里面找到。 2、冰霜之魄 杀死剃刀高地的寒冰之王亚门纳尔获得。 3、平静精华 去找夜色镇的指挥官阿尔泰娅—埃伯洛克,告诉她在城外发现亡灵的重要信息,让她跟随你走出镇外,然后和她交谈,希望它能给你守夜人指环,阿尔泰娅脸色突变,说这是守夜人力量的源泉,究竟是谁让你来要这个东西。 这时候黑衣人突然出现,袭击了阿尔泰娅,她会说你是叛徒,黑衣人告诉你现在决不能放过她,不然守夜人们赶来,就无法脱身了。 任务——杀掉阿尔泰娅—埃伯洛克——她会变成45精英,每一击都附带神圣伤害,但是并不难杀死,杀死她后,从他身上拾起守夜人指环,迅速离开夜色镇,如果不及时走,守夜人就会赶来。当走出暮色森林的时候,你会发现和暴风城的声望变成了仇恨,但是已经不能回头了。 黑衣人在卡拉赞的一个祭坛上,黑衣人依照笔记上的纪录,念出了咒语,平静指环破碎,寒冰之魄和维里甘之拳融合,最后形成了一把剑。
拿起剑,接受任务:霜之哀伤??
当你拿起这把剑的时候,丝毫感觉不到任何力量,黑衣人也很惊讶,似乎剑只有型,最后他让你亲自去找凯尔—舍德沃,去找寻这把剑背后的秘密。 一切远未完结.. 第二部分 黑暗力量 依照指示,你带着剑来到东瘟疫之地,去通往斯坦索姆的密道里,在第二个桥走下去,会发现一个老头在那里,但是已经成为了被遗忘者,他正是凯尔—舍德沃。
他说话并不像笔记上那样语无伦次,你慢慢就能问到更多的事情,他说那个声音还是在不断指示他,告诉她该怎么做..就这样他成为了被遗忘者的一员,现在它可以帮助你完成这把剑,但是首先,你要彻底放弃一切,先放弃圣骑士的身份.. ? 接受任务:证明忠诚——去圣光之愿祈愿堂,杀掉背叛的被遗忘者莱尼德-巴萨罗梅。
莱尼德-巴萨罗梅是银色黎明的一员,他曾经成为了被遗忘者,但是又回到银色黎明,他的解释是成为被遗忘者就能更深入地了解他们的秘密,将来总有一天会用得上。 这个人还是比较好杀的,60级非精英,等巡逻的三个骑士离开后,把他引到外面格杀,里面的 c一般不会看到。 杀死他后,切下他的手,找凯尔回复,同时,你和银色黎明的声望降至敌对。 接下来凯尔说,要想让霜之哀伤得到力量,必须有真正地悲伤和仇恨的力量来增强它,你必须去完成三个事情,让剑的力量得到增强。 1、吸取一个高贵的灵魂 2、吸取无边的绝望 3、吸取圣者的哭泣 第一个任务需要先到斯坦索姆深处,在水晶塔的守护者们身上有可能掉落瘟疫之水。然后去壁炉谷,当有人做完带领泰兰-弗丁走出血色堡垒的一系列剧情发生后,去将瘟疫之水浇到泰兰身上,然后泰兰会变成僵尸复活,带领他去找提里奥-弗丁。
提里奥毕竟太惊喜儿子能归来,当他发现的时候,虽然立刻击碎了僵尸,但是已经感染了致命的瘟疫,接下来就是要杀掉他。 提里奥-弗丁,61精英,但是因为中毒,实力大减,慢慢和他缠斗吧,没有任何阵营的玩家可以帮助你,注意当他生命到30%的时候,突然会得到圣光的祝福,战斗力倍增,这时候不要和他正面交手,你会死的很惨,尽量拖延时间把,他的生命会自动减少,当坚持足够长时间后,老弗丁终于倒下了,拿出剑来使用,吸取高贵的灵魂。
同时,你会无法使用召唤战马的能力,直到你彻底放弃这个任务。
第二个任务很简单,当有人做达隆郡的战斗的时候,去和小帕米拉谈话,带他去广场上,他还在说他爸爸很快就回来...要让她亲眼看到雷帕斯队长变成魔鬼,杀死了战友和村民,这时候帕米拉开始哭泣,她一直哭,灵魂变得越来越暗淡,拿出剑来,吸收无边的绝望。 这个任务完成后,你会无法使用圣疗和神圣干涉。
第三个任务需要先去西瘟疫的血色伐木场,在角落找到一个叫做雷汀-索尔的十字军,和他谈谈,他会说他为被遗忘者服务,会帮助你。
跟随他前往乌瑟尔之墓,在那里你和他要联合杀死看守墓碑的高级牧师塞尔丹尼斯。 高级牧师塞尔丹尼斯,62非精英,没有特殊能力。 意外的是,刚开战的时候,你就被雷汀攻击了,他大笑说他永远忠于白银之手,然后和牧师一起夹攻你。 用上一切你的手段把,雷汀是55级,但是防御非常高,加上牧师的治疗...所以先杀死牧师吧。 杀了他们以后,从牧师身体上拿塞尔丹尼斯的血,把它洒落在乌瑟尔的墓碑上,然后砍下雷汀的头颅,放在雕像下边。任务完成后,你失去了圣盾和圣佑术,你无法回头了。
回到凯尔身边,他会说他要最后调整一下这把剑,当你把剑给他的时候,发现他眼睛里闪动了一下狡诈的笑...随后他现了真身——就是在逆风小径的那个黑衣人,他说凯尔早就发疯然后被他杀死了,嘲笑你是个傻瓜,一切都为他服务,现在霜之哀伤在他手里了,你也逃不掉了。 然后他就向你进攻,别怕,你会发现他真是个废物... 击倒他后,他满眼充满了不信,喃喃说到...为什么...还没有力量... 临死前,他告诉你,这把剑不知道什么时候已经被白银之手圣骑士的力量封锁,所以他才会败,但是你也活不久了,你犯下滔天的罪行,白银之手圣骑士已经到了... 第三部分 白银之手的愤怒 现在,你会发现,你已经成了部落的一员了,你不用再单干了,现在要做的,是立刻找上所有帮手,需要25人以上,一切准备妥当,然后去捡地上的剑... 接受任务:白银之手 从密道出来,是一个废弃的村庄,在这里等片刻,就会看到远处有五个骑士从不同的方向,会合而来,他们的马高昂而挺立,他们的盔甲如壁垒般坚固,他们的长***在夜色下闪闪发光,他们正是幸存白银之手圣骑士——现在他们还是不能被攻击的——很快,他们走进了村庄,闪耀的圣光照亮了大地,周围亮如白昼,亡灵怪物在光芒中血肉飞溅、粉身碎骨。 当五个圣骑士缓缓到你面前的时候,和他们进行一段很长的对话,总之意思他们受到乌瑟尔的感召,从各个地方前来,目的就是让你——你这个罪不容诛的邪恶者受到应有的审判,对话结束,大战就开始了。 他们可比一般的圣骑士强得多,魔法的冷却时间也未知,会AE,会攻击魔法,还会各种审判,还有光环...但是总的来说,他们杀伤力不是很强,但是战斗会很艰难。 这五个人最大的特点是,当他们任何一个人战死,立刻会有一个对尸体使用复活术,30秒后死者会以满生命复活....如果只对一个打,你会发现它们永远杀不死...正确的方法是:五个小队分别和五个骑士战斗,但是不要杀死,把他们的生命一起控制在垂死的程度(5%以下),然后同时突击,在30秒内让五个人全部倒下,这样没人可以发动复活,强大的白银之手圣骑士就被击败了。 战斗胜利后,霜之哀伤的封锁解除,它发出邪恶的光芒,在黑暗中,黑色的战马一跃而出,你骑上战马,高举起剑,死亡骑士就是你。 死亡骑士和其他职业有所不同,他始终是骑在马上的,战斗技能和天赋也包括马的一部分,霜之哀伤永久固定在远程位置,需要特殊的技能才会发动。死亡骑士的战斗定位在突击,依靠战马,他能迅速踏入敌人的队伍,在短时间内重创敌人然后撤退,但是他的很多技能需要前一步的特定技能,比如突击,连斩都要在跳跃或者冲锋后才能使用,而战斗系终极技能死亡之剑——有一定几率直接杀死对手——必须在一个特定的动作后才能使用,总之,如果原地不动的战斗,你会发现死亡骑士比圣骑士还要弱。
死亡骑士的第二个分支是黑暗系,以削弱敌人为主,包括著名的死亡缠绕,吸血,缓攻等等,天赋主要是加强魔法和魔法效果。死亡骑士可以使用死者复生,但是被复活者会陷入一种特殊的对战斗有影响的状态。还有一种黑暗移动的技能,可以让死亡骑士完全脱离战斗,是进入另一空间和盗贼的消失也不同,但是也十分容易失败。终极技能是一种让敌人在一定时间后死亡的诅咒。 死亡骑士还可以选择精通指挥,他们能使用和圣骑士相反的光环,比如持续伤害、降低抗性、降低速度甚至产生恐惧的效果。同时,通过加强这一系,死亡骑士可以召唤出骷髅甚至是忠诚的黑色卫士和他一同作战。
( Tue, 7 Aug 2007 00:59:43 +0800 )
Description: 又是一夜艰苦的熬战,当黎明的第一屡阳光射进联盟最后的阵地时,让经过激战后本以惨烈不堪的堡垒又涂上了一层血腥的颜色。在这最后的阵地中,每个战士的眼中都如鲜血一般殷红,不知是因为几日的疲惫,还是为了曾经一同奋战的战友,亦或只是被这黎明的光线染红。此刻,没有人说话,四周静悄悄的。只听见远处的枝头有几只鸟儿在欢快的叫着,田间的小虫也在吱吱个不停,仿佛歌唱这美好的清晨。是啊,这近在咫尺的战争与它们并无任何关系。一个猎人慢慢闭上了眼睛,静静的聆听着周围这本来熟悉的声音,仿佛又回到了几年前的峡谷。 一个平静而祥和的早晨,猎人拿起弓箭,带着自己心爱的猎豹走出了家门。猎人与村民们亲切的打着招呼,有的人拿着鱼网去河里打鱼,有的扛起锄头下地耕种,而妇女们也都忙碌起来,烧火做饭洗衣纺织。猎人走到村口与几个朋友会合,一起去山里打猎。走在半山腰,猎人不住回头望着村庄,一排排的房子升起袅袅炊烟,远处的稻田绿幽幽的一片连着一片,隐约还能看到一群孩子们在村中打闹嬉戏。看着看着,猎人笑了,发自内心的笑了,那么的满足,那么的幸福。是啊,这是他生长的地方,是他的故乡,几百年来这里的人们就是这样平静而幸福的生活着,如果可以,真的想一辈子这样幸福的活下去。可是,猎人没有想到的是,这美好景象在片刻之后只能永远的留在他的记忆里。 突然,远远的一声尖利的号鸣划破了峡谷的宁静,轰鸣的战鼓震得人心神不安,哒哒的铁蹄仿佛要将这大地踏裂。在峡谷的入口,涌进黑压压的一群怪物,青面獠牙,身材高大,手持长矛巨斧向村子杀来。手无寸铁的村民们面对这凶残的兽人只有任其宰割。刹那间,村中火光四起,尸横遍野,吼叫声、嘶喊声,哭喊声充斥在这峡谷中,阵阵回荡,刺人心魄。片刻之间,美丽而宁静的峡谷仿佛成了人间地狱,其状残不忍睹。在山上的猎人见此情景,发了疯一样的和同伴一起奔向村子,一路狂奔一路射箭,仿佛已将仇恨融入这利箭之中,狠狠的插进兽人的胸膛。无奈,经历了几百年的和平与平静的村民们如何能抵挡兽人的进攻,在凶残的兽人面前,人类的抵抗简直不堪一击,峡谷沦陷了。拼了命逃出来的村民们躲进了山里,猎人也在射完最后一支箭之后在昏迷中被心爱的猎豹驮着逃了出来,在那时猎人真想就此和那些可恶的兽人们同归于尽。当猎人醒来的时候,已经身在深山中,身边只有猎豹忠诚的守护在他身边。全身的伤口已经让他不能动弹,看着天上一轮明月,正照着远处已经残破不堪的村子,猎人狠狠的咬紧牙关,手指用力的抓着泥土,直到嘴角流出鲜血,指甲掀起,他都全然不知,心中只有一个念头:“我要夺回我们的家园!” 躺了两天之后,猎人拼尽全力的一步步挪动着身体,向峡谷外走去,向着暴风城的方向……最后,伤势过重的猎人还是昏了过去,重重的倒在这片他生长的故乡的泥土里,在倒下去的时候,他只有一个念头:我不能死,我要夺回我们的家园!在暴风城的士兵发现猎人并救回他的时候,已经是7天之后,牧师也说这是个奇迹,如果不是有惊人的求生欲望,猎人是无论如何活不过来的。当猎人终于醒过来的时候,他看见的并不只有他心爱的猎豹,还有很多他熟悉的面孔——村子的村民,他的朋友们。见他醒来,人们都很高兴,纷纷问他如何逃出来等等,大家都说着自己的遭遇,片刻之后,人们又突然安静下来,谁也再不忍提起半个月前的那场惨剧。 在静养了几日之后,暴风城的国王召见了猎人及村民们。原来,兽人的这次进攻早有预谋,巨魔、兽人、牛头与亡灵们暗中结成了部落战线,为了扩张领土,不惜大肆杀掠。在这危急的时刻,人类的领袖暴风城城主向爱好和平的人们发出呼吁,要人们团结起来,来共同抵抗兽人们的疯狂进攻。于是,由人类、矮人、侏儒和暗夜精灵组成的抵抗侵略的联盟战线建立起来。暴风城国王对村民们说:“我知道,大家都在兽人的进攻下失去了家园。你们可以选择:加入军队战斗来抵抗兽人,也可以……”“我要战斗,要驱除兽人,还我家园!”没等国王说完,猎人已经斩钉截铁的说。片刻的安静之后,村民们不约而同的说:“驱除兽人,还我家园!驱除兽人,还我家园……”这喊声感染了在场的每一个人,士兵们都跟着村民纷纷举起右臂挥向天空,跟着高声喊道:“驱除兽人,还我家园……”这声音在暴风城的上空回荡盘旋,飞向这块爱好和平的大陆上的每个角落。 几声低低抽泣将猎人拉回了现实。只见,在他身边,一个看起来还不满18岁的小战士用手捂着脸,显然是想止住在此刻看来似乎有些不合适宜的哭泣,但越是如此反而越是难以抑制,慢慢的这抽泣变成了嚎啕大哭。这时,一个老法师走了过来,用手轻轻的抚摩小战士的头发,平静的问:“小战士,你为什么哭啊?”小战士见有人问他,转过头看着老法师,没有说话反而先用手指着远出,那是一所已经被烧毁的普通的不能再普通的民房,但此刻在小战士眼里,那仿佛成了他伤心的根源。接着他说;“我想我妈妈了,那所房子就是我原来的家,妈妈在那次兽人进攻的时候被兽人杀死了,我是被一个叔叔救出来,才活了下来,可妈妈却不在了……”小战士继续喃喃的说,但之后却又变成了抽泣,没人能再听懂他之后说了什么,但他的话却象针一样深深的刺着在场的每一个人的心。老法师也红了眼眶,叹了口气:“是啊,你这个年纪本应该坐在村口的学堂听我讲课的,可现在……哎!”这时,一个年轻的女牧师,用颤抖的声音唱起了家乡的情歌:“月儿弯,山儿青;盼人儿,人不归……”慢慢的,所有的人都跟着唱了起来——这本不应该在战场上出现的家乡的情歌。 在这歌声中,猎人站了起来,一把擦干了流在脸上的泪滴:“乡亲们,我们本不应该手拿着武器在这战场之上。那个孩子,还不满18岁,本应该在课堂上读书,现在却要抗起***在战场撕杀。那个姑娘,本是人生最美的如花一样的年纪,本应和心爱的人花前月下,如今却要面对自己的兄弟姐妹被敌人砍伤的创口。那么我们为什么会在这里,因为可恶的兽人摧毁了我们的家园,烧毁了我们学堂,夺去了我们的亲人、我们的爱人,如果我们不起来反抗,就要一辈子被奴役,象狗一样的活着。所以,我们拿起了刀,抗起了***,就是为了我们的子孙后代不再象我们一样,他们会有学可以上,会和心爱的人相依相偎,花前月下,不再象我们一样,所以,我们要战斗,为了我们子孙也为了我们热爱的失去的家园!我们要战斗!”“对,我们要战斗,把可恶的兽人打回他们的老家!”人们纷纷的喊道。那个年轻的女牧师仿佛不能停止对爱人的思念,又唱起了那首家乡的情歌:“月儿弯,山儿青;盼人儿,人不归……”战士们都一起唱了起来,在这委婉的“战歌”中,冲出阵地,杀向兽人……这是一场惨烈的战争,猎人和他的战友们最后不但保住了联盟最后的阵地,还拿回了峡谷中被兽人夺去的家园。但不幸何夜无月,何处无竹柏,但少闲人如吾两人耳 联系QQ:466050849 白開氺不好喝 Ьμτ很解渴
( Sat, 25 Apr 2009 22:17:04 +0800 )
Description:
Ru ing tencent qq 2008 in Ubuntu 9.04
A、准备好所要的软件
1. wine最新 中文版的下载和***
在这里选择你要下载的版本 deb包下载直接 运行***
2. 下载 Flash.ocx (flash10 for windows的插件)、修改中文的注册表、汉化文件 gdi32.dll.so (附件有)
3. 下载官方QQ2008正式版
4. 准备宋体字体 在 XP系统里可以搜索 到 simsun.ttc
B、开始***
直接***wine最新版
复制 simsun.ttc到 /home/你的用户名/.wine/drive_c/windows/Fonts
导入注册表
导入命令:在终端
regedit zh.reg
直接运行***QQ2008正式版
***期间选择 自定义环境 登陆前不查杀 不要***任何附带的软件
将威牙QQ精简工具放出QQ的***目录 一般为(/home/你的用户名/.wine/drive_c/Program Files/Tencent/QQ)
运行精简 除了 QQ会员中心 自定义面板 TXM平台 远程连接 文件传输 网络硬盘 不选外其它全选上! 然后一直下步精简QQ2008
添加DLL,复制mfc42.dll,msvcp60.dll,riched20.dll,riched32.dll 到 /home/你的用户名/.wine/drive_c/windows/system32。其他的不要动。
以上文件可以在真实的WINDOWS XP(C:\WINDOWS\systenm32)里找到。 其实1.15以后自带已经有了!有可能不用再加了!不过再加替换一次也无所谓
导入文件 gdi32.dll.so
sudo cp gdi32.dll.so /usr/lib/wine/
打开wine的设置界面
在应用程序 页 点击 增加应用程序设置 一直选择.wine\drive_cProgram Files\Tencent\QQ\QQ.EXE
选择windows 版为 windows XP
然后然后选中刚刚添加“QQ.EXE” 再点向 “函数库”页!注意此时wine设置的窗口标题应该为 “wine于QQ.EXE的设置“
在“新增函数库顶替”的下拉单里分别输入mfc42.dll,msvcp60.dll,riched20.dll,riched32.dll 加入并编辑 为原装(windows)如图1
注销或重启一次系统!
此时可以登陆QQ 并应该为全中文了! 但打开好友对话框会提示QQ flash版本过低此时可以为wine增加一个windows的flash插件可以用以下命令
复制文件
sudo cp Flash.ocx /home/你的用户名/.wine/drive_c/windows/system32/Macromed/Flash
注册文件
env WINEPREFIX=”/home/你的用户名/.wine” wine regsvr32 “C:\windows\system32\Macromed\Flash\Flash.ocx”
此时再重新打开看看QQ好友对话框!不再提示flash过低了!
好了此时应该可以很稳定的运行QQ了!
( Sat, 25 Apr 2009 20:38:08 +0800 )
Description:
1.准备图标文件。可以从网上下载,也可以自己设计制作,保存为.ICO格式,例如abc.ico;
2.建立一个名为“Autorun.inf”的文件。
步骤是:先新建一个文本文档,在文本文档中输入以下命令:
autorun
ICON=abc.ico 其中,“autorun” 表示让光驱成功读盘后自动打开光盘;“ICON=abc.ico” 表示文件名为“abc.ico”的图标文件为驱动器的图标。然后将新建文本文档以“Autorun.inf”为文件名保存。注意:后缀名为.inf,修改属性前电脑设置为能够显示所有文件。
3.将上面两个文件复制到光盘的根目录下,完成刻录即可实现自动打开光盘和更改驱动器图标和的功能。
( Tue, 21 Apr 2009 07:06:27 +0800 )
Description:
嘴里说着天长地久,描述着未来多么美好
身体紧紧相拥,恨不得融入彼此,体味对彼此身上淡淡的味道,多么温暖 ( Wed, 27 Aug 2008 13:09:17 +0800 )
Description:
下面,就是关于这个“非常牛B非常娴熟的职业玩家”的爱情故事:
  大一的生活,本来应该是阳光的,青春的,充满朝气的!门外呼呼的寒风否定了我的说法。
  玩魔兽是被室友所害,她男朋友在游戏里无从顾及到她,于是我就被拖下了水。
  你能指望一个每天混迹于卡丁车和劲舞的人不晕魔兽?是的,我晕了,在耐心的带着我这拖油瓶两天以后,室友泪奔而去,把12级的我孤零零的丢在了西部,还好他为了满足自己的私欲,让我选择了牧师,这个后来我才明白吃香的职业让我在17的时候顺利的完成了西部荒野之旅,除了死亡矿井,我就正式告别了西部。
  在死了无数次以后,被无数人唾弃,到最后别人宁可没牧师也不要我的时候,我泪奔着要逃离西部,告别魔兽,这时候,一个小术士在综合里大叫死亡开组,随便来人。
  这随便?好啊!
  一进队伍,马上有了逃跑的心,3个牧师,1个战士,1个术士,根据无数次被骂和无数次室友的循循善诱,我再笨也知道,这个队伍里我得到装备的机会只有20%,战士苍天哥的等级给了我一剂强心针,五十四。
  看看任务奖励里蓝光闪闪的法杖,想到自己在西部恶名昭著,掩面的跟上了死亡讨伐军的队伍。
  苍天开始的一句话,让作为牧师的我很伤自尊。
  “你们聊天和拿东西就好了,别给我加血。”
  作为牧师我能看着队友掉血而不理会么?我不能。所以结果很明显,在他引了许多怪以后,我给他是了一个盾,于是乎,死亡理所当然的降临于我。
  “我一次只能打4个,其他的没打到前,你们为我加血或者是其他有益魔法,会吸引仇恨,怪物就会打你们。”
  金玉凉言啊,你如果早说我就是看你死我也不会加给你。
  这句话,断送了一个牧师救死扶伤的心,为我们服多出一个暗牧做了铺垫。
  眼红的看着术士小子拿走了那件蓝色的衣服,伴随一道道蓝光,队友们都回去了,我也领到了梦寐以求的蓝棒子,伟大的室友已经30了,熟练的指点我来到了湖畔镇。
  时隔一天,才上线的我眼前有一块熟悉的肉团子,仔细一看,是昨天的那小肉球术士,机灵的打量一下周围,那个战士也在,噢耶,这里的任务有着落了。
  悄悄对肉球说:嗨,记得吗,昨天一起下死亡的,做任务吗?做到哪了?
  肉球悄悄对你说:嗯,才来,还没接。
  悄悄对肉球说:那一起做吧,我可以给你加血。
  肉球悄悄对你说:你问我哥。
  原来是带幼儿园小弟弟的。
  悄悄对苍天哥说:哥哥,带做一下任务吧,你弟弟同意了。
  苍天哥悄悄对你说:别叫,恶心。
  还没等我气得要骂人,组队要求欣然的出现在了屏幕上,在经验和脾气面前,我向经验屈服了。
  一路无话的一夜,在快昏睡过去的时候,任务终于做完了。
  悄悄对苍天哥说:向我道歉!
  苍天哥悄悄对你说:天气不错。
  悄悄对苍天哥说:向我道歉!!!
  苍天哥悄悄对你说:挺风和日丽的。
  悄悄对苍天哥说:向我道歉!!!!!!
  苍天哥悄悄对你说:兄弟,我什么地方得罪你了-。-。
  悄悄对苍天哥说:猪才和你是兄弟!我是女的!
  苍天哥悄悄对你说:恩,他们都叫我仓鼠或者天猪,所以我兄弟也都是猪,没错,噢,我也是女的-。-
  悄悄对苍天哥说:有你的!你记得!
  苍天哥悄悄对你说:我已经忘了-。-。
  夜晚,室友给我上了一课,这游戏同一阵营的人不能暗杀,若想报仇,请练部落。参考了部落环保的造型,我把仇恨的种子长埋于心。
  就这样,认识了苍天,慢慢的,游戏开始有了依托,他教会了我很多游戏的常识,比如自己不能穿的不能丢骰子,加血的时机,鼠标的操作,大幅度提高的水平让我在室友面前很有脸面。
  关于我是不是女性的问题,被他搞得我也很糊涂,终于,在一天实在受不了他每天兄弟相称,肉麻的在综合频道和各个人妖大哥打情骂窍,然后看到经常混迹他身边的我也被冠以“人妖救星”的拯救对象的恶名,要到了他的QQ,一个视频以后,那小子骑着马冲到了奥格瑞玛.....
  说实在的,那天我很受打击,晚上,我做了个草人,写上他的名字,拿钉子狠狠的扎,没说你丑你说我丑......
  他告诉我:“我以前在奥格瑞玛的时候看了个兽人和你很像,我去问了,他说是你哥。”
  和他一起的时候,我有时候会忘记自己的牧师叫丝小小,关于我的新名字,凭他的爱好,可以衍生出很多关于地名和动物的联系,因为室友告诉我附魔和采药是牧师的生财至胜之道,于是每天我的信箱都是满满的,他寄来的东西,从来没有断过。
  人,绝对没有完人!!
  对不起,请原谅我的激动....
  你能忍受一个黝黑的男人穿上一件婚纱在你面前跳舞么?谢谢你的清洁袋,我已经吐习惯了。
  苍天是这样的人,绝对是,就跟他说自己是贱人一样,绝对是的。
  他告诉我他很喜欢地精科学,把锻造删了以后学地精工程就是为了那些炸弹。
  嗯,你要真相信他的鬼话,你也买个豆腐撞死吧。
  你永远无法体会什么是鬼附身,就跟你无法体会你练级的时候,有个男人人带着潜水头盔穿着婚纱伴随你左右,时不时掏出一把黑黑的猪头锤子,高喊着:“别逼我,我什么都做得出来!!!”冲向那些毫无恶意而且被恶心到虚弱复活的部落同胞是什么感受。他应该叫托塞德林荆棘谷的噩梦,联盟和部落人人得而诛之。
  以后,你要是看到一个带着地精火箭头,穿白色婚纱的人在荆棘谷出现,你要注意以下几点:
  1:如果你40级以下,请你做好送死的准备。
  2:如果你40级以上,又分两种情况,有马,你可以选择上马就跑,他永远追不上你,没马,你大可放手一博,我们苍天猪的口号是,只杀40以下的,40以上的反抗就跑........
  关于他的舞蹈演出,会不时在铁炉堡上演。如有慕名参观,请把门票邮寄给我,谢谢。
  前天
  他第一次主动的悄悄的叫了我
  苍天哥悄悄对你说:小小,陪我去散步。
  悄悄对苍天哥说:舍得叫我名字了?
  苍天哥悄悄对你说:什么地方风景好?
  悄悄对苍天哥说:你说吧。
  苍天哥悄悄对你说:跟我来。
  翻山越岭的,我们来到了牛牛的出生点,今天,他给我的感觉很奇怪。
  在一个水塘旁边,他烧起了一堆火,然后坐下,脱掉了一身戎装,穿上了一套他所谓的休闲服。
  我们聊了许多,他的家庭,工作,生意,以前的女朋友。
  “生意失败了,可以重新来过,工作没有了可以重新找。”
  “谈何容易,呵呵”
  “我想暂时离开一段时间,安心的把工作做好。”
  很长时间,他都不说话,和他一起,也习惯了。
  “没有你在,游戏没有意思。”
  “我不喜欢跟室友一样,把游戏当成生活,每天和你一起看你臭屁也很有趣。”
  “你是把我当成她的影子?”
  很不愿意的问出来,我很讨厌别人把我作为比较或代替,很明显,他楞了,他的打字速度不应该有这样的延迟。
  “不是影子,我只想找个人照顾,不是你,换成别人,也是一样。”
  “你很会照顾人,我也喜欢你。”
  冷场了很久,我说出了2个多月的心声,在他的照顾下,作为牧师的我已经忘记了组队,按照室友的话,离开了他,连基本的副本技巧都不会。
  很久,在开着暖气的寝室,依然感觉手脚很冷。
  “你喜欢的只是游戏里的苍天,那个在你眼里也许无所不能的战士,离开游戏,我只是一个一无所有的人。”
  又是很长时间的无话可说。
  “相信自己吧,你能重新振作。”
  说完,下了线,自己第一次的喜欢上一个人。
  QQ上来了他的消息,他的游戏帐号和密码发了过来。
  上了他的号,打开包裹,以前一直以为他在哭穷,号上的一个金币多点的小钱,那个到处借钱修装备的人的影子又浮现了出来,而那么长时间他给我的东西,已经让我买到了可以跑很快的豹子,打开仓库,满仓库的杂物,他一直保存着,以前他说过,这些记载了他这号成长的经历,舍不得丢掉。
  红着眼睛下了他的号,换到自己的小牧师,删掉了附魔,学习了裁缝,他喜欢兰色,我喜欢绿色,做了一件绿色的衬衣,邮寄了给他。
  苍天猪悄悄对你说:衣服很好看。
  苍天猪悄悄对你说:衣服很好看。
  苍天猪悄悄对你说:衣服很好看。
  悄悄对苍天猪说:你去死吧。
  苍天猪悄悄对你说:我去了。
  悄悄对苍天猪说:最好马上去。
  半天没有他的消息,打开好友,他在又出现在了死亡。
  悄悄对苍天猪说:怎么还没死!
  苍天猪悄悄对你说:正在努力呢,在死亡送死。
  悄悄对苍天猪说:在那做什么
  苍天猪悄悄对你说:给猪打装备练附魔。
  悄悄对苍天猪说:我觉得,做裁缝很好,不练了!
  猪,你不能只穿一件衬衣过一辈子的。
  猪,我们在一个城市,你答应过我,圣诞节请我吃韩国烧烤,我等你发工资。
  猪,在槲寄生下接吻,意喻着两人对这段感情的承诺,还有对未来的祝福,别赖皮!
  PS:苍天哥54级+的时候身上只有1G多,60级时HP只有可怜的4599点.我不禁在想,游戏对于他乐趣究竟在哪儿?此刻脑海中回荡着苍天哥在PVP中的呐喊,对目标的执卓,对胜利的喜悦.在众人的追捧唾骂以及更多挖苦讽刺之下,苍天哥成功的在众人面前塑造了一个"疯子"的形象.但冷静下来思考,他追求的只是纯粹的快乐,体验的是最简单的朋友间的交流,没有对装备的贪婪,没有对游戏的沉迷......此刻苍天哥仿佛像是躲在清晨的迷雾后面一般...我想....拨开迷雾后那里将会是另外一个世界.
  据说苍天哥的号已经解封了,原因未明!
  天猪终于答应了见面,搞得我一阵紧张,拉着室友走出学校,搞了一通头发,对着镜子花痴的摆了很多造型,然而,梦里的一切和现实存在着差距,很大的差距!!!
  按照有经验的室友吩咐,让男人等你是天经地义的事情,所以,我故意迟到了10分钟。
  今天不是个约会的好日子,街上寒风咧咧的,诺大的太平洋电影院门口就没一个可以用“最帅的胖子”来形容的人。
  不会是自己迟到他就不等了吧?真没肚量,在徘徊几圈都没发现熟悉的脸以后,一股要把室友和他都杀之为快的冲动在心里油然而生。
  “嘿!”
  回过头.....苍天啊,大地啊!神仙姐姐!!我一下午的忙活为什么啊!!!
  差不多180的个头,米黄的甲克,从乱糟糟的头发一眼看出了,他是天猪,嗯,我知道,头发卷不是你的错,你就头发稍微输理一下再出门,就不能把胡子刮了??
  “嘿!”
  “嘿你个头!几点了?”
  残酷的声音把我拉回了现实,残忍的现实击碎了我一下午憧憬的第一次见面。
  “车路上爆胎了,修理好了才上的路,莫法啊”
  “狡辩!我等了你快一个小时了!”
  说谎的时候,良心没有一丝的不安。
  “哟!电影开始了,快。”
  说完,自顾自的就骑着迟到的罪魁去了停车点。
  一个完美的转移,让我一招落空,狡猾,和游戏里一样狡猾!
  “电影很好看。”
  别人说好看,一定就好看了。
  除了刘德华叫革离,死了很多人,水淹死了女主角,整个片子让人昏昏欲睡。
  叫他去看黄金甲,他嫌贵,奶奶的,反正买票的还是姑奶奶我自己,他买来的两盒鸡米花还不是被他自己消灭了一盒半。
  亏,今天真亏,这是我内心最真的想法,安抚着减肥的钱包,这该死的混蛋居然提出由我请客吃KFC!!
  路过的叔叔阿姨哥哥妹妹们,你们回头看看啊,有那么无耻的人!诚然你现在没发工资,诚然今天是我提议出来的,可是你居然就带20元出门,我也是个穷苦的大学寄生虫!!
  KFC的欢乐全家桶,杏子,谢谢你送我的***优惠卷,我一直认为全家桶这一张它会活得好好的,今天它牺牲了。
  他告诉我他是吃了晚饭出来的,我不会相信,两个鸡大胸,两个翅膀,祭奠了他的五脏庙,他含诞不舍的看着我手上吃剩的半个鸡腿,用很真诚的眼神告诉我,他家的小狗也很喜欢吃........
  你去死吧!!
  今天我很开心...
  他很健谈,很幽默,总有很多话说不完,虽然很多很正经的话题,在他嘴里一定会变味,游戏如此,生活中也一般。
  死亡矿井原来居住着一群被拖欠了工钱的农民工,嗯,农民工工资不能拖欠啊。
  矮子副本里原来发生过核爆炸,里面住着一群高度近视的科学家。
  他的胖是因为吃得不好,生活没有规律。
  “爷后多看看任务说明,泥灰发现很多有趣的感人的故事。”
  啃着鸡腿的他转过一张油嘴含糊不清的说道。
  大哥,说真的,你现在的样子就很感人,真的....
  他的手很大,手套也很大,戴在手上暖洋洋的,当然,如果不是他骑车的时候生拉活扯的把它从我手上拽走,我想一定更温暖!!
  在路边,他会一直走在我左边。
  记得看过一部什么来着,男主角就是爱这样保护女主角,然后终于实现了被车撞死的愿望,我也故意靠边,也算把他拯救一下吧,感谢人行道^^v
  想到游戏里,他经常被贼打晕然后看着我被杀的无奈,幻想着有一天如果真的我被车撞了会怎么样...
  大学生都是灰姑娘,11点前就必须离开.
  “你果然是‘胖子里最帅的’!!”
  离别进攻。
  “嗯,奥城有亲戚的人也名不虚传。”
  被抵抗了..
  “你就不会说人话。”
  人身攻击!!
  “和你一样爱撒谎。”
  算你识相。
  宿舍的灯开始面积性的被下了黑手。
  “月黑风高啊”
  看着阴暗的四周,我有不详的预感。看着逐渐接近的恶人,
  背后的墙壁提醒我已经退无可退。
  “我有三个字想告诉你....”
  别,太早了,我没心理准备啊。
  看着他忸怩的样子,我有种得胜的感觉。
  他没让我失望。
  真的没让我失望!!
  我的心声他听到了。
  “早点睡。”
  目送,还有诚挚的希望。
  希望你的破车半夜再爆一次胎。
  周五之战,我不会再败!
  postscript:谢谢那些祝福的朋友,其实矫情也好,做作也罢,只要你有一颗乐观的心,生活到处很美好。
  postscript II:引用天猪的一段话来做结局:感谢七区,感谢让我做了联盟,他锻炼了我忍耐和不放弃的精神。
  postscript III:写在这里,不是为了炫耀,只是把开心记录,想很多人一起分享,我家天猪也不会看到这里,他也不会知道^^v,希望有恶毒语言的你,也能如神仙一样开心 来源: 作者: 丝小小
( Mon, 25 Aug 2008 02:11:48 +0800 )
Description:
( Thu, 21 Aug 2008 13:05:21 +0800 )
Description:
原本以为俗话说的对,真心的付出了就能得到回报。。。
事实证明那句话是错的。。。起码在爱情上,它是错的。
换个角度也许我得到了?
——得到了伤心,孤独,自嘲?
对,还得到了心得死寂。。。 决定放荡一次。。。去摘朵野花,去沾沾草。以此祭奠这场惨烈的战役。。
( Sat, 31 May 2008 17:55:08 +0800 )
Description:
这次真的分手了,晏。
我很爱你,很爱,很爱。。。我把你当作我的家人一样看待。
一直担心你被人欺负,拼命的保护你,尽我的全力。。。可到头来,我这个自认为爱你,发誓要保护你的人却是伤你最深的人。
我不怪你,不恨你。一切都是我的错,我是太大男子主义,都是我不好。你的错觉是我不该放的错。
你说的对,我们再也回不去了,回不去从前那个你我。。
心好难过。。。我好怕,好怕寂寞QQ:78071117 大学,计算机,自行车,户外,旅游
( Thu, 20 Sep 2007 13:52:16 +0800 )
Description:
本文以最浅显得道理阐述经济的原理,进而阐述经济的真相。不会有任何所谓的学术***们常用来欺骗人民的深奥的学术理论,还事实以清白,真相只有一个,让我们擦亮眼睛,洞观今天发生的一切。
  本文在以下几方面阐述中国经济的真相。      *************************************************************************
   1、 什么是经济发展?
    简单的讲经济发展就是有钱,但钱从何来?钱只能印出来。那么到底是什么使印钞机不停的运转?
    假设一个岛上有1000口人,与世隔绝,人与人之间交换物品过活,但有时候你手里用来交换的东西不一定就是对方想要的,怎么办?于是人们就用都喜欢的金银作为交换的东西,于是交换方便了。但金银要磨损,携带也不方便,当交换活动频繁时,发现这个东西太繁琐,限制了交换活动,于是为了解决这个问题,想了一个办法,就是由岛上的管理者发行一种符号,用它来代替金银,于是钞票出现了。
    刚开始这种钞票可以随时得兑换金银。大家都很放心,因为钞票就是金银。可是岛上金银的产量太小,当人们的交换活动更加频繁时,钞票不够用了,只能暂停交换。暂停交换的后果就是大家不生产别人想要的东西了,因为虽然别人用,但交换不出去,套用现在的话说就是经济发展减速了。
    于是大家想了一个办法,成立一家钱庄,这个钱庄是大家的,由钱庄来发行钞票,印出的钞票借给想用钱的人,然后这个人有钱了再还给钱庄。于是银行就出现了。
    银行的出现,能保证交换活动更持续的进行,大家都拼命的生产,岛上的东西越来越多,银行根据产品的生产数量,不停的印制钞票,以保证交换能更深入的进行。
  后来人们的交换活动更频繁了,一家钱庄太少了,于是出现了很多钱庄,总要有个管钱庄的吧,于是指定一家钱庄管理其他钱庄,并且钞票只能由这家钱庄印刷,然后通过其他钱庄借给用钱的人,中央银行就这么也出现了。      *************************************************************************
   2、什么是对外贸易?
    有一天岛上的人发明了船,于是就到处划船跑,发现了另一个岛屿,那上面也有人,也有钞票,也像自己岛上这么活动。但自己岛上生产的东西多,那个岛上生产的东西少,1元钱在自己的岛上能买1斤大米,那个岛上的一元钱只能买半斤大米,于是另外岛上的钱来这个岛上买东西时只能2元换1元才行。于是汇率出现了。算好汇率后,他们开始互相***东西到对方岛上,这就是对外贸易。对外贸易丰富了人们的生活生产需要,使交换活动到了一个空前的高潮。
  *************************************************************************
   3、什么是通货膨胀?
    由于岛上生产的产品太多了,以至于没法准确估计到底该发行多少钞票,发行多了的时候,因为没有那么多产品可买,产品就开始涨价,发行少了呢就开始降价,为了保证价格稳定,央行要求各钱庄要把一部分钱放在央行里面用来调节产品的价格,根据价格情况多放和少放。这就是存款准备金率。
    可是有一部分聪明人开始怎么才能把钱弄到自己手上,他在海边捡了一颗石子,说这个石子值100万快钱,把它卖给了一个人,这个人觉得整个岛上的钱加一起也没有100万啊,怎么办,于是向钱庄借,钱庄也没有这么多钱,于是把印钞机打开,印了这100万,借给了他买了这个石子。
    然后这个人开始卖这个石子,100万卖给了第二个人,由于第一个卖石子的人把钱花了,所以岛上的钱多了,所以这一百万可以筹集到,多买些产品就有了。但当把这个石子以200万转让的时候,钱庄只能又印了100万钞票,就这样钞票越印越多,可是当这个石子不停的流动转让时,大家并不觉得岛上的钱多,产品价格还是原来的那样。可是当这个石子不流通或流通的慢时,大家觉得钱多了,可是如果当持有石子的人把它扔到大海里,那就等于岛上凭空多出N多个100 万来,怎么办,央行最害怕的就是这颗石子没了。它没了岛上产品的价格就会飞涨,就会通货膨胀。那么持有石子的人就绑架了岛上的经济。
  *************************************************************************
  4、房价能绑架中国经济吗?
    中国的房地产已经使中国央行发行了太多的人民币,如果房价下降,等于把那颗石子投进了海里,那么多印出来的钱会使中国产品价格飞涨,会发生严重的通货膨胀。
    看似房价与石子毫无相干,可是他们的属性是一样的,就是价格和价值严重的背离。实际上房地产的崩盘受害最大的并不是中国的商业银行,而是整个中国经济体系。为什么政府迟迟没有把房价降下来,不是降不下来,如果真想降房价,只需要一道政令,房地产价格会在一夜之间土崩瓦解。可是后果谁能承担,严重通货膨胀谁来负责?
    房地产业已经绑架了中国的经济,是无可置疑的,是客观实在的,没有人能改变。
    不管谁是总理,廉洁也好,贪污也好,都希望社会和谐,可这是一个棘手的问题。
  *************************************************************************
   5、房价和通货膨胀有关系吗?
    可更棘手的问题还不仅仅在这里。如果降房价,面对的是马上的通货膨胀,可不降房价,那么面对的就是更严重的通货膨胀,何去何从?
    所以最可靠的办法就是稳定房价,然后在社会产品增加时,减少货币的投放量,加上其他政策如加息、增加商业银行准备金率、缩小信贷规模等辅助手段,来使中国经济软着陆,这是最好的办法,我们看到的一切政令也是这个逻辑。不信的话,可以查阅一下近年来政府发布的一系列调控房地产业的措施。
    可是为什么房价不稳定而且更加的疯长呢?难道是开发商与政府在博弈吗?告诉你在中国没有人能和党叫板,几个肚子大点的开发商是没有这个实力的。实际上是幕后的另一只黑手在和中国政府博弈,这支黑手就是外资,以美国为代表的帝国主义攫取中国人民血汗的黑手。    *************************************************************************
   6、房价高涨的原动力是什么?
    使房价上涨的动力很多,房价上涨对其有利的人就是动力之一,比如:为了GDP和个人利益的地方政府、为了赚钱的开发商、炒房族、以至于买了房的所谓“房奴”都是是房价上涨的动力,可是最大的原动力不是这些,是外资,是美国的以攫取超额利润的各大财团。
    开发商作为商人,为了赚取高额利润不是什么伤天害理的事情,可是各行各业都有商人,难道想赚就有吗?那除非是神话。房地产业的开发商也一样,不是他们想赚多少就有多少的。根据价值规律,当商品的价格和价值严重背离时,会有一种趋向正常价格回归的力量钳制价格的上涨,可是在中国的房地产业,这种规律似乎不起作用,一个重要的原因是忽视了一个参考范围的原因,如果以中国经济本身而言确实打破了这个规律,可是目前的情况是有一股力量在维持着房地产业的价格,即托市,那么谁在托市呢?
    谁能在房地产业失控能得到巨额利润的人就是托市的人。
            
    讨论这个问题前,现看一下中国的外汇储备情况。中国的外汇储备在近几年迅速由1、2千亿突破万亿,并且还在迅速的增长,难道是中国人民奋发图强,挣来的吗?这个不需要证明,看中国的GDP增幅就知道,外汇储备的增长速度明显大于GDP的增幅。显然不是挣来的,那么除了挣来的一部分,那么就是所谓的 “国际热钱”的涌入,而国际热钱的涌入的目的只有一个,就是要取得高额的回报。
    国际热钱进入中国市场后,首先要兑换***民币,那么一下子哪有这么多人民币呢?只有一个办法就是让印钞机没日没夜的工作,然后这笔钱用来托住已是烫手山芋的房地产市场,就是拼命的投资房地产业,当房地产价格因背离价值而向下波动时,通过托市再把它抬高,反复如此,给人的表象就是房产价格决没有偏离价值。导致房价越涨越高。
    而开发商呢,他们一到房子将要卖不出去的时候,就有人出高价买下来,他们怎么会降价,如果没有这部分资金在运作,别说是开发商联盟,就是全国只有一个开发商,价格也会降下来,没有人买了,难道等房子发霉吗?
    那么外资持有这么多高价房产做什么?不怕砸到手里吗?
    不怕!为什么呢?在这个资本运作的过程中,有一个冤大头在最底下接着呢,是谁呢?就是中国的商业银行,由于火爆的房地产市场,一流的流通性,近年来没有看到任何萎缩的迹象,放了贷款就盈利,为什么不贷款呢?没有理由不放贷款。
    加之中国老百姓买房的心情,外资可以轻易的把高价房转嫁到中国的银行和消费者身上,连炒房的农民都能赚到一杯羹,职业的外资会赔钱吗?
    那么房价一直涨下去,会怎样呢?请看下一节:“7、房价一直涨下去,开发商会笑还是会哭?什么情况下会笑?什么情况下会哭?” *************************************************************************
   7、房价一直涨下去,开发商会笑还是会哭?什么情况下会笑?什么情况下会哭?
    在中国政府近几年来密集的几十道金牌的调控下,房价还是如脱了缰的野马一样狂奔不止。暂且不论何时能停止上涨的势头,毕竟房价在目前还是上涨的,所以我们就看看房价上涨不止会带来什么。
    首先:由于GDP上涨,中国政府为了维持上文说的“保持产品交换的继续”要不断地投放人民币,即开动印钞机。只要房地产这个石子还没有投入到大海里去,还有一定的流通性,那么就不会有通货膨胀的发生。
    其次:开发商会在这个过程中也赚取巨大的利润。
    再次:能看到的是,炒房族会赚钱、所谓的买房的“房奴”会增值。
    都赚钱!可是在这个过程中到底谁亏了呢?钱从哪里来呢?如果你是有炒股的经验就会知道,如果投资价格和价值背离的商品,你赚的钱就是别人赔的钱,那么套用到房地产上,就是买房自住的人,现在看似增值,那是镜中月、水中花,你不变现就不是你的。再有就是当价格完全回归真实价值的时候,有时甚至会到真实价值一下,被高价房套住的投资者。还有一个就是开发商!
    为什么说开发商也有赔钱呢?大家知道商人的本性是赚钱,赚取利润。如果一个商人投机一次就永远都不做这个生意了,他是赚钱了,可他不是商人,这种商业行为没有意义。由于商人的本性,所以赚来的钱会继续扩大再生产,在能赚钱的领域不断的加大投资。这个道理从生活中就可看出来,越是做大生意的人总喊没钱,因为要更大的流动资金来维持其扩大再生产的需要。
    所以一旦房价回归真实的价值之时,就是有一大批开发商崩溃之日。这个是不以任何人的意志和任何行为为转移的。如果现在有开发商逃离房地产业的角斗场,那么跑得慢的就是最后的输家。如果都不跑,就像击鼓传花一样,最后拿到接力棒的就是接盘者。有句话叫:“出来混迟早是要还的”。也许只不过是方式不一样,看谁的运气好而已。
    可是现在却没有任何的开发商赔钱的迹象,有的是开发商不断的赚钱,老百姓送钱都来不及。只是因为目前房价还在上涨,房产还在不断的流动。
    一个巨大的问题来了,这样不断上涨的房价何时是个头啊,请看下一节:“8、坐在华尔街办公室的财团们是如何吸干中国山区一个农民的血汗的”
  *************************************************************************
    8、坐在华尔街办公室的财团们是如何吸干中国山区一个农民的血汗的
    ***说过:“帝国主义没有睡大觉,而是天天在蠢蠢欲动,在图谋不轨,想达到他们的罪恶目的。诚然他们的气焰的确没有以前那么嚣张,但他们确实在活动着。”是不是冷战结束就代表着人类的和平得以实现呢?“一句上帝面前人人平等”就能掩盖帝国主义噬血的本质吗?人人平等的理念是对的,但它只不过是帝国主义用来欺骗人们的伎俩罢了,说到和做到永远是两码事。
    国际财团通过国际热钱涌入中国,使人民币加大发行量,然后通过房地产炒作,把中国的国内价格水平无限制的提高,GDP的增长又一次使人民币的发行量被迫提高。国际财团心黑手狠,双管齐下,目的就是使中国经济热到烫手,热到让每个中国人为之疯狂。
    我们暂不去关心这个过程,我们放眼未来,看看这一过程的结果是什么样呢?换句话说财团的目的是什么呢?
    很明显,中国人最不愿意看到的事情,就是财团们最乐见的结果。先做个假设,比如国际热钱在投资的中国房地产领域里上演最后的疯狂后,然后把房产成功解套全部变现,如果此时人民币兑美元的汇率达到美国预期最高时,汇率是热钱逃离时需要相乘的那个倍数,会发生什么谁都能想到,所有热钱会一夜之间全部兑换美元逃离。财团们会赚得沟满壕平,中国市场上除了钱就是钱,能遮住天的大把人民币将成为中国人民的噩梦。
    这是中国人最不愿意看到的事情,也是财团最乐见的结果。近期美国不断的通过政治、贸易等手段逼迫人民币升值,而中国政府迟迟不升值或小范围的升值,远远没有达到美国政府的预期,这是在出口处的中美之间的博弈。美国逼迫人民币升值的狼子野心昭然若揭!
    顺便提一句,如果真的这个升值预期达到了,中国楼市将重演日本上世纪90年代崩盘的历史。只是那时中国经济也会像日本一样进入一个连续低迷不振的不归路。
    在这种攸关民族生存的问题上,政府会坐视不管吗?就算是退一步来讲,一个完全不负责任的政府遇到这种情况,因为这个资本运作同时也极大侵犯了政府的利益,也会拼命反搏的。
    那么中国政府会以什么样的方式来化解这一“经济危机”呢?请看下一节:“在有关这场围绕房价和通货膨胀之间的各方博弈中可能选择的中庸路线”。      *************************************************************************
   9、在有关这场围绕房价和通货膨胀之间的各方博弈中可能选择的中庸路线
    我一直相信:物极必反,中庸,是老祖宗留给后人解决棘手问题的杀手锏!
    既然是中国房地产“绑架”了中国的经济,那么我们就从“绑架”说起。何为“绑架”,应该是相对弱的一方,拿着相对强的一方的“要害”,使相对强的一方即便有能力对付弱的一方,但碍于投鼠忌器,无力可施。
    我们先来看看绑架双方的阵容和各自手上的筹码。房地产业的主体是开发商,所以开发商算一方,它绑架的要害是中国经济,那中国经济是谁的要害呢?是中国人民的要害,代表中国人民的,目前只能是中国政府。中国政府算一方。外资呢?它是煽风点火者,划到开发商一方。中国政府一方有公权力,可以通过税收、财政、经济政策、行政手段对开发商阵营施力,开发商阵营通过源源不断的后备资金来绑架中国经济,且不断的提高赎金。
    问题已经摆在这里,怎么办呢?冲上去一***击毙,那歹徒非撕票不可,太极端不可行。所以有为政府开出药方,只要实现了某某一条既可降低房价的主意,就犹如这一***击毙一样是不可行的。我们想象如何解救绑架事件的,首先要稳定住对方的情绪,再一步步地靠近,但这种靠近虽会引起歹徒的敌意,但不会导致他撕票,然后再进一步稳定情绪,再靠近,然后条件成熟时,再稳准狠,即保证人质的安全,又要保证歹徒一举拿下。这才是真正的营救。
    所以中庸才是解决棘手问题的杀手锏。极端、盲目、冒进是要不得的。
    针对如何解决中国房地产市场的绑架问题,就要围绕问题的关键部分一步步地施加反作用力,然后一举成功,才是正道。
    第一个关键的部分就是汇率,中国政府会严把汇率关,我们可以预期的是,人民币兑美元的汇率决不会过快升值,但会小幅升值,就是要稳定对方的情绪,如果一点不升,对方会狗急跳墙,如果升的过快,是给自己掘墓,所以为什么中国汇率升幅总是犹抱琵琶半遮面,看看美国政府的态度跟一个绑匪是多么的贴切,我要一瓶果汁,为什么拿来半瓶水。可又说不出什么来,毕竟还能暂时解渴。
    第二个关键是限制资产流动性,既然房地产能绑架中国经济,说明它举足轻重,限制房产的流通性,就可以限制资产的流动性,注意这里是两个概念,“资产流动性”和“房产流通性”。两者完全不同,但又息息相关。房产流通性减弱,资产流动性减弱,那么需要印刷的人民币就减少。就像那个石子,不流通马上通胀,不涨价流通没问题,可是行不通,外资也不同意。既然是不断的上涨价格,只能一步步地限制房产流通,只要房产流通性少一点,通胀就会显现一点,然后再通过上调准备金率和加息等柔性政策来调整一点,用柳叶棉丝掌来化解泰森的一记重拳,以绵柔克强刚、化千钧于无形,这就是中国政府的策略(这好像是中国人最擅长的事情)。我们从官方媒体就能看到相关的消息,楼市签约率在下降,即流通性在下降,然后物价开始有所涨幅,如猪肉等副食产品,但央行马上上调准备金率和加息,来稳定物价。不知各位看官是否也看出些端倪。可预期的是,到完全化解危机之前,会不断地加息和调高准备金率,同时房产流通性会越来越弱,这个预言是否准确可在以后的央行政策上验证。等完全消除了由于经济过热导致的通货膨胀预期,那么就是房地产价格回归真实价值之时。
    不管你看到没看到,这已是最后的疯狂,我们从两方面来分析:
    第一,如果这场博弈以外资胜利而告终,那么中国经济将步日本90年代持续下滑的深渊,由于外资撤走,房市赖以生存的支柱坍塌,房价会一落千丈,可到时候不管是开发商还是老百姓都将承受经济下滑之苦,持有的货币迅速贬值,即便房价落下,也不一定买的起。这是中国政府和中国人民不可接受的,也是无法接受的。
    第二,如果外资以失败而告终,即在汇率上把住出口,让房价回归真实价值,把外资同样套在中国,这才是胜利的前提。那么以美国财团为首的帝国主义噬血者必将疯狂报复,会在投资、出口等各方面对中国施加压力。我们今天人民币升值没有达到美国预期,已经导致中国出口到美国的产品受打压,进而引起了众多的贸易摩擦,由此可见一斑。我们知道,经济发展的三套马车是,投资、出口和消费,在投资、出口领域遭到报复会影响中国经济的发展,但我相信不会影响我们的发展速度,别忘了还有一套马车是“消费”,房价下降后,如果你是爱国者,请现在保护好你的钱包,到时千万别羞羞答答,要果断地出手买房,中国经济会在消费领域异军突起,继续独占世界经济引擎的鳌头。
    所以我们要相信我们的政府,配合我们的政府,政府在事关全局的问题上是和老百姓站在一起的,政府是水上承载的舟,人民是水,没有水,何以载舟。
( Sat, 28 Jul 2007 10:27:55 +0800 )
Description:
演示截图:
代码简介或代码解析: 一个简单的鼠标钩子程序
实现适时获取当前鼠标所在窗口的标题,并将其显示在一个EDITBOX中
Windows系统是建立在事件驱动的机制上的,说穿了就是整个系统都是通过消息的传递来实现的。而钩子是Windows系统中非常重要的系统接口,用它可以截获并处理送给其他应用程序的消息,来完成普通应用程序难以实现的功能。钩子的种类很多,每种钩子可以截获并处理相应的消息,如键盘钩子可以截获键盘消息,外壳钩子可以截取、启动和关闭应用程序的消息等。本文在VC6编程环境下实现了一个简单的鼠标钩子程序,并对Win32全局钩子的运行机制、Win32 DLL的特点、VC6环境下的MFC DLL以及共享数据等相关知识进行了简单的阐述。 一.Win32全局钩子的运行机制 钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。对每种类型的钩子由系统来维护一个钩子链,最近***的钩子放在链的开始,而最先***的钩子放在最后,也就是后加入的先获得控制权。要实现Win32的系统钩子,必须调用SDK中的API函数SetWindowsHookEx来***这个钩子函数,这个函数的原型是
HHOOK SetWindowsHookEx(int idHook,HOOKPROC lpfn,HINSTANCE hMod,DWORD dwThreadId);
其中,第个参数是钩子的类型;第二个参数是钩子函数的地址;第三个参数是包含钩子函数的模块句柄;第四个参数指定监视的线程。如果指定确定的线程,即为线程专用钩子;如果指定为空,即为全局钩子。其中,全局钩子函数必须包含在DLL(动态链接库)中,而线程专用钩子还可以包含在可执行文件中。得到控制权的钩子函数在完成对消息的处理后,如果想要该消息继续传递,那么它必须调用另外一个SDK中的API函数CallNextHookEx来传递它。钩子函数也可以通过直接返回TRUE来丢弃该消息,并阻止该消息的传递。 二.Win32 DLL的特点 Win32 DLL与 Win16 DLL有很大的区别,这主要是由操作系统的设计思想决定的。一方面,在Win16 DLL中程序入口点函数和出口点函数(LibMain和WEP)是分别实现的;而在Win32 DLL中却由同一函数DLLMain来实现。无论何时,当一个进程或线程载入和卸载DLL时,都要调用该函数,它的原型是BOOL WINAPI DllMain
(HINSTANCE hi tDLL,DWORD fdwReason, LPVOID lpvReserved);,其中,第一个参数表示DLL的实例句柄;第三个参数系统保留;这里主要介绍一下第二个参数,它有四个可能的值:DLL_PROCESS_ATTACH(进程载入),DLL_THREAD_ATTACH(线程载入),DLL_THREAD_DETACH(线程卸载),DLL_PROCESS_DETACH(进程卸载),在DLLMain函数中可以对传递进来的这个参数的值进行判别,并根据不同的参数值对DLL进行必要的初始化或清理工作。举个例子来说,当有一个进程载入一个DLL时,系统分派给DLL的第二个参数为DLL_PROCESS_ATTACH,这时,你可以根据这个参数初始化特定的数据。另一方面,在Win16环境下,所有应用程序都在同一地址空间;而在Win32环境下,所有应用程序都有自己的私有空间,每个进程的空间都是相互独立的,这减少了应用程序间的相互影响,但同时也增加了编程的难度。大家知道,在Win16环境中,DLL的全局数据对每个载入它的进程来说都是相同的;而在Win32环境中,情况却发生了变化,当进程在载入DLL时,系统自动把DLL地址映射到该进程的私有空间,而且也复制该DLL的全局数据的一份拷贝到该进程空间,也就是说每个进程所拥有的相同的DLL的全局数据其值却并不一定是相同的。因此,在Win32环境下要想在多个进程***享数据,就必须进行必要的设置。亦即把这些需要共享的数据分离出来,放置在一个独立的数据段里,并把该段的属性设置为共享。 三.VC6中MFC DLL的分类及特点 在VC6中有三种形式的MFC DLL(在该DLL中可以使用和继承已有的MFC类)可供选择,即Regular tatically linked to MFC DLL(标准静态链接MFC DLL)和Regular using the hared MFC DLL(标准动态链接MFC DLL)以及Exte io MFC DLL(扩展MFC DLL)。第一种DLL的特点是,在编译时把使用的MFC代码加入到DLL中,因此,在使用该程序时不需要其他MFC动态链接类库的存在,但占用磁盘空间比较大;第二种DLL的特点是,在运行时,动态链接到MFC类库,因此减少了空间的占用,但是在运行时却依赖于MFC动态链接类库;这两种DLL既可以被MFC程序使用也可以被Win32程序使用。第三种DLL的特点类似于第二种,做为MFC类库的扩展,只能被MFC程序使用。 四.在VC6中全局共享数据的实现 在主文件中,用#pragma data_seg建立一个新的数据段并定义共享数据,其具体格式为: #pragma data_seg ("shareddata") HWND haredwnd=NULL;//共享数据 #pragma data_seg() 仅定义一个数据段还不能达到共享数据的目的,还要告诉编译器该段的属性,有两种方法可以实现该目的(其效果是相同的),一种方法是在.DEF文件中加入如下语句: SETCTIONS hareddata READ WRITE SHARED 另一种方法是在项目设置链接选项中加入如下语句: /SECTION:shareddata,rws 五.具体实现步骤 由于全局钩子函数必须包含在动态链接库中,所以本例由两个程序体来实现。 1.建立钩子Mousehook.DLL (1)选择MFC A Wizard(DLL)创建项目Mousehook; (2)选择MFC Exte io DLL(共享MFC拷贝)类型; (3)由于VC5没有现成的钩子类,所以要在项目目录中创建Mousehook.***件,在其中建立钩子类:
cla AFX_EXT_CLASS CMouseHook : ublic CObject {
public: CMouseHook();//钩子类的构造函数 virtual ~CMouseHook();//钩子类的析构函数
public: BOOL StartHook(HWND hWnd) //***钩子函数 BOOL StopHook();//卸载钩子函数 }; (4)在Mousehook.c 文件的顶部加入#include "Mousehook.h"语句; (5)在Mousehook.c 文件的顶部加入全局共享数据变量: #pragma data_seg("mydata") HWND glhPrevTarWnd=NULL //上次鼠标所指的窗口句柄 HWND glhDi layWnd=NULL //显示目标窗口标题编辑框的句柄 HHOOK glhHook=NULL //***的鼠标勾子句柄 HINSTANCE glhI tance=NULL //DLL实例句柄 #pragma data_seg() (6)在DEF文件中定义段属性: SECTIONS mydata READ WRITE SHARED (7)在主文件Mousehook.c 的DllMain函数中加入保存DLL实例句柄的语句: glhI tance=hI tance; (8)钩子函数的实现:
//钩子函数的实现: LRESULT WINAPI MouseProc(int Code,WPARAM wparam,LPARAM lparam)
{ LPMOUSEHOOKSTRUCT MouseHook=(MOUSEHOOKSTRUCT FAR *)lparam; if (nCode=0) { HWND glhTargetWnd=XYZWindowFromPoint(NULL,pMouseHook-> t); if(glhTargetWnd!=glhPrevTarWnd) { char zCaption[100]; GetWindowText(glhTargetWnd,szCaption,100); //取目标窗口标题 if(IsWindow(glhDi layWnd)) SendMe age(glhDi layWnd,WM_SETTEXT,0,(LPARAM)(LPCTSTR)szCaption); glhPrevTarWnd=glhTargetWnd; //保存目标窗口 } } retur CallNextHookEx(glhHook,nCode,wparam,lparam); //继续传递消息
其中函数XYZWindowFromPoint返回光标(point)所在点的子窗口句柄
HWND XYZWindowFromPoint(HWND hwndParent, // handle to arent window POINT oint, // tructure with oint coordinates UINT uFlag // ki optio )
{ if(hwndParent != NULL) retur ::ChildWindowFromPointEx(hwndParent, oint, uFlags); //返回光标(point)所在点的子窗口句柄 // Find the mallest "window" till containing the oint // Doing thi revent u from to ing at the first window containing the oint RECT rect, rectSearch; HWND Wnd, hWnd, hSearchWnd; hWnd = ::WindowFromPoint(point);//得到光标(point)所在点的窗口句柄 if(hWnd != NULL) { // Get the ize and arent for compare later ::GetWindowRect(hWnd, am rect); //得到整个窗口在屏幕上的矩形框位置 Wnd = ::GetParent(hWnd) //得到父窗口句柄 // We only earch further if the window ha a arent if(pWnd != NULL) { // Search from the window dow i the Z-Order hSearchWnd = hWnd; do { hSearchWnd = ::GetWindow(hSearchWnd, GW_HWNDNEXT); //如果再也找不到这样的窗口,该函数就会返回NULL //GetWindow得到和句柄为hSearchWnd(即首次循环为hWnd)的窗口相关的窗口, //其关系由GW_HWNDNEXT决定,这里是寻找兄弟窗口 // Doe the earch window also contai the oint, have the ame arent, and i visible? ::GetWindowRect(hSearchWnd, am rectSearch); if(::PtInRect(&am rectSearch, oint) am am ::GetParent(hSearchWnd) == Wnd am am ::IsWindowVisible(hSearchWnd)) { // It does, ut i it maller?比较看谁的面积最小 if(((rectSearch.right - rectSearch.left) * (rectSearch.bottom - rectSearch.top)) lt ((rect.right - rect.left) * (rect.bottom - rect.top))) { // Found ew maller window, update compare window hWnd = hSearchWnd; ::GetWindowRect(hWnd, am rect); } } } while(hSearchWnd != NULL); } } retur hWnd;
} (9)类CMouseHook的成员函数的具体实现:
CMouseHook::CMouseHook()
CMouseHook::~CMouseHook()
//***钩子并设定接收显示窗口句柄
BOOL CMouseHook::StartHook(HWND hWnd)
{ BOOL Result=FALSE; glhHook=SetWindowsHookEx(WH_MOUSE,MouseProc,glhI tance,0); if(glhHook!=NULL) Result=TRUE; glhDi layWnd=hWnd; //设置显示目标窗口标题编辑框的句柄 retur Result }
//卸载钩子
BOOL CMouseHook::StopHook() { BOOL Result=FALSE; if(glhHook) { Result= UnhookWindowsHookEx(glhHook); if(bResult) { glhPrevTarWnd=NULL; glhDi layWnd=NULL //清变量 glhHook=NULL; } } retur Result;
} (10)编译项目生成mousehook.dll。 2.创建钩子可执行程序 (1)用MFC的A Wizard(EXE)创建项目Mouse; (2)选择“基于对话应用”并按下“完成”键; (3)编辑对话框,删除其中原有的两个按钮,加入静态文本框和编辑框,用鼠标右键点击静态文本框,在弹出的菜单中选择“属性”,设置其标题为“鼠标所在的窗口标题”; (4)在Mouse.h中加入对Mousehook.h的包含语句#include "Mousehook.h"; (5)在CMouseDlg.h的CMouseDlg类定义中添加私有数据成员: CMouseHook m_hook //加入钩子类作为数据成员 (6)修改CmouseDlg::OnInitDialog()函数: //TODO: Add extra initializatio here CWnd * wnd=GetDlgItem(IDC_EDIT1) //取得编辑框的类指针 m_hook.starthook(pwnd-GetSafeHwnd()) //取得编辑框的窗口句柄并***钩子 (7)链接DLL库,即把..\Mousehook\debug\Mousehook.lib加入到项目设置链接标签中; (8)编译项目生成可执行文件; (9)把Mousehook.DLL拷贝到..\mouse\debug目录中; (10)先运行几个可执行程序,然后运行Mouse.exe程序,把鼠标在不同窗口中移动,在Mouse.exe程序窗口中的编辑框内将显示出鼠标所在的应用程序主窗口的标题。
( Wed, 25 Jul 2007 18:17:55 +0800 )
Description:
“鼠标屏幕取词”技术是在电子字典中得到广泛地应用的,如四通利方和金山词霸等软件,这个技术看似简单,其实在windows系统中实现却是非常复杂的,总的来说有两种实现方式:
第一种:采用截获对部分gdi的api调用来实现,如textout,textouta等。
第二种:对每个设备上下文(dc)做一分copy,并跟踪所有修改上下文(dc)的操作。
第二种方法更强大,但兼容性不好,而第一种方法使用的截获windowsapi的调用,这项技术的强大可能远远超出了您的想象,毫不夸张的说,利用windowsapi拦截技术,你可以改造整个操作系统,事实上很多外挂式windows中文平台就是这么实现的!而这项技术也正是这篇文章的主题。
截windowsapi的调用,具体的说来也可以分为两种方法:
第一种方法通过直接改写winapi 在内存中的映像,嵌入汇编代码,使之被调用时跳转到指定的地址运行来截获;第二种方法则改写iat(import addre table 输入地址表),重定向winapi函数的调用来实现对winapi的截获。
第一种方法的实现较为繁琐,而且在win95、98下面更有难度,这是因为虽然微软说win16的api只是为了兼容性才保留下来,程序员应该尽可能地调用32位的api,实际上根本就不是这样!win 9x内部的大部分32位api经过变换调用了同名的16位api,也就是说我们需要在拦截的函数中嵌入16位汇编代码!
我们将要介绍的是第二种拦截方法,这种方法在win95、98和nt下面运行都比较稳定,兼容性较好。由于需要用到关于windows虚拟内存的管理、打破进程边界墙、向应用程序的进程空间中注入代码、pe(portable executable)文件格式和iat(输入地址表)等较底层的知识,所以我们先对涉及到的这些知识大概地做一个介绍,最后会给出拦截部分的关键代码。
先说windows虚拟内存的管理。windows9x给每一个进程分配了4gb的地址空间,对于nt来说,这个数字是2gb,系统保留了2gb到 4gb之间的地址空间禁止进程访问,而在win9x中,2gb到4gb这部分虚拟地址空间实际上是由所有的win32进程所共享的,这部分地址空间加载了共享win32 dll、内存映射文件和vxd、内存管理器和文件系统码,win9x中这部分对于每一个进程都是可见的,这也是win9x操作系统不够健壮的原因。win9x中为16位操作系统保留了0到4mb的地址空间,而在4mb到2gb之间也就是win32进程私有的地址空间,由于 每个进程的地址空间都是相对独立的,也就是说,如果程序想截获其它进程中的api调用,就必须打破进程边界墙,向其它的进程中注入截获api调用的代码,这项工作我们交给钩子函数(setwindowshookex)来完成,关于如何创建一个包含系统钩子的动态链接库,《电脑高手杂志》在第?期已经有过专题介绍了,这里就不赘述了。所有系统钩子的函数必须要在动态库里,这样的话,当进程隐式或显式调用一个动态库里的函数时,系统会把这个动态库映射到这个进程的虚拟地址空间里,这使得dll成为进程的一部分,以这个进程的身份执行,使用这个进程的堆栈,也就是说动态链接库中的代码被钩子函数注入了其它gui进程的地址空间(非gui进程,钩子函数就无能为力了),
当包含钩子的dll注入其它进程后,就可以取得映射到这个进程虚拟内存里的各个模块(exe和dll)的基地址,如:
hmodule hmodule=getmodulehandle(“mypro.exe”);
在mfc程序中,我们可以用afxgeti tancehandle()函数来得到模块的基地址。exe和dll被映射到虚拟内存空间的什么地方是由它们的基地址决定的。它们的基地址是在链接时由链接器决定的。当你新建一个win32工程时,vc++链接器使用缺省的基地址0x00400000。可以通过链接器的base选项改变模块的基地址。exe通常被映射到虚拟内存的0x00400000处,dll也随之有不同的基地址,通常被映射到不同进程
的相同的虚拟地址空间处。
系统将exe和dll原封不动映射到虚拟内存空间中,它们在内存中的结构与磁盘上的静态文件结构是一样的。即pe (portable executable) 文件格式。我们得到了进程模块的基地址以后,就可以根据pe文件的格式穷举这个模块的image_import_descriptor数组,看看进程空间中是否引入了我们需要截获的函数所在的动态链接库,比如需要截获“textouta”,就必须检查“gdi32.dll”是否被引入了。说到这里,我们有必要介绍一下pe文件的格式,如右图,这是pe文件格式的大致框图,最前面是文件头,我们不必理会,从pe file optional header后面开始,就是文件中各个段的说明,说明后面才是真正的段数据,而实际上我们关心的只有一个段,那就是“.idata”段,这个段中包含了所有的引入函数信息,还有iat(import addre table)的rva(relative virtual addre )地址。
说到这里,截获windowsapi的整个原理就要真相大白了。实际上所有进程对给定的api函数的调用总是通过pe文件的一个地方来转移的,这就是一个该模块(可以是exe或dll)的“.idata”段中的iat输入地址表(import addre table)。在那里有所有本模块调用的其它dll的函数名及地址。对其它dll的函数调用实际上只是跳转到输入地址表,由输入地址表再跳转到dll真正的函数入口。
具体来说,我们将通过image_import_descriptor数组来访问“.idata”段中引入的dll的信息,然后通过image_thunk_data数组来针对一个被引入的dll访问该dll中被引入的每个函数的信息,找到我们需要截获的函数的跳转地址,然后改成我们自己的函数的地址……具体的做法在后面的关键代码中会有详细的讲解。
讲了这么多原理,现在让我们回到“鼠标屏幕取词”的专题上来。除了api函数的截获,要实现“鼠标屏幕取词”,还需要做一些其它的工作,简单的说来,可以把一个完整的取词过程归纳成以下几个步骤:
1. ***鼠标钩子,通过钩子函数获得鼠标消息。
使用到的api函数:setwindowshookex
2. 得到鼠标的当前位置,向鼠标下的窗口发重画消息,让它调用系统函数重画窗口。
使用到的api函数:windowfrompoint,screentoclient,invalidaterect
3. 截获对系统函数的调用,取得参数,也就是我们要取的词。
对于大多数的windows应用程序来说,如果要取词,我们需要截获的是“gdi32.dll”中的“textouta”函数。
我们先仿照textouta函数写一个自己的mytextouta函数,如:
bool winapi mytextouta(hdc hdc, int nxstart, int nystart, lpcstr l zstring,int c tring)
// 这里进行输出l zstring的处理
// 然后调用正版的textouta函数
把这个函数放在***了钩子的动态连接库中,然后调用我们最后给出的hookimportfunction函数来截获进程
对textouta函数的调用,跳转到我们的mytextouta函数,完成对输出字符串的捕捉。hookimportfunction的
用法:
hookfuncdesc hd;
proc porigfu hd.szfunc="textouta";
hd. roc=(proc)mytextouta;
hookimportfunction (afxgeti tancehandle(),"gdi32.dll",&am hd,porigfu );
下面给出了hookimportfunction的源代码,相信详尽的注释一定不会让您觉得理解截获到底是怎么实现的
很难,ok,let’s go:
///////////////////////////////////////////// begin ///////////////////////////////////////////////////////////////
#include crtdbg.h
// 这里定义了一个产生指针的宏
#define makeptr(cast, ptr, addvalue) (cast)((dword)(ptr)+(dword)(addvalue))
// 定义了hookfuncdesc结构,我们用这个结构作为参数传给hookimportfunction函数
typedef struct tag_hookfuncdesc
lpcstr szfunc; // the name of the function to hook.
proc roc; // the procedure to blast in.
} hookfuncdesc , * lphookfuncdesc;
// 这个函数监测当前系统是否是windownt
bool i t();
// 这个函数得到hmodule -- 即我们需要截获的函数所在的dll模块的引入描述符(import descriptor)
pimage_import_descriptor getnamedimportdescriptor(hmodule hmodule, lpcstr szimportmodule);
// 我们的主函数
bool hookimportfunction(hmodule hmodule, lpcstr szimportmodule,
lphookfuncdesc pahookfunc, proc* paorigfuncs)
/////////////////////// 下面的代码检测参数的有效性 ////////////////////////////
_a ert(szimportmodule);
_a ert(!i adreadptr(pahookfunc, sizeof(hookfuncdesc)));
#ifdef _debug
if (paorigfuncs) _a ert(!i adwriteptr(paorigfuncs, sizeof(proc)));
_a ert(pahookfunc.szfunc);
_a ert(*pahookfunc.szfunc != '\0');
_a ert(!i adcodeptr(pahookfunc. roc));
if ((szimportmodule == null) || (i adreadptr(pahookfunc, sizeof(hookfuncdesc))))
_a ert(false);
setlasterrorex(error_invalid_parameter, sle_error);
return false;
//////////////////////////////////////////////////////////////////////////////
// 监测当前模块是否是在2gb虚拟内存空间之上
// 这部分的地址内存是属于win32进程共享的
if (!i t() &am am ((dword)hmodule = 0x80000000))
_a ert(false);
setlasterrorex(error_invalid_handle, sle_error);
return false;
// 清零
if (paorigfuncs) memset(paorigfuncs, null, sizeof(proc));
// 调用getnamedimportdescriptor()函数,来得到hmodule -- 即我们需要
// 截获的函数所在的dll模块的引入描述符(import descriptor)
pimage_import_descriptor pimportdesc = getnamedimportdescriptor(hmodule, szimportmodule);
if (pimportdesc == null)
return false; // 若为空,则模块未被当前进程所引入
// 从dll模块中得到原始的thunk信息,因为pimportdesc-firstthunk数组中的原始信息已经
// 在应用程序引入该dll时覆盖上了所有的引入信息,所以我们需要通过取得pimportdesc-originalfirstthunk
// 指针来访问引入函数名等信息
pimage_thunk_data porigthunk = makeptr(pimage_thunk_data, hmodule,
pimportdesc-originalfirstthunk);
// 从pimportdesc-firstthunk得到image_thunk_data数组的指针,由于这里在dll被引入时已经填充了
// 所有的引入信息,所以真正的截获实际上正是在这里进行的
pimage_thunk_data prealthunk = makeptr(pimage_thunk_data, hmodule, pimportdesc-firstthunk);
// 穷举image_thunk_data数组,寻找我们需要截获的函数,这是最关键的部分!
while (porigthunk-u1.function)
// 只寻找那些按函数名而不是序号引入的函数
if (image_ordinal_flag != (porigthunk-u1.ordinal &am image_ordinal_flag))
// 得到引入函数的函数名
pimage_import_by_name yname = makeptr(pimage_import_by_name, hmodule,
porigthunk-u1.addre ofdata);
// 如果函数名以null开始,跳过,继续下一个函数
if ('\0' == yname-> ame[0])
continue;
// bdohook用来检查是否截获成功
bool bdohook = false;
// 检查是否当前函数是我们需要截获的函数
if ((pahookfunc.szfunc[0] == yname-> ame[0]) &am am (strcmpi(pahookfunc.szfunc, (char*) yname-> ame) == 0))
// 找到了!
if (pahookfunc. roc)
bdohook = true;
if (bdohook)
// 我们已经找到了所要截获的函数,那么就开始动手吧
// 首先要做的是改变这一块虚拟内存的内存保护状态,让我们可以自由存取
memory_basic_information mbi_thunk;
virtualquery(prealthunk, &am mbi_thunk, sizeof(memory_basic_information));
_a ert(virtualprotect(mbi_thunk.baseaddre , mbi_thunk.regio ize,
page_readwrite, &am mbi_thunk.protect));
// 保存我们所要截获的函数的正确跳转地址
if (paorigfuncs)
paorigfuncs = (proc)prealthunk-u1.functio // 将image_thunk_data数组中的函数跳转地址改写为我们自己的函数地址!
// 以后所有进程对这个系统函数的所有调用都将成为对我们自己编写的函数的调用
prealthunk-u1.function = (pdword)pahookfunc. roc;
// 操作完毕!将这一块虚拟内存改回原来的保护状态
dword dwoldprotect;
_a ert(virtualprotect(mbi_thunk.baseaddre , mbi_thunk.regio ize,
mbi_thunk.protect, &am dwoldprotect));
setlasterror(error_succe );
return true;
// 访问image_thunk_data数组中的下一个元素
porigthunk++;
prealthunk++;
return true;
// getnamedimportdescriptor函数的实现
pimage_import_descriptor getnamedimportdescriptor(hmodule hmodule, lpcstr szimportmodule)
// 检测参数
_a ert(szimportmodule);
_a ert(hmodule);
if ((szimportmodule == null) || (hmodule == null))
_a ert(false);
setlasterrorex(error_invalid_parameter, sle_error);
return null;
// 得到dos文件头
pimage_dos_header pdosheader = (pimage_dos_header) hmodule;
// 检测是否mz文件头
if (i adreadptr(pdosheader, sizeof(image_dos_header)) ||
(pdosheader-e_magic != image_dos_signature))
_a ert(false);
setlasterrorex(error_invalid_parameter, sle_error);
return null;
// 取得pe文件头
pimage_nt_headers theader = makeptr(pimage_nt_headers, pdosheader, pdosheader-e_lfanew);
// 检测是否pe映像文件
if (i adreadptr( theader, sizeof(image_nt_headers)) ||
( theader-> ignature != image_nt_signature))
_a ert(false);
setlasterrorex(error_invalid_parameter, sle_error);
return null;
// 检查pe文件的引入段(即 .idata section)
if ( theader-optionalheader.datadirectory[image_directory_entry_import].virtualaddre == 0)
return null;
// 得到引入段(即 .idata section)的指针
pimage_import_descriptor pimportdesc = makeptr(pimage_import_descriptor, pdosheader, theader-optionalheader.datadirectory[image_directory_entry_import].virtualaddre );
// 穷举pimage_import_descriptor数组寻找我们需要截获的函数所在的模块
while (pimportdesc-> ame)
{ tr szcurrmod = makeptr( tr, pdosheader, pimportdesc-> ame);
if (stricmp(szcurrmod, szimportmodule) == 0)
break; // 找到!中断循环
// 下一个元素
pimportdesc++;
// 如果没有找到,说明我们寻找的模块没有被当前的进程所引入!
if (pimportdesc-> ame == null)
return

参考资料

 

随机推荐