哈萨克族各玉兹的关系

概述

玉兹是哈萨克传统社会结构中顶层的社会组织形态。玉兹下面又有乌鲁斯、阿尔斯、乌鲁、阿依阿塔玛克与阿吾勒。玉兹一词,据说来自古突厥语钦察方言中的“Yuz”一词。这个词语的意思是“部分”。在哈萨克族中,一共存在三个玉兹,分别是乌拉玉兹(大玉兹),即右部哈萨克,主要分布在巴尔喀什湖以南的楚河、塔拉斯河与伊犁河流域。塔什干,撒马尔罕等地区亦是其势力范围。奥尔塔玉兹(中玉兹),即左部哈萨克,主要分布在大玉兹以北与哈萨克斯坦中北部地区。中玉兹在我国新疆也有大量分布,例如清河县的阿巴克克烈部。齐齐科玉兹(小玉兹),即西部哈萨克,主要分布在西哈萨克斯坦。

关于三玉兹的起源,哈萨克人一直流传着一个传说。传说,古时候有一位名叫卡拉恰恰德尔的年轻首领,他英勇善战,常率军远征。卡拉恰恰德尔在一次战斗中失利,他身负重伤,独自一人在荒漠上行走。其时,烈日炎炎,极度的饥渴和疲惫使卡拉恰恰德尔难以支持下去,便倒在了路上。这时,天空中飞来一只白天鹅,白天鹅给他滴了一滴口涎,然后把他带到蓝色的湖泊边。卡拉恰哈德尔喝了水,精神渐渐好转,创伤也逐渐消失了。这时天鹅脱下白色的鹅毛,变成了一位美丽的少女。后来卡拉恰哈德尔与这位少女结了婚,生下一个男孩,取名为“qazaq”(qaz意为天鹅,aq意为白色),其子哈萨克生了三个儿子,长子阿克阿尔斯、次子别克阿尔斯、幼子江阿尔斯。长子后裔为哈萨克族大玉兹,次子后裔为中玉兹,三子后裔为小玉兹。

当然,传说只是传说,事实并非如此。事实上,所谓的玉兹是多个游牧部落组成的部落联盟。例如,大玉兹下有乌孙、杜拉特、黑宰、阿尔班、素宛、康里、扎拉亦尔等部落;中玉兹下有克普察克(钦察)、乃蛮、克烈、瓦克等部落;小玉兹下有阿达依等部落。各部落在历史上相对独立地发展,又存在着交融,渐渐形成了统一的哈萨克民族。

哈萨克汗国时期

1456年,哈萨克汗国建立不久,由于三玉兹之间缺乏较稳定的政治经济的联系,形成了两大集团对立的局面。其中,中玉兹和小玉兹组成联盟,大玉兹相对更加独立。

1718年,头克汗逝世,哈萨克汗国内部发生严重内乱。

1723年春,哈萨克汗国境内发生严重的自然灾害。西蒙古准噶尔部趁机入侵哈萨克汗国。

1728年,三玉兹可汗与苏丹在南哈萨克斯坦奥尔达巴斯山上举行会议。会议决定建立共同抗击蒙古入侵者的联盟,并选举小玉兹可汗阿布勒海依尔为哈萨克军队的指挥。

1730年,以中玉兹与小玉兹为主的各位可汗和苏丹在奥利阿塔举行会议。会议的目标是重新确立哈萨克汗国大汗的人选与讨论汗国的前途。但各方意见最终未能达到一致,会议不欢而散。中玉兹和小玉兹的联盟分裂。在大玉兹大部分领土遭到蒙古准噶尔人侵占的情况下,三玉兹的对立格局形成。

1731年,出于抵御准蒙古准噶尔入侵者的目的,在沙皇俄国的政治和军事压力下,小玉兹首领阿布勒海依尔汗向圣彼得堡派出了请求归顺的使者。小玉兹正式成为沙皇俄国的被保护国。

1738年,准噶尔军队击溃并征服了大玉兹并占领了中玉兹部分地区。

1741年,准噶尔派出两路军队,一路进攻中玉兹,一路攻打小玉兹。中玉兹的可汗阿布赉汗在这次战斗中被俘获,直到1743年9月,经过双方谈判,阿布赉汗才获得释放。

