Desktop Bob - 即时CP通知






4.84/5 (34投票s)
2002年10月12日
7分钟阅读

338352

1240
一个用于访问CodeProject并获得Codeproject帖子即时通知的工具。
Desktop Bob
一个用于访问 CodeProject 并实时接收 CodeProject 帖子通知的工具。
告别手动刷新网页吧!现在你终于有了一个工具,可以和 Nishant 的发帖速度一较高下!
使用 Desktop Bob,你可以继续工作,当有新内容时,Bob 会在你的系统托盘中提醒你。在详细介绍之前,值得一提的是,Desktop Bob 是我在业余时间开发的,是为了满足我自己的需求。但我认为大多数 CP 用户也会对此感兴趣。
我不会深入讲解如何使用 Desktop Bob 的枯燥细节,因为它非常简单,每个人都能立即学会安装和使用。相反,我将向你展示 Desktop Bob 的主要功能以及我在开发过程中做出的设计指导和决策。对于 .NET 和 C# 初学者来说,它也是一个很好的小型真实世界应用程序示例,展示了如何
- 使用 Web 服务
- 异步调用 Web 服务
- 系统托盘通知
- 隔离存储
- 保存/读取用户偏好设置
- 使用 ListView
- 使用 Windows 窗体布局管理器
- 创建类似 Messenger 的弹出窗口
- 使用计时器
论坛消息监控

Desktop Bob 将持续监控 CodeProject 的论坛。下面显示了 CodeProject 的一些最新添加的内容。
快速论坛访问

现在,创建新帖子或打开论坛只需点击一下即可!
偏好设置和过滤器

- 你可以选择是单击还是双击显示 Desktop Bob 的窗口。
- 你可以选择是否弹出通知(Messenger 风格)
- 你可以选择一个 WAV 文件作为通知声音。如果此字段留空,Desktop Bob 将保持静默。我强烈建议你使用 ICQ 自带的 _ALAdmin.wav_。那是 Bob 的声音!
- 你可以在帖子监视器窗口中过滤消息
- 所有消息
- 论坛消息加上更新的文章(“忽略文章消息”)
- 仅论坛消息
“新帖子”通知
旧版本样式
![]() |
![]() |
左侧显示的是 Desktop Bob 的正常状态:没有新帖子添加到 CP。它还显示了 Desktop Bob 的工具提示。右侧显示的是带有气球的 Bob:这意味着 CodeProject 中有你感兴趣的内容已被添加。当然,Bob 只会通知你过滤后的消息。因此,如果你忽略了文章,它就不会通知你新文章的出现。
新的 Messenger 风格通知

此版本仅支持默认位置的任务栏,即屏幕底部。未来版本将支持任意位置的任务栏。数字表示更新帖子的数量。
“新帖子”跟进

