CodeProject引用工具






4.90/5 (23投票s)
2003年6月3日
6分钟阅读

170548

1058
用于存储和检索引语并在签名中使用的简单工具。
引言
注意:这不是一篇文章,而是为在签名中使用引语的认真的CP用户提供的简单工具。坦率地说,我怀疑您在这里能学到任何新东西。
经常访问休息室或留言板的人都会注意到其他CP用户在签名中使用的精彩引语。有趣的是,这些引语大多来自其他CP用户发布的消息!有些人还经常用新的引语更新他们的签名。
我也尝试这样做。但是,使用CP当前的签名选项有点困难。以下是我尝试的3个选项。其中两个选项来自CP,另一个来自DesktopBob应用程序。
选项1:所有消息的默认签名(我的个人资料 -> 我的设置)
缺点:此选项不提供格式工具栏。
选项2:更改任何新消息上的默认签名
缺点:您无法即时预览。为此,您必须使用“预览”按钮。即使您进行修改并准备发布时,有时您会收到CP的复活节彩蛋“操作意外失败。请重试。”
选项3:通过DesktopBob更改任何新消息上的默认签名
缺点:没有图形用户界面(GUI)可以将引语添加到签名XML文件中。因此,您必须打开XML文件并逐个添加每个引语。选项4::-)
开玩笑。吹嘘够了。
然后就有了CPQ,它提供了一种简单的方法来存储引语(XML格式),检索它们,并将这些引语用于签名中,以便可以在CP、DesktopBob和Outlook中使用。
主要特点
- 所有引语都存储在XML文件中。
- 引语的多个集合。(例如:CPiansQuotes.html、DubyaQuotes.html)
- 引语支持HTML(如粗体、下划线、URL支持)
- 从集合中添加和删除引语。
- 从集合中随机选择引语。
- 引语的HTML源选项。
- 将引语以文本和HTML格式复制到剪贴板。
- 将引语以文本和HTML格式复制到Outlook签名位置。
最初的想法
我的一位前同事James Huckaby开发了一个类似的工具(不支持HTML和XML),用VC++编写,但功能更多。
技术详情
类库
这是一个简单的应用程序。我使用了`CollectionBase`类作为`QuotesCollection`,它包含派生自`Object`的Quotes。我将这两个类封装到一个类库中。public class QuotesCollection : CollectionBase
public class Quotes : Object
GUI
对于GUI部分,我使用了HTMLEditor,它是MSHTML的包装器,MSHTML是Internet Explorer的渲染部分(也是IE最大的单个组件)。它由Tim Anderson用C#编写。
注意:“HTML编辑器”需要Microsoft.Mshtml.dll主互操作程序集。VS.Net将其安装在Program Files\Microsoft.Net\Primary Interop Assemblies中。
我使用了一些命令标识符作为参数传递给IHTMLDocument2::execCommand,它在当前HTML文档上执行命令。
我的语法很差,不像Marc Clifton或Mike Dunn那样擅长叙述。所以,你们为什么不仔细研究一下代码,看看我都做了些什么。
如何使用此工具:
GUI非常简单。只需运行应用程序,通过“编辑”->“添加新引语…”菜单项(快捷键Ctrl + Q)添加所有引语。新添加的引语将显示在“引语”选项卡下,它实际上是一个HTML编辑器。因此,如果您想将引语HTML化,请使用工具栏中可用的选项(字体名称、大小、颜色等)。
要查看“HTML源代码”,请单击HTML选项卡。如果您想使用HTML化的引语,只需从HTML选项卡下文本框控件中HTML BODY标签内的文本中复制即可。在“编辑”->“复制”菜单下有更多选项。
示例
实际引语:(乔治·W·布什)
“我是在西部长大的。德克萨斯州西部。它离加利福尼亚很近。在许多方面都比华盛顿特区离加利福尼亚更近。”
——《洛杉矶时报》,2000年4月8日
HTML源代码
<P align=center>
"<FONT face=Tahoma color=blue size=4><STRONG>I was raised in the
West.</STRONG></FONT>
<STRONG>The west of Texas</STRONG>. <FONT face="Fine Hand"
color=black><FONT size=4><STRONG>
It's </STRONG><FONT face=Verdana
color=green><U>pretty close to California.</U></FONT></FONT></FONT>
<FONT face=Verdana
color=red size=4><STRONG>In more ways than Washington, D.C.,
is close to California.</STRONG></FONT>" --<EM>
<FONT face=Harrington color=fuchsia
size=4><STRONG>
<A href="http://www.latimes.com">%20 los/ Angeles Times</A>,
April 8, 2000</STRONG></FONT></EM> </P>
HTML化引语
我是在西部长大的。德克萨斯州西部.它离加利福尼亚很近。在许多方面都比华盛顿特区离加利福尼亚更近。"--洛杉矶时报,2000年4月8日
桌面鲍勃用户
我使用了DesktopBob用于其签名轮换工具的相同XML格式。
因此,通过CPQ添加所有喜欢的引语,并将整个XML文件提供给DesktopBob。
Outlook用户(2000版)
使用CPQ,您可以将引语直接发送到Outlook签名位置。
选择您想在Outlook中使用的引语,然后通过“复制”->“引语到Outlook (HTML)”或“引语到Outlook (文本)”菜单选项将其复制到Outlook。
- 在Outlook中,转到“工具”菜单,单击“选项”,然后单击“邮件格式”选项卡。
- 在“以这种消息格式发送”框中,单击您想要使用签名的消息格式(纯文本或HTML)。
- 在“签名”组下,从“默认使用此签名”组合框中选择“CPQSig”。
怪癖
- 禁用HTML控件中的上下文菜单。
- 应用程序关闭时,托盘图标不会立即从任务栏通知区域消失。
- HTML复制选项需要焦点在HTML选项卡中。
- 在字体对话框中选择字体大小时,需要与HTML样式同步。(例如:使用小于3或4的大小)
感谢
- 检测另一个进程是否正在运行并将其带到前台 - Marc Clifton
- Tim Anderson的HTMLEditor控件
- Windows Forms FAQ
- 感谢所有在C#论坛中回答我愚蠢问题的人。
待办事项列表
- 定时将随机引语写入Outlook签名位置。
- MDI支持
- 拼写检查支持。
- 关闭HTML的选项。这适用于不喜欢HTML格式的人。
- 修复您发现的错误。
最后但同样重要的是
这是我在CP的第一个项目,也是我的第一个托管项目。不要被我的MFC编码习惯吓到。如果您发现任何错误(您一定会发现),或者您有任何增强建议,请在此页面上留言。希望您喜欢CPQ!
更新历史
2003年6月24日:1.1版本发布
- 为托盘图标添加了新的菜单选项。
- 随机引语等于随机引语 + 复制引语到剪贴板(文本)
- 添加新引语
- 打开集合
- 在“文件”->“打开”菜单中添加了从网页打开引语集合的选项。
- 从网页打开集合对话框
提示:仅供娱乐,在此输入CP的RSS提要;)
- 添加了检查先决条件的代码
- 检查.NET Framework
- 检查Visual Studio.NET
- 添加了将整个XML文件复制到DesktopBob和AutoSig应用程序位置的支持。
- 为配置选项使用了新表单,并将其存储在配置文件(XML)中。
2003年6月3日:第二版发布
修复了以下错误
- “随机”函数未能正确更新引语计数。
- 复制子菜单项排序正确。
- 添加新引语在HTML编辑器控件中正确显示。
在新引语对话框中发现了一个新错误,它会弄乱新添加的引语。我稍后会修复它,所以暂时我注释掉了那段代码。