1753年后,趁着准噶尔内乱,哈萨克的大玉兹逐渐摆脱了准噶尔的控制。

1757年,中玉兹可汗阿布赉汗遣其11个部落的各苏丹组成使团,前往中国北京朝见大清乾隆帝。乾隆帝颁发了册封阿布赉汗的诏谕,给予优厚赏赐,并承认中玉兹作为整个哈萨克三玉兹之首。哈萨克大玉兹也臣服清廷。

1781年,阿布赉汗去世后。中玉兹内部无人可以服众。随后,大玉兹可汗瓦里汗借助沙皇俄国的力量取得了哈萨克汗国的汗位,并接受了沙皇俄国的册封。在此期间,大玉兹乘中玉兹内乱之机占领了中玉兹大片牧地。

1792年,沙皇俄国武力侵略占领中玉兹。不久之后,大玉兹也沦为沙皇俄国的殖民地。1822年,沙皇俄国颁布了《西西伯利亚吉尔吉斯人条例》,在哈萨克草原的北部和西部建立了新的俄式行政管理体制。沙皇的军政管理体制彻底替代了哈萨克汗国的传统政治制度。在表面上,三玉兹的鸿沟至此消失。

从哈萨克汗国这一段历史中可以看出,在大多数时间中,三个玉兹冲突不断。只有在面对外敌人侵的时候,才能短暂结盟。但这种状况下仍然会发生同胞反目的情况,甚至希望能够通过外部势力,保存自身实力,征服其他玉兹与部落。

从哈萨克汗国内部看,中玉兹的实力似乎更强大一些,中玉兹领导人多次通过外交等手段,获得汗国大汗的地位。

苏联时期

1917年俄国发生十月革命后,哈萨克成立阿拉什自治共和国。1920年8月26日建立归属于俄罗斯联邦的吉尔吉斯苏维埃社会主义自治共和国,首都是奥伦堡。1925年4月19日改称哈萨克苏维埃社会主义自治共和国并迁都至克孜勒奥尔达。1936年12月5日定名为哈萨克苏维埃社会主义共和国,并由苏联中央直辖,成为一个苏联加盟共和国。

加入苏联之后,哈萨克斯坦的经济、政治、文化、 教育等方面进入高速发展阶段,哈萨克人的生活水平有了较快较好的提高。

1960年,来自大玉兹亦斯提部落的库纳耶夫成为哈共总书记。两年后库纳耶夫被解除哈共总书记的职务,由维吾尔人伊斯麦尔·玉素甫继任。

1964年,库纳耶夫官复原职,重新担任哈共总书记。在1964年至1986年的22年这个时期,也就是库纳耶夫担任哈共总书记的时期内,哈萨克斯坦的经济、政治、社会发展水平有了较快较好的提高。同时,哈萨克人对三玉兹的区分观念又有所复苏。

库纳耶夫着力突出大玉兹人的政治利益, 提拔了大量来自大玉兹的干部,大玉兹人在政治上占有一定的优势。同时,为了与中玉兹政治精英相抗衡,库纳耶夫有意建立大玉兹和小玉兹间的政治联盟,以抗衡中玉兹势力。苏共中央为保证哈萨克斯坦国内政局的稳定,不激化玉兹间矛盾,在党内高层职位的人选上,尽力保持三玉兹势力的平衡,基本保证大玉兹、中玉兹以及小玉兹人选一比一比一的比例。

在苏联时期,在社会、文化、科技等领域,中玉兹的影响力要远高于其他两玉兹。据说,在苏联时期,在哈萨克斯坦中小学课本内,90%的经典作家和诗人来自中玉兹;近代哈萨克斯坦文坛最有名望的作家基本都为中玉兹成员,20世纪哈萨克文学在很大程度上,集中于哈北部、中部地区;在“哈萨克作家协会”中,中玉兹成员超过了半数。在科技领域,两名获得苏联“列宁科技技术奖”的哈萨克族科技工作者,皆来自中玉兹。

