Essential DocIO

.NET库,能够读写Microsoft Word文件。该组件是一个对象模型,同Microsoft Office COM类库相似,它不采用COM interop,以C#编写。如果系统内没有安装Microsoft Word,可以考虑该组件。

创建新的MS Word文档:支持创建包含文本、图片、图表、页面和页脚的MS Word文档。

文档格式化:支持格式化为通用的MS Word 报告。

文档生成基于模板:基于模板生成文档,可以使用MS Word GUI设计文档报告,然后使用DocIO向模板文件内动态填充数据。

文档属性:读写Word文档的属性设置。

转换:支持使用Essential PDF将MS Word文档转换为PDF。

高级特性:支持复制和合并多个MS Word文档为单个文档。

转换HTML到word
        public static byte[] ConvertHtmlToDoc(string html)
        {
            var document 
= new WordDocument();
            IWSection section 
= document.AddSection();
            IWParagraph para 
= section.AddParagraph();
            
            
string errorMessage = "";
            
bool valid = section.Body.IsValidXHTML(html, XHTMLValidationType.Strict, out errorMessage);
            
if (!valid)
                
throw new InvalidCastException(errorMessage + "<hr>" + html) ;
            document.XHTMLValidateOption 
= XHTMLValidationType.Strict;
            section.Body.InsertXHTML(html);
            var outMem 
= new MemoryStream();

            document.Save(outMem, FormatType.Doc);
            outMem.Seek(
0, SeekOrigin.Begin);
            var content 
= new byte[outMem.Length];
            outMem.Read(content, 
0, content.Length);
            outMem.Dispose();
            document.Close();
            
return content;
        }

 

生成Word的时候替换指定的文字
        /// <summary>
        
/// 生成Word的时候替换指定的文字
        
/// </summary>
        
/// <param name="templatePath"></param>
        
/// <param name="FileName"></param>
        
/// <param name="replaysDictionary"></param>
        public static void ReplaceDocContent(string templateFileName, string newFileName,
                                             Dictionary
<stringstring> replaysDictionary)
        {
            IWordDocument document 
= new WordDocument();
            document.Open(templateFileName, FormatType.Doc);
            
foreach (var rd in replaysDictionary)
            {
                
if (string.IsNullOrEmpty(document.GetText())) continue;

                document.Replace(rd.Key, rd.Value, 
falsefalse);
                
while (document.GetText().IndexOf(rd.Key) != -1)
                    document.Replace(rd.Key, rd.Value, 
falsefalse);
            }
            document.Save(newFileName, FormatType.Doc);
        }

 

给文档加密码保护
        public static Stream SetDocProtect(byte[] docContent, string key)
        {
            var mem 
= new MemoryStream(docContent);
            mem.Seek(
0, SeekOrigin.Begin);

            IWordDocument document 
= new WordDocument(mem, FormatType.Automatic);
            document.Protect(ProtectionType.AllowOnlyFormFields, key);
            var outMem 
= new MemoryStream();
            document.Save(outMem, FormatType.Doc);
            outMem.Seek(
0, SeekOrigin.Begin);
            
return outMem;
        }

 