当有新帖子时,它们会像上面一样出现,背景为黄色。
签名轮播工具
如果你为 Desktop Bob 提供一个包含你签名的 XML 文件,你可以在托盘图标菜单中选择“随机签名”,Desktop Bob 会将一个随机签名复制到你的剪贴板。
提供的 XML 格式如下:
<signatures>
<sig>This is a signature</sig>
<sig>This is another signature</sig>
<sig>This is yet another signature</sig>
</signatures>
Desktop Bob 具有“签名文件验证”功能:如果你提供一个无效的 XML 签名文件,Desktop Bob 将崩溃。没什么大不了的,只需更正文件并重新启动 Desktop Bob。有关更多详细信息,请参阅“计划中的未来功能”。
Smart ClicketyTM
如果你使用 Codeproject 有一段时间了,你应该知道 Clickety 是什么。你可能还被 Clickety 警察抓过。如果没有,Clickety 就是论坛中那些时尚的链接之一。Codeproject 的消息编辑本身就有一个 Clickety 功能,但有时你可能想要一个带有不同文本的 Clickety,而不是默认的。编辑 Clickety 是件麻烦事,尤其是对于不那么简单的 URL。Smart Clickety 解决了这个问题。URL 应该在剪贴板中,生成的 Clickety 也会被放入剪贴板。生成的 Clickety 看起来像 这个链接[^]
HTMLizerTM
当你发布代码时,特别是 C++ 代码,有时会出现一些与 HTML 不兼容的字符,例如 &
、<
和 >
。HTMLizer 会获取剪贴板中的内容,允许你对其进行编辑,如果你点击确定,它会为你提供一个 HTML 友好的版本到剪贴板。这对于在论坛上发布代码非常有用。这样,就可以快速地将代码发布到文章和消息中
if (clip != null)
{
clip = clip.Replace("&", "&");
clip = clip.Replace("<", "<");
clip = clip.Replace(">", ">");
Clipboard.SetDataObject(clip);
}
设计决策和考虑
在开发 Desktop Bob 时,我考虑了做更多的事情:创建一些 HTML 抓取代码并创建一个非常好的工具来访问 CP 并赋予你强大的功能,这很容易。我没有问 Chris,但我可以想象他的回答:这不会被视为良好行为。Chris 为我们所有人构建了一个很棒的网站,他的一部分(或大部分?)收入来自广告商。如果我是 Chris,我不希望有人创建一个降低我收入的工具。
因此,开发 Desktop Bob 的主要指导原则是:每一次 CP 交互都必须通过 WebService 或浏览器进行。这样,我们就不会干扰 CP 的正常运行,并继续做一个好的访客。如果 Chris 决定扩展 CodeProject 的 Web 服务,我将很乐意扩展此工具,使其能做更多的事情。
稳定性和资源使用
这是一个轻量级的 .NET 应用程序。这是我的第一个桌面 .NET 应用程序,我可以肯定地说,它对系统的影响很小,尽管应用程序的工作集在任务管理器中看起来相当大(20MB)。我连续使用了几天,似乎没有内存泄漏、资源泄漏或其他稳定性问题。
在 AMD Athlon 650 MHz、256 MB RAM 的机器上,它对整体系统性能没有明显影响。它似乎相当稳定,尽管没有经过任何正式的压力测试。连续使用几天后,任务管理器显示 CPU 使用时间仅为 15 秒。如果你打开 CP 主页,花费的时间可能会更多。
计划中的未来功能
我有一些想法,以及/或者一些人提出的建议,将在我拥有更多空闲时间时实现。
- 一个用于新闻源的 RSS 浏览器
- 一个带有自动预览和拼写检查(使用 Word 的拼写检查器)的消息编辑器
- 签名文件验证
- 签名文件编辑器
- 主窗口中用于更新的可见计时器(也许在状态栏上?)
- 改进的过滤器
- 创建一篇面向初学者的“它是如何工作的”文章
支持的平台
我在 Windows XP 和 Windows 2000 上测试了此程序。但我有理由相信它也能在 Windows 98/ME 上运行。如果你成功在这些平台上运行它,请给我留言!
一个小贴士
Desktop Bob 会为某些 Codeproject 的交互启动浏览器实例。因此,如果你将 Internet Explorer 设置为默认浏览器,请检查它是否会重用浏览器窗口,因为这会影响 Desktop Bob 在启动多个帖子时的行为。在 IE 中,转到工具/Internet 选项/高级,然后选中/取消选中此选项。

更新日志
- 27/10 - 版本 1.3。添加了一些剪贴板操作工具:HTMLizerTM、Smart ClicketyTM 和签名轮播工具。还在文章中添加了更改日志。
- 22/10 - 版本 1.2。修复了在显示新的 Messenger 风格通知后立即启动 IE 时出现的错误。
- 20/10 - 版本 1.1。增加了对声音通知和 Messenger 风格通知的支持。更新速度更快。关于框已上线!
- 12/10 - 初始版本
标准免责声明
如前所述,我在我的机器上测试了它,它运行良好。自行承担使用风险:如果你使用它,可能会丢失数据、利润,出现硬件问题,导致放射性污染并引发世界核战争。但是,对我来说,它运行良好,从未出现问题。
好吧,本文中的代码可以随意使用。如果你改进了它,请给我留言,以便我保持代码同步。如果你用这段代码赚钱,你就是个天才!你应该得到报酬。只要记得给我发“谢谢”,并给我一些关于赚钱的建议。我不会拒绝你寄给我的任何钱。