从整体上看,在苏联后期,相比中玉兹以及小玉兹来说,大玉兹势力在政治领域具有一定的优势。在文化科技等领域,中玉兹的影响力较大。受苏共中央的“制衡”思想的影响,大中小玉兹之间保持了一定程度的平均。在这一时期内,哈萨克斯坦政治高层大致构成了大玉兹为基础,小玉兹为盟友,中玉兹为对手的三玉兹对立格局。

独立时期

1990年10月25日,发表主权宣言。

1991年12月10日,改称为哈萨克斯坦共和国。

1991年12月16日,哈萨克斯坦共和国宣布独立。同年12月21日加入独联体。

独立之后,纳扎尔巴耶夫赢得选举,成为哈萨克斯坦的首任总统。在独立前期,为了团结其他民族,纳扎尔巴耶夫尽量平衡各民族各玉兹在哈萨克斯坦政治高层的势力。在中后期,由于哈萨克族和俄罗斯族的矛盾激化,纳扎尔巴耶夫开始有意识地降低其他民族,尤其是俄罗斯族干部的比例。哈萨克人逐渐控制了哈萨克斯坦,俄罗斯人、日耳曼人、白俄罗斯人、鞑靼人、朝鲜人与维吾尔人等其他民族的干部渐渐退出哈萨克斯坦的中央政治舞台。

1997年,哈萨克斯坦迁都北部城市阿斯塔纳(2019年改名为努尔苏丹)。哈萨克斯坦的迁都,在一定程度上均衡了三玉兹的势力,使中玉兹拥有了更多参与国家政治生活的机会。

因此,在独立时期,大玉兹的政治优势得到了延续。中玉兹由于大玉兹的有意拉拢,势力也渐渐发展。小玉兹由于地处偏僻,对于哈萨克斯坦的政权建设参与程度较低,其原有优势得到了削弱。

总的来看,部落主义以及玉兹主义对社会所产生的影响是消极的,不利于民族的统一和团结,阻碍着当今的哈萨克斯坦在民主政治上向前的脚步。

成吉思汗西征花剌子模

喀喇汗王朝最终被花剌子模所灭,但花剌子模最终又被蒙古大军所灭。

花剌子模古国,位于中亚”母亲河”阿姆河下游三角洲,是中亚文明发育最早的地区之一,历史上曾经有过十分辉煌的时期,其文化成就堪称中亚文明宝库中的奇葩。旧译”回回国”或”火寻”,是一个位于今日中亚西部地区的古代国家,位于阿姆河下游、咸海南岸,今日乌兹别克斯坦及土库曼斯坦两国的土地上。

12世纪末至13世纪初叶,其领土广阔时期包括今日伊朗、乌兹别克斯坦、土库曼斯坦、塔吉克斯坦、阿富汗、哈萨克斯坦、吉尔吉斯斯坦、伊拉克东部及以色列等地。

1200年,花剌子模的阿拉·阿德丁·摩诃末继位,他使花剌子模国达到了鼎盛,在他统治期间花剌子模国成为中亚的主要帝国。他的第一次行动是从古尔人手中夺取了阿富汗地区。

1210年,摩诃末大胜西辽(辽皇族耶律大石在新疆建立的国家)王古出鲁克,想继续向东扩张。

1215年,摩诃末派遣以哈拉丁为首的使团来中国,在中都附近觐见了成吉思汗,并且受到优厚礼遇。之后,成吉思汗派遣了回聘使团。

1218年使臣到达花剌子模递交了成吉思汗致摩诃末的书信,信的大意是:吾人眼下有友邻之责,人类协调的途径应由双方遵循;友谊的责任应得到承担;吾人应有义务在不幸事故中相互支援和帮助;并且应使常行的和荒废的道路平安开放,让商人们可以安全无约束地来往云云。

回聘使团还没回到京城,蒙古商队便到达了花剌子模边城讹答剌。守城的花剌子模将军亦难赤,眼红商队的大量财物,竟把商队作为间谍扣押。上报后,大汗摩诃末命令将商队人员全部处死,财货没收。仅有一名驼夫逃回报信给成吉思汗。

成吉思汗在震怒之余不失,一面派哲别将军追歼盘踞新疆的西辽王古出鲁克,以投石问路探测动静;一面又派以伊本·哈福剌只·布拉为首的使团出使花剌子模,据理责问摩诃末。摩诃末无以置答,竟又将三位使臣杀掉。