在书签位置创建一个表格
        public static IWTable ReplaceTable(WordDocument document, string bookmarkName, DataTable data, string mergeColName , List<List<string>> mutilTableCaption)
        {
            
if (document == nullthrow new ArgumentNullException("document");
            
if (bookmarkName == nullthrow new ArgumentNullException("bookmarkName");
            
if (data == nullthrow new ArgumentNullException("data");
            
if (data.Columns.Count < 1throw new ArgumentNullException("data");
            
            
int captionCount = mutilTableCaption != null && mutilTableCaption.Count > 0 ? mutilTableCaption.Count : 1;
            WTable table 
= new WTable(document, true);

            table.ResetCells(data.Rows.Count 
+ captionCount, data.Columns.Count);

            
for (var colCount = 0; colCount < captionCount; colCount++)
            {
                
for (var col = 0; col < data.Columns.Count; col++)
                {
                    var paragraph 
= table.Rows[colCount].Cells[col].AddParagraph();

                    var caption 
= data.Columns[col].ColumnName;
                    
if (mutilTableCaption != null && mutilTableCaption.Count > 0)
                        caption 
= mutilTableCaption[colCount][col];
                    var text 
= paragraph.AppendText(caption);
                    paragraph.ParagraphFormat.HorizontalAlignment 
= Syncfusion.DocIO.DLS.HorizontalAlignment.Center;
                    text.CharacterFormat.FontName 
= "宋体";
                    text.CharacterFormat.Bold 
= false;
                    text.CharacterFormat.FontSize 
= 10.5f;
                }
            }

            
for (var row = captionCount; row <= data.Rows.Count; row++)
                
for (var col = 0; col < data.Columns.Count; col++)
                {
                    var paragraph 
= table.Rows[row].Cells[col].AddParagraph();
                    var text 
= paragraph.AppendText(data.Rows[row - captionCount][col] + "");

                    text.CharacterFormat.FontName 
= "宋体";
                    text.CharacterFormat.FontSize 
= 9f;
                    
double val = 0;
                    
if (double.TryParse(text.Text, out val))
                    {
                        text.Text 
= Math.Round(val, 2+ "";
                        
//align right
                        paragraph.ParagraphFormat.HorizontalAlignment = Syncfusion.DocIO.DLS.HorizontalAlignment.Right;
                        table.Rows[row].Cells[col].CellFormat.VerticalAlignment 
= VerticalAlignment.Middle;
                        table.Rows[row].Cells[col].CellFormat.TextWrap 
= false;
                    }
                }
            
//合并单元格,向下合并
            if (!string.IsNullOrEmpty(mergeColName))
                
for (var row = captionCount; row < table.Rows.Count; row++)
                {
                    var cell 
= table.Rows[row].Cells[data.Columns[mergeColName].Ordinal];
                    cell.CellFormat.VerticalMerge 
= CellMerge.Start;
                    var text 
= data.Rows[row - captionCount][mergeColName] + "";
                    
if (row > captionCount)
                    {
                        var priorCell 
= table.Rows[row - captionCount].Cells[data.Columns[mergeColName].Ordinal];
                        var findText 
= data.Rows[row - captionCount - 1][mergeColName] + "";
                        
if (text.Equals(findText))
                            cell.CellFormat.VerticalMerge 
= CellMerge.Continue;
                    }
                }

            BookmarksNavigator bk 
= new BookmarksNavigator(document);
            bk.MoveToBookmark(bookmarkName);

            TextBodyPart body
= bk.GetBookmarkContent();
            bk.DeleteBookmarkContent(
true);

            bk.InsertTable(table);
            
return table;
        }

 

posted @ 2010-02-04 09:36 萧寒 阅读(769) | 评论 (3)编辑
     摘要: select UTL_RAW.CAST_TO_VARCHAR2(DBMS_LOB.SUBSTR(BLOBField)) from TableName; 出处:http://zhouwf0726.itpub.net/post/9689/158090 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.C...  阅读全文
posted @ 2010-01-30 22:48 萧寒 阅读(11) | 评论 (0)编辑

对某个控件的事件进行编程;如,需要将当前运行期的按钮替换掉,并且保留它的原始事件引用;方法如下:

 

 测试代码

 看不到图的请直接copy code

 

代码
        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show(
"click by " + ((Button)sender).Name);
        }

        
public void button2_Click(object sender, EventArgs e)
        {
            
//调用button1 的click事件,并传递参数
            CalleventRaiseEvent(button1, "Click", button1, null);
        }

        
private void button3_Click(object sender, EventArgs e)
        {
            
//构造个新的按钮
            var btn3 = new Button { Name = "btnTest_createNew", Text = "新按钮", Parent = this,
                Left 
= button1.Left + button1.Width + 10, Top = button1.Top, Visible = true };
            
//btn3.Click += (s, a) => CalleventRaiseEvent(button1, "Click", button1, null);
            
//将旧按钮事件放到新按钮上去
            ReplaceEvent(button1, btn3, "Click");
            
//删除旧按钮
            button1.Dispose();
            button1 
= null;
        }
        
/// <summary>
        
/// 替换事件到控件
        
/// 必须保证 EventHandler 类型一致,否则会失败
        
/// </summary>
        
/// <param name="sourceControl">原控件</param>
        
/// <param name="destControl">目标控件</param>
        
/// <param name="eventName">事件明</param>
        public void ReplaceEvent(Control sourceControl, Control destControl, string eventName)
        {
            
if (sourceControl == null || destControl == null || string.IsNullOrEmpty(eventName))
                
throw new NullReferenceException();

            Type type 
= sourceControl.GetType();
            PropertyInfo propertyInfo 
= type.GetProperty("Events", BindingFlags.Instance | BindingFlags.NonPublic);
            var eventHandlerList 
= (EventHandlerList)propertyInfo.GetValue(sourceControl, null);
            FieldInfo fieldInfo 
= (typeof(Control)).GetField("Event" + eventName, BindingFlags.Static | BindingFlags.NonPublic);
            Delegate d 
= eventHandlerList[fieldInfo.GetValue(null)];
            
if (d != null)
            {
                
foreach (Delegate di in d.GetInvocationList())
                    destControl.GetType().GetEvent(eventName).AddEventHandler(destControl, d);
            }
            
else
                
throw new InvalidCastException("无效的事件转换!");
        }
        
/// <summary>
        
/// 调用事件方法
        
/// </summary>
        
/// <param name="control">目标控件</param>
        
/// <param name="eventName">方法名</param>
        
/// <param name="args">方法参数</param>
        public void CalleventRaiseEvent(Control control, string eventName, params object[] args)
        {
            
if (control == null || string.IsNullOrEmpty(eventName))
                
throw new NullReferenceException();

            Type type 
= control.GetType();

            EventInfo eventInfo 
= type.GetEvent(eventName);
            MethodInfo methodInfo 
= eventInfo.GetRaiseMethod();
            
if (methodInfo != null)
                methodInfo.Invoke(
this, args);
            
else
            {
                PropertyInfo propertyInfo 
= type.GetProperty("Events", BindingFlags.Instance | BindingFlags.NonPublic);
                var eventHandlerList 
= (EventHandlerList)propertyInfo.GetValue(control, null);
                FieldInfo fieldInfo 
= (typeof(Control)).GetField("Event" + eventName, BindingFlags.Static | BindingFlags.NonPublic);
                Delegate d 
= eventHandlerList[fieldInfo.GetValue(null)];
                
if (d != null)
                {
                    
foreach (Delegate di in d.GetInvocationList())
                        di.DynamicInvoke(args);
                }
                
else
                    
throw new NullReferenceException("无效的事件激发!");
            }
        }

 

 

posted @ 2010-01-25 12:38 萧寒 阅读(1220) | 评论 (6)编辑
1:
楼主:我喜欢上了一个比我小6岁的女孩,还在上初中,真是造孽啊。
暴强回复:把喜欢两字去掉才真是造孽。
2:
楼主:我把我家的狗给揍了!地震它也不告诉我,平时叫得那么欢,刚才地震时竟像没事似的在窝里睡觉!
回复:唉,毕竟不是亲生的……
3:
楼主:老婆生了个女娃,非常可爱,求各位帮爱女起个有气势的名字,鄙人姓成。
回复:成鸡思汉。
4:
楼主:给我一个女人,我就能创造出一个民族!
回复:嗯,给你一头母猪,明年的肉价就能下跌!
5:
楼主:上大学我跳过课、挂过科、甩过人、被甩过、打过架、记过过、破过处……哎,能干的我都干过了~
回复:你死过吗?
6:
楼主:请用一句话形容中国国家地震台。
回复:事后诸葛亮,事前猪一样!
7:
楼主:大家都来讲一个开头KB,中间好笑,结局悲惨的故事。譬如从前有个鬼,放了个屁,然后死了。
回复:遇到芙蓉姐姐,爱上芙蓉姐姐,娶了芙蓉姐姐……
8:
涯楼主:每天对着单位那群白痴说话让我感到前途很渺茫……
回复:幸福吧你~因为对牛弹琴并不可怕,可怕的是一群牛每天对着你弹琴!
9:
楼主:深圳南头一卖菠萝的女摊贩情急之下咬下城市管理者叔叔的小JJ……
回复:哼!你不让我生活,我就不让你享受生活!!!
10:
楼主:其实牛顿只是幸运地发现万有引力定律,要是早生三百年,我也可以!
回复:的确是幸运儿,因为砸到他脑袋上的是苹果,而砸到可怜楼主脑袋上的不是榴莲就是椰子……
11:
楼主:是被人叫大叔惨还是叫弟弟惨?
暴强回复:大叔你弟弟出来了。
12:
楼主:城市管理者增加新武器来抓流浪狗!
暴强回复:本是同根生,想煎何太急。
13:
楼主:为什么越来越多人不想要小孩呢?
暴强回复:北京派来的高官说了,要从娃娃抓起。
14:
楼主:今天见男网友对方一直暗示想上床,想问:难道现在网友见面就是为了上床?
暴强回复:网友见面不上床?你开什么玩笑,大家都这么忙。
15:
楼主:一学生,成绩年年倒数第一,常与人打架,按领导要求老师想给学生好 听一点的期末评语,怎么写啊?
暴强回复:该生成绩稳定,动手能力强。
16:
楼主:通过海南矿泉水喝死人事件,可以看到中国的食品安全堪忧,矿泉水也 能喝死人?不是有QS标志吗?
暴强回复:弱弱的问一下,QS是不是去死的意思?
17:
楼主:男人你要李宇春还是章子怡?
暴强回复:一个公鸡,一个野鸡,都不选
18:
楼主:养条狗和养一个男人哪个合算?
暴强回复:大婶,即使你能把男人当狗使,但你敢把狗当男人使不?
19:
楼主:李宇春和芙蓉姐姐同时掉水里,你手里有一块砖,你砸谁?
暴强回复:谁救砸谁。
20:
论坛楼主:我有一百万,想买一辆车,大家给个建议吧。
论坛回复:你可以卖30辆QQ,组个车队开,一会排成S型,一会排成B型。
21:
论坛楼主:王小丫跟陈章良结婚,请用四个字评论。
论坛回复:丫从良了!
22:
论坛楼主:大家说我长得像不像伍佰?
论坛回复:只有一半像! (二百五??!!)
23:
论坛楼主:昨晚遛狗时俺们家大藏獒和小树林边一秃毛野狗咬起来。干!没想到藏獒竟然大败给一条草狗!!!
论坛沙发:****,爷秃之前,他们都叫我狮子!
24:
论坛楼主:大家猜猜我是哪个国家的混血儿^_^
论坛回复:中国人+变形金钢!
25:
论坛楼主:女友总说自己胸小,我觉得还可以啊,请论坛GG们帮忙鉴定一下~
论坛沙发:后背上长俩青春痘!
26:
论坛楼主:假如我有一亿人民币,我就可以贷款在汤臣一品买房子了!
论坛回复:嗯,不过你还要先借钱交物业费~
27:
论坛楼主:他今天山盟海誓说我是他生命中的一部分,我是他身体中的一部分,如果没了我,他就活不下去啦~
论坛沙发:我的前男友也是这么说的,后来我才知道,我是他盲肠、阑尾、仔耳、六指这类可有可无的玩意儿!
28:
论坛楼主:老娘我简直太有钱了,我该给保姆买辆什么车呢?
论坛回复:那就要看她跟你老公发展到什么关系了~
29:
论坛楼主:该死的理发店把我头剪坏了!大家出点损招,要求破坏性越大越好,动静越小越好,因为是我一个人去。
论坛地下室:半夜三更,月黑风高,静静地、轻轻地,一个人吊死在理发店门口……
30:
论坛楼主:我得了健忘症怎么办?
论坛回复:那岂不是很爽?每天早晨醒来发现睡在自己身旁的都是不同的女人~
31:
论坛楼主:你小时候曾幻想长大以后什么样的场景会让你在众人面前出尽了风头?
论坛板凳:挑一担粪上街,看谁不顺眼就迎面给他泼一瓢!
32:
论坛楼主:为什么pol.ice抓坏人时都要鸣警笛?难道不怕坏人老大远就听到跑了?
论坛沙发:上级单位来检查之前一般都会事先通知下级单位的~
33:
论坛楼主:为什么生下的孩子要跟父亲一个姓?
论坛沙发:因为取款机里吐出的钱归插卡人所有。
34:
论坛楼主:帅有个屁用——到头来还不是被卒吃掉!
论坛回复:帅有士陪,有炮打,有马骑,有车坐,有相暗恋……帅怎么不好?!!
35:
论坛楼主:征集骂人最狠且不露脏字的一句话。
论坛回复31:你妈生你的时候是不是把人扔了,把胎盘养大了?
36:
论坛楼主:为什么胡主席访问日本,日本方面比较冷淡,甚至机场连欢迎标语都没挂?
论坛沙发:怎么挂?热烈欢迎中国老朋友来日?  
37:
论坛楼主:你们女人大夏天的戴胸罩不热吗?
论坛回复:我们不带你们会热……
38:
论坛楼主:我新买了一处庄园,有多大说出来吓死你——我开车绕一圈足足用了两个半小时!!!
论坛沙发:嗯,以前我也有这么一辆破车~
posted @ 2010-01-15 21:53 萧寒 阅读(45) | 评论 (1)编辑

1.现在女人真伟大。不知不觉肚子大、有了孩子没有爸!
2.小时候我们把玩具当朋友、长大了朋友拿我们当玩具。 
3.你不能让所有的人满意,因为不一定所有的都是人。 
4.人生就象卫生纸、没事尽量少扯、!

5.有老公怎么的? 有守门员球还进呢!
6.谁是谁老公? 都他妈临时工!

7.如果你看到面前的阴影,别怕,那是因为你的背后有阳光! 
8.踏遍青楼人未老,请用汇仁肾宝

9.最穷无非讨饭、不死终会出头
10.时间是最好的老师,但遗憾的是——最后他把所有的学生都弄死了
11.别总拿你那老百姓的身份给我讲述那B社会的故事 !
   你再牛逼百度咋搜索不到你呢?
   你再有劲你能憋住尿吗? 
12.在任何状况下,不能玩弄别人,玩人必被人玩。

   你再有心眼,也不是最厉害的那个。 
13.世界上最动听的话不是我爱你,而是你的肿瘤是良性的!
14.唾沫是用来数钞票的,而不是用来讲道理的
15.不该看的不看,不该说的不说,不该听的不听,不该想的不想,
   请专心致志的打你的酱油 
16.男人的谎言可以欺骗女人一夜 女人的谎言可以欺骗男人一生
17.如果可能的话,更强一些,宁可强的让人羡慕,也不能弱得让人可怜!

18.世界上唯一不用努力就能得到的只有年龄!

19.不要吹牛逼、请把牛逼还给牛、因为牛也需要性生活!

20.大起大悲看清自己、 大起大落看清朋友。

21.我们只有一个地球,所以大家要爱护地球;
   地球上只有一个我,所以大家也要爱护我!

22.有钱不一定有道、敢摸不一定敢草。

23.开心了就笑,不开心了就过会儿再笑

24.名花虽有主、我来松松土。 名花有主,锄头无情...

25.向新朋友介绍女友时,请搂着她的腰,而不是站在一旁用手指点

26.走的最快的是最美的风景 伤的最深的是最真的感情

27.人生最大的悲哀,并不是在于你得不到或者失去的,而是你根本不知道你自己要的是什么!

28.长大后之所以这么努力、只是因为小时候吹过的牛逼!

29. 所谓成功的女人就是白天特NB,晚上B特N

30.假如有个人愿在自己身边,就算没有任何语言只是在身边,我也觉得是一种幸福,即使失去了一切,只要停下脚步看一下四周,一定会有某个人在你看得见的地方。请别伤心、不要绝望,无论如何也请别忘记,自己决不是孤单一人的.

31.在你头上拉屎的未必是敌人 把你从屎堆拉出来的未必是朋友

32.我不能做到我所希望的一切,但是我应该做好我可以做到的一切.

33.有 尿 当 尿 直 须 尿.莫 等 无 尿 空 抖 鸟

34.无论什么时候打电话,摘起话筒的时候请微笑,因为对方能感觉到.

35.上帝给了我们七情六欲,我们却把它们变成了色情和暴力

36.拥有一颗知足的心,知足者常乐。若想得到快乐,就别让自己过得无精打采,想要获得快乐,不是增加财富,而是降低欲望。

37.找一个你爱聊的人结婚 , 因为当年龄大了以后,你会发觉喜欢聊天是一个人最大的优点。

38.只要锄头舞的好,哪有墙角挖不倒。

39.至今为止,地球仍在我的脚下.

40.心若没有栖息的地方,到哪里都是在流浪!

41.不要相信接吻时从不闭眼的伴侣。

42.最好的关系存在于对别人的爱胜于对别人的索求之上。

43.没能耐的看人装逼,有能耐的跟人装逼

44.虽然我不在江湖,但是江湖却有我的传说

45.人不可以把钱带进坟墓。 但钱可以把人带进坟墓。

46.废话是人际关系的第一句

47.看透别说透、继续做朋友。

48.吸引住男人的办法就是让他一直得不到;吸引女人的办法正好相反,就是让她一直满足。

49.男人,上半身是修养,下半身是本质;女人,上半身是诱饵,下半身是陷阱。

50.在街上看美女,目光高一点就是欣赏,目光低一点就是流氓。

51.女孩买很多很多漂亮衣服穿,就是为了吸引男孩的目光,但男孩想看的,却是不穿衣服的女孩。

52.男人都喜欢江山,是因为他们觉得只有整个江山才能让他们的女人心动

53.小人物的时间是最不值钱的 他可以和一个菜贩为了两毛钱而斤斤计较

54.当我们把情感更多的 放在 友情 爱情上 可往往最后 能让你感动的 只有亲情

55.所谓忠诚、只是因为背叛的筹码不够!

56.你叫我滚,我滚了,你叫我回来,对不起滚远了。

57. 想知道一个人的内心缺少什么,不看别的,就看他炫耀什么。想知道一个人自卑什么,不看别的,就看他掩饰什么、

posted @ 2010-01-15 15:37 萧寒 阅读(36) | 评论 (0)编辑
     摘要: RtlAdjustPrivilege(SE_DEBUG_PRIVILEGE,1,0,NULL);这个函数封装在NtDll.dll中(在所有DLL加载之前加载),被微软严格保密,就是说你在MSDN上查不到关于他的任何信息。.常量SE_BACKUP_PRIVILEGE,"17",公开.常量SE_RESTORE_PRIVILEGE,"18",公开.常量SE_SHUTDOWN_PRIVILEGE,"19"...  阅读全文
posted @ 2010-01-13 13:54 萧寒 阅读(111) | 评论 (0)编辑
     摘要: Never do a "catch" exception and do nothing. If you hide an exception, you will never know if the exception happened or not.In case of exceptions, give a friendly message to the user, but log the actu...  阅读全文
posted @ 2010-01-12 11:13 萧寒 阅读(879) | 评论 (3)编辑
     摘要: ReSharper 是个非常好的VS 插件,我一般是使用4.1版本,尝试过4.5版本,但是有很多问题,最近看到了5.x版本,试了下,功能更多而且相对稳定了许多,决定升级;一直到4.5都有keygen,5.0则只搜索到一个注册码,而且注册的时候还会到局域网验证;只能有一台机器可以用它,中午就研究了下它,写了个注册机;命令行方式的,输入Name后,算出注册码,自动存到剪切板内,到时直接粘贴就行了;注册...  阅读全文
posted @ 2010-01-08 12:57 萧寒 阅读(597) | 评论 (7)编辑
     摘要: 本人做开发,偶尔重装下系统,比如换电脑了;或者是visual studio 该升级了,或者是系统坏掉了;每次装好后,我都会做备份,那么我是这样做的。1、分区我分区原则是C盘足够大,比如50g或者是100g,这么大是为了直接对该区备份,并且必备软件都装在C区,以前经常将软件放到D区,但是每次恢复系统后,这些软件可能就坏掉了;得不偿失,干脆C区都装必备软件;驱动器一般我会分为3个区,D区作为工作用的,...  阅读全文
posted @ 2010-01-07 10:07 萧寒 阅读(251) | 评论 (4)编辑
     摘要: 收藏的XP的一些特殊文件夹,使用方法:在任意位置用以下文件名创建文件夹即可。目前还有些可以在WIN7下正常使用,以此作为一个存档,便于日后查询。 回收站.{645ff040-5081-101b-9f08-00aa002f954e} 拨号网络.{992CFFA0-F557-101A-88EC-00DD010CCC48} 打印机.{2227a280-3aea-1069-a2de-08002b30309...  阅读全文
posted @ 2010-01-07 09:32 萧寒 阅读(106) | 评论 (0)编辑
     摘要: 1、windows7内置语音识别2、文本到语音转换增加了 Microsoft Lili - Chinese(China) ,支持中英文混合朗读3、女声、部分词组基本发音准确以上让我有做个小程序的冲动;如下:1、引入SpeechLib.dll2、创建form3、编写代码[代码]以上功能支持朗读文本框内文本,支持讲文本输出语音文件;参考应用场景:1、尝尝鲜,再删除2、将小说文本转化为音频放MP3内去听...  阅读全文
posted @ 2010-01-04 23:58 萧寒 阅读(232) | 评论 (2)编辑
     摘要: Windows 7系统中隐藏了一个秘密的“God Mode”,字面上译为“上帝模式”,但似乎叫它“万能模式”更贴切一些。God Mode其实就是一个简单的文件夹窗口,但包含了几乎所有Windows 7系统的设置,如控制面板的功能、界面个性化、辅助功能选项...方方面面的控制设置,用户只需通过这一个窗口就能实现所有的操控,而不必...  阅读全文
posted @ 2010-01-04 23:45 萧寒 阅读(56) | 评论 (0)编辑
     摘要: 检查注册表如下位置,看看UserAgent定义是否过长。"HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent\Post Platform""HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\User Agent\...  阅读全文
posted @ 2009-12-22 09:12 萧寒 阅读(50) | 评论 (0)编辑
     摘要: 字符 说明 示例 输出 C 货币 string.Format("{0:C3}", 2) $2.000 D 十进制 string.Format("{0:D3}", 2) 002 E 科学计数法 1.20E+001 1.20E+001 G 常规 string.Format("{0:G}", 2) 2 N 用分号隔开的数字 string.Format("{0:N}", 250000) 250,000.0...  阅读全文
posted @ 2009-10-11 15:14 萧寒 阅读(111) | 评论 (0)编辑