花剌子模大汗摩诃末的一再挑衅,成吉思汗再无退路,于是亲率大军20万,与其会战花剌子模。

其实花剌子模当时精兵有40万,国土和属地很大,东北至哈萨克斯坦的锡乐河,东南临印度河,西北抵阿塞拜疆,西南达波斯湾。然而其国土辽阔却荒于治理,地区富庶却征敛无度,人民众多却大兴屠戮,兵多将广却令出多门。朝内忧国王、母后两班人马,朝外患贵族勾心斗角互相窥伺。

1219年9月,成吉思汗大军进入花剌子模,至1220年3月,半年间就攻克了布花剌等8城。接着,蒙古军三路会师,三天攻下驻有11万重兵的其国都撒马耳干。

1220年底,成吉思汗又相继攻克你沙不儿等十余座名城。从撒麻耳干到里海之滨,摩诃末在前面跑,蒙古军在后面追。摩诃末一路逃亡,居然一敌未遇,一叶扁舟,划入里海中偏远的一个小岛,那里蒙古铁骑难于涉足,倒也安然无恙。怎奈天不佑,神不灵,惊吓之余,还是难免一命呜乎。

1222年11月20日,摩诃末的长子扎阑丁驻军花剌子模东南部重镇哥疾宁,听说成吉思汗亲领大军扑来,便南撤印度河,被迫与穷追不舍的蒙古军又打了一场恶仗,人马几乎输光,孤身跃马印度河,亡入印度。

花剌子模这个纵横中亚的汗国也就从此消亡,成吉思汗把他的长子术赤分封在了钦察草原,把伊犁河流域、河中地区、焉耆以西直到咸海地区分给了次子察合台,把天山北路的塔城、额敏、和布克赛尔、阿勒泰等地和蒙古高原西部分给了三子窝阔台,成吉思汗的领地即蒙古中心地区则由幼子拖雷继承。

其后,蒙古帝国又进行过两次西征,一次进抵奥地利和意大利国境,另一次攻取了伊朗、巴格达、叙利亚。

在漫长的战线上,西域成了重要的补给站。蒙古军正是以西域为跳板走向世界的,”大约占据了世界上三分之二的开化地区。”

据小说家高建群的描述,西域大地上所有那些重要的地理名称,都是以蒙语来命名的。阿尔泰山意为”盛产金子的山”,阿尔泰第一峰奎屯山是成吉思汗命名的,意为”多么寒冷的山”。天山与阿拉套山的夹角,赛里木湖畔的博尔赫拉,蒙语为”青色的草原”。呼图壁蒙语的意思是”高僧”。

在新疆,许多山的名字中出现”塔格”,譬如慕士塔格山,库鲁克塔格山,觉罗塔格山——,”塔格”是蒙语”山”,乌鲁木齐,意思是”美丽的牧场”。

不仅新疆如此,甚至俄罗斯境内的”喀山”、”克利米亚”等,也都是蒙语命名。

成吉思汗西征缘于花剌子模截杀了丝绸之路上的蒙古商队,也就是说缘于花剌子模破坏了丝绸之路的畅通,而成吉思汗及其后世子孙完成西征后,大大促进了丝绸之路的畅通。 成吉思汗及其子孙的西征,不仅保证了丝绸之路的畅通,也改变了伊斯兰教的在新疆的命运。

郭德纲获聘中华文化促进会副主席、天津评剧院名誉院长

10月18日晚间,德云社创始人郭德纲在个人微博发布消息,晒出自己受聘为中华文化促进会副主席的聘书。同时,表示自己将“鞠躬尽瘁”。

另据如皋市融媒体中心官方微信公众号消息,10月18日,中华文化促进会第五次会员代表大会在北京国际饭店举行。会议选举了66人担任第五届常务理事,张玉文当选主席,姜新文、夏骏当选常务副主席,郭德纲等当选副主席。其中夏骏是如皋籍导演。

据其官网介绍,中华文化促进会(简称“文促会”,英文名称Chinese Culture Promotion Society,缩写为CCPS)创立于1992年,是注册于中华人民共和国民政部的全国性联合性社会组织。是目前中国最大规模、最具代表性的文化NGO。2004年国家授予“全国先进民间组织”荣誉称号。现为中国民间组织国际交流促进会副会长单位。

另据“天津评剧院”微信公众号消息,2024年10月15日下午两点钟,《保龙山》明星贺岁版新闻发布会在光华剧院小剧场召开。天津评剧院特聘请郭德纲为“名誉院长”,发布会上由曾昭娟院长为郭德纲颁发了聘书。

公开资料显示,郭德纲,1973年1月出生于天津,中国内地相声演员,北京德云社创始人。

帖木儿帝国

寄情于茫茫草原,逐水草而居,游牧民族的生活让人羡慕。可是在冷兵器时代,游牧民族的生存条件却要艰苦得多,但这也造就了他们极为强悍的战斗力。游牧民族中最具代表性的就是蒙古人,成吉思汗的事迹至今也仍被人们所传唱。其实,在铁木真之后,一个名为帖木儿的突厥化蒙古人,也曾追随先辈们的脚步,不断征服强大的对手,带领族人再度建立起一个让人闻风丧胆的帝国。帖木儿帝国素来有着“蒙古第二帝国”的美誉,那么帖木儿又是如何带领蒙古人再度走向辉煌的呢?这一切还得从察合台汗国说起。

乱世出枭雄

西察合台汗国陷入混乱按照蒙古人的传统,成吉思汗在西征时曾赐给次子察合台一块封地,也就是后来四大汗国之一的察合台汗国。可惜时光荏苒,帝国荣光不在,察合台汗国一分为二,分裂成了东西两个汗国。西察合台汗国到了拜延忽里可汗这一代,国家的军政大权已经落到了巴鲁刺思家族族长哈扎罕的手中。哈扎罕权倾朝野,在国内呼风唤雨无所不能,而且为了树立自身威严和巩固权势,他曾先后两次弑杀君主。哈扎罕的行径让许多人恨之入骨,但小心谨慎的哈扎罕没有给对手任何机会。百密终有一疏,1359年哈扎罕在一次打猎中被暗杀了。

巴鲁刺思家族的统治并没有结束,其子乌巴都刺接管了父亲的权力,可惜他没能继承父亲的智商。家族权势如日中天,他渐渐迷失了自我,竟然看上了可汗拜延忽里的王妃。纵使权势滔天,但君臣终归有别。色欲熏心的乌巴都刺竟然为了王妃将可汗拜延忽里杀害,另立了一个傀儡汗。乌巴都刺的声望能力本就不及其父,而此举更是犹如烈油入锅,朝野上下一片叫骂,甚至连巴鲁刺思家族内部都对他有了意见。

随后,在族人哈只和费尔干纳守将拜延的精心筹划下,他们举兵攻陷了国都,乌巴都刺也为自己的行为付出了惨痛代价。混乱并没有就此结束,因为汗国最高权力无人把持,各路诸侯纷纷揭竿而起,西察合台汗国的形势变得岌岌可危。当初举兵的哈只趁机在渴石城宣布独立,而这个哈只其实就是帖木儿的叔叔。

帖木儿崛起帖木儿是幸运的,因为他出生于巴鲁刺思家族,而巴鲁刺思则是汗国内最具权势的家族。虽然他的父亲只是分支酋长,但也算得上是豪门贵族了,其父所掌管的地区正是渴石城。与官二代不同,帖木儿从小就严于律己,树立了远大理想,深知投资自己就是投资未来,为此他不断锻炼着自己的能力。可惜世事往往不尽如人意,还没等帖木儿羽翼丰满,父亲便去世了,他的叔叔接过了渴石城的权力棒。帖木儿关于未来的理想近乎于破灭,因为作为叔叔名下将领的他已经失去了继承渴石城的资格。帖木儿却并不甘心,他一直等待着机会的到来。

公元1360年,西察合台汗国的国内形势每况愈下,东察合台汗国杰出首领秃黑鲁帖木儿有些坐不住了。这不正是他建功立业,重新恢复察合台汗国昔日荣光的绝佳时候么?于是,他积极动员国内民众,筹备战争物资,并在这一年御驾亲征,带领数万大军浩浩荡荡开向西察合台汗国。面对来势汹汹的敌人,四分五裂的西察合台汗国根本无力抵抗,各路诸侯望其旗靡,无不闻风丧胆,哈只也被吓得逃亡他处。聪明的帖木儿很快就意识到,这正是他合法夺回渴石城的绝佳机会,他立刻向秃黑鲁帖木儿表达善意,称其愿意成为他的臣属。此举让秃黑鲁帖木儿非常满意,也很欣赏这个年轻人,最后更是将渴石城交由他代为管理。

就在帖木儿以为天高任鸟飞的时候,东察哈台汗国内部的异教徒却爆发了起义,这样一来,秃黑鲁帖木儿只能回军镇压。他走后,各路诸侯迅速死灰复燃,哈只也再度回到了渴石城,根基不稳的帖木儿根本不是哈只的对手,他只能再次服软。可是没过多久,秃黑鲁帖木儿镇压完起义后再次袭来,可怜的哈只再度逃亡,但这一次却在途中被人暗杀。帖木儿顺理成章地接手了渴石城,还一跃成为了黑鲁帖木儿之子也里牙思火者的辅臣,自此帖木儿手握大权,属于他的传奇却才刚刚开始。

分道扬镳,走向辉煌

帝国建立委身于察合台家族门下,不过是帖木儿的手段,因为帖木儿知道只有暂时忍让才能让自己积累更多的政治资本,能够在汗国中获得更高的位置。可惜事与愿违,帖木儿非但没有获得晋升,还被排挤了下去。心有不甘的帖木儿只得转而联合迷里忽辛,并正式与察合台汗国分道扬镳,走上了反抗蒙古贵族的道路。在两人的鼎力配合下,察合台汗国的军队节节溃败,河中地区也被夺了过来。帖木儿的势力逐渐扩大,他也开始不满于现状。

公元1369年,帖木儿将同盟迷里忽辛(摄政王)杀害,随之开始独揽大权,他还像先辈们那样,杀了现任可汗,并重新立了一个傀儡。但与先辈们不同的是,帖木儿在西察合台汗国的权势蒸蒸日上,后来更是自号苏丹(因为他不是成吉思汗的后裔,所以不能称可汗)。因为国内没有谁能够对他产生威胁,所以即便如此放纵行事,反对的声音也不多。借助这滔天权势,帖木儿开始整顿西察合台汗国的诸侯们,并成功将这些人收入麾下,西察合台汗国终于成为了帖木儿的囊中之物。在这基础上,一个崭新的帝国诞生了——帖木儿帝国。

征战四方登顶至尊之位后,一代雄主帖木儿开始了征战四方的伟大旅程,他先是降服了老对手东察合台汗国,解决了来自东方的大威胁。此后东察合台汗国虽对帖木儿王朝多有侵犯,但是帖木儿在位的很长一段时间内,都没有再挑过事。而后,他又征服了波斯和花刺子模地区(此前也被蒙古人征服过),更是将同属蒙古四大汗国的伊利汗国斩落马下,从而在地区内树立了极高的政治威信。此时,只剩下一个金帐汗国能够对帖木儿产生威胁了。随着帖木儿的军事扩张,来自金帐汗国的威胁也越来越大,尤其是在贸易上帖木儿王朝被金帐汗国牢牢压制着,而且还经常受到来自金帐汗国的挑衅,冲突已经不可避免。

1395年,聪明的帖木儿凭借出色的军事能力利用金帐汗国内部矛盾取得了捷列克河大战的胜利,至此帖木儿帝国第一阶段的对外征战完美收官。随之而来的外族叛乱,让帖木儿将征服目标转变为了外族人,因为在他看来这些外族人的威胁要比蒙古族大得多,于是他开始师从成吉思汗,奉行起了屠城政策。公元1396年,帖木儿将各国使臣全部扣押,其中就有明朝和奥斯曼帝国的使臣,这样的行为无疑意味着宣战。

六年之后,帖木儿悍然出兵,率领15万大军兵临奥斯曼帝国的安卡拉城,而奥斯曼帝国的苏丹正是有着“闪电”之称的巴耶塞特一世。尽管巴耶赛特联军曾一度占据优势,但是双方经过数日激战,帖木儿还是利用自身擅长远距离迂回包抄的特点赢得了胜利,最后巴耶赛特被俘,奥斯曼帝国大伤元气。功成名就的帖木儿仍不满足,他又将目光瞄准了东方的天朝上国明朝。公元1404年,渴望恢复成吉思汗荣光的帖木儿亲率20万大军浩浩荡荡地杀向明朝,然而行程还未过半他就病死在了途中,攻打明朝的计划也就此夭折。

突如其来的变故,伟大帝国走向衰亡

帖木儿的突然暴毙,让整个国家陷入了一片惶恐之中,帝国危机也接踵而至。帖木儿身死之时,他的长子、次子和三子都已经先他一步去世,剩下的合法继承人只有四子沙哈鲁。在经过一系列混战,沙哈鲁成功登位,虽然他也曾极力稳固帝国的统治,但终归荣光不再。就像当年的蒙古帝国一样,帖木儿帝国也很快一分为四,彼此间征伐不断,帝国彻底走向末路。时至今日,纵观帖木儿帝国的历史,难免令人心生感慨。

TextBox 函数系列之一

Public Declare Function SendMessage Lib “user32” Alias “SendMessageA” (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Const EM_GETSEL = &HB0
Public Const EM_LINEFROMCHAR = &HC9
Public Const EM_LINEINDEX = &HBB

Public Function GetTextBoxRowText(ByVal oTextBox As TextBox, ByVal iLine As Integer) As String ‘获取 TextBox 某行文字
On Error Resume Next
Dim TempArray As Variant
TempArray = Split(oTextBox.Text, vbCrLf, -1, vbTextCompare)
GetTextBoxRowText = TempArray(iLine – 1)
On Error GoTo 0
End Function

Public Function GetTextBoxRowCount(ByVal oTextBox As TextBox) As Integer ‘获取 TextBox 文字行数
On Error Resume Next
GetTextBoxRowCount = 0
Dim TempArray As Variant
TempArray = Split(oTextBox.Text, vbCrLf, -1, vbTextCompare)
GetTextBoxRowCount = UBound(TempArray) – LBound(TempArray) + 1
On Error GoTo 0
End Function

Public Function GetTextBoxColumnCount(ByVal oTextBox As TextBox) As Integer ‘获取 TextBox 文字最大列数
On Error Resume Next
Dim I As Integer, J As Integer
GetTextBoxColumnCount = 0
Dim TempArray As Variant
TempArray = Split(oTextBox.Text, vbCrLf, -1, vbTextCompare)
For I = LBound(TempArray) To UBound(TempArray)
‘Debug.Print Len(TempArray(I)); I
If GetTextBoxColumnCount < Len(TempArray(I)) Then GetTextBoxColumnCount = Len(TempArray(I))
Next I
On Error GoTo 0
End Function

Public Function GetTextBoxColumnCountAtRow(ByVal oTextBox As TextBox, ByVal iRow As Integer) As Integer ‘获取 TextBox 某行文字最大列数
On Error Resume Next
Dim I As Integer, J As Integer
GetTextBoxColumnCountAtRow = 0
Dim TempArray As Variant
TempArray = Split(oTextBox.Text, vbCrLf, -1, vbTextCompare)
Dim iCount As Integer
For I = LBound(TempArray) To UBound(TempArray)
‘Debug.Print Len(TempArray(I)); I
iCount = iCount + 1
If iCount = iRow Then
GetTextBoxColumnCountAtRow = Len(TempArray(I))
Exit For
End If
Next I
On Error GoTo 0
End Function

Public Function GetTextBoxCharCount(ByVal oTextBox As TextBox) As Long’获取 TextBox 文字数
On Error Resume Next
GetTextBoxCharCount = 0
Dim lCount As Long, lRow As Long, lCol As Long
Dim lParam As Long, wParam As Long
‘首先向文本框传递EM_GETSEL消息以获取从起始位置到光标所在位置的字符数
lRet = SendMessage(oTextBox.hwnd, EM_GETSEL, wParam, lParam)
lCount = lRet / 2 ^ 16
‘再向文本框传递EM_LINEFROMCHAR消息根据获得的字符数确定光标以获取所在行数
lRow = SendMessage(oTextBox.hwnd, EM_LINEFROMCHAR, lCount, 0)
lRow = lRow + 1
‘扣除 VbCrlf
GetTextBoxCharCount = lCount – (lRow – 1) * 2
‘向文本框传递EM_LINEINDEX消息以获取所在列数
‘lRet = SendMessage(oTextBox.hWnd, EM_LINEINDEX, -1, 0)
‘lCol = lCount – lRet + 1
On Error GoTo 0
End Function

Public Function GetTextBoxCursorRow(ByVal oTextBox As TextBox) As Long’获取 TextBox 光标所在行
On Error Resume Next
GetTextBoxCursorRow = 0
Dim lCount As Long, lRow As Long, lCol As Long
Dim lParam As Long, wParam As Long
‘首先向文本框传递EM_GETSEL消息以获取从起始位置到光标所在位置的字符数
lRet = SendMessage(oTextBox.hwnd, EM_GETSEL, wParam, lParam)
lCount = lRet / 2 ^ 16
‘再向文本框传递EM_LINEFROMCHAR消息根据获得的字符数确定光标以获取所在行数
lRow = SendMessage(oTextBox.hwnd, EM_LINEFROMCHAR, lCount, 0)
lRow = lRow + 1
GetTextBoxCursorRow = lRow
‘向文本框传递EM_LINEINDEX消息以获取所在列数
‘lRet = SendMessage(oTextBox.hWnd, EM_LINEINDEX, -1, 0)
‘lCol = lCount – lRet + 1
On Error GoTo 0
End Function

Public Function GetTextBoxCursorColumn(ByVal oTextBox As TextBox) As Long’获取 TextBox 光标所在列
On Error Resume Next
GetTextBoxCursorColumn = 0
Dim lCount As Long, lRow As Long, lCol As Long
Dim lParam As Long, wParam As Long
‘首先向文本框传递EM_GETSEL消息以获取从起始位置到光标所在位置的字符数
lRet = SendMessage(oTextBox.hwnd, EM_GETSEL, wParam, lParam)
lCount = lRet / 2 ^ 16
‘再向文本框传递EM_LINEFROMCHAR消息根据获得的字符数确定光标以获取所在行数
lRow = SendMessage(oTextBox.hwnd, EM_LINEFROMCHAR, lCount, 0)
lRow = lRow + 1
‘向文本框传递EM_LINEINDEX消息以获取所在列数
lRet = SendMessage(oTextBox.hwnd, EM_LINEINDEX, -1, 0)
lCol = lCount – lRet + 1
GetTextBoxCursorColumn = lCol
On Error GoTo 0
End Function

Public Sub TurnTextBoxCursor(ByVal oTextBox As TextBox, ByVal iRow As Integer, Optional ByVal iColumn As Integer = 1) ‘把文本文件光标移到某行某列
On Error Resume Next
Dim I As Integer, J As Integer
Dim oShell As Object
Set oShell = CreateObject(“WScript.Shell”)
oTextBox.SetFocus
Dim iCurRow As Integer, iCurColumn As Integer
iCurRow = GetTextBoxCursorRow(oTextBox) ‘当前行
iCurColumn = GetTextBoxCursorColumn(oTextBox) ‘当前列
‘Debug.Print iCurRow; iCurColumn
If iCurRow < iRow Then
For I = iCurRow To iRow – 1
oShell.SendKeys “{DOWN}”
Next I
Else
For I = iRow To iCurRow – 1
oShell.SendKeys “{UP}”
Next I
End If
Wait 50
iCurRow = GetTextBoxCursorRow(oTextBox) ‘当前行
iCurColumn = GetTextBoxCursorColumn(oTextBox) ‘目标行的当前列
‘Debug.Print iCurRow; iCurColumn
If iCurColumn < iColumn Then
For J = iCurColumn To iColumn – 1
oShell.SendKeys “{RIGHT}”
Next J
Else
For J = iColumn To iCurColumn – 1
oShell.SendKeys “{LEFT}”
Next J
End If
Wait 50
iCurRow = GetTextBoxCursorRow(oTextBox) ‘当前行
iCurColumn = GetTextBoxCursorColumn(oTextBox) ‘目标行的当前列
‘Debug.Print iCurRow; iCurColumn
ERR_NORUNNING:
On Error GoTo 0
End Sub