65.9K
CodeProject 正在变化。 阅读更多。
Home

Skype4COM 事件处理程序,用于处理 ALL Skype API 消息

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.71/5 (10投票s)

2008年11月16日

CPOL

17分钟阅读

viewsIcon

137611

监视所有 Skype4COM 和 API 消息以用于 Skype,包括命令输入。使用 API 和 Skype4COM 库显示 Skype 消息处理的幕后情况。包括 Microsoft ClickOnce 部署技术以及 ClickOnce 自动更新示例。必备工具!

工作示例

这是一个工作示例,使用 Skype4COM API 方法实时翻译 57 种不同语言的 Skype 聊天,并用 10 种不同语言朗读您的 Skype 聊天消息和联系人状态更改。正如您所看到的,Skype API 非常强大和先进。

Click here for more information

单击此处获取更多信息.

引言

SEHE - Skype4COM 事件处理程序示例

Click Here To Install SEHE using Microsoft ClickOnce Technology

单击任意一张图片,即可使用 Microsoft ClickOnce 技术安装 SEHE

Click Here To Install SEHE using Microsoft ClickOnce Technology

SEHE 随时可以通过“添加/删除程序”从您的控制面板卸载。

以下是此示例显示或可以执行的一些操作

  • 应用程序旁的调试工具
  • 轻松修改文本输出以测试事件或情况
  • 捕获 Skype4COM 1.0.31.0 之后的所有事件
  • 支持 32 位和 64 位 Windows 版本
  • 处理 Skype4COM 歧义问题
  • 如何在项目中包含 Skype4COM
  • 如何使用您选择的 Skype4COM 版本
  • 如何同时使用多个 Skype4COM 版本
  • 如何不注册而使用 Skype4COM
  • 如何打开网页以下载 Skype(如果未安装)
  • 1.0.31.0 API/Skype4COM 已知问题列表
  • 显示 Skype 用户登录时的许多 Skype 属性
  • 显示等待附加逻辑的使用情况
  • 显示非等待附加逻辑的使用情况
  • 如何从应用程序启动 Skype
  • 如何处理程序授权
  • 如何处理多个 Skype 用户的程序授权
  • 显示静默模式的使用情况
  • 如何在 Skype 用户注销时退出
  • 如何在 Skype 程序退出时退出
  • 如何应对/恢复多次 Skype 注销/登录
  • 如何应对/恢复 Skype 程序停止/启动
  • 如何处理 Skype 用户更改和程序授权
  • 如何处理您的应用程序被 Skype 用户拒绝的情况
  • 显示 Skype4COM 的正确恢复和错误逻辑
  • 自动调试并动态自动调用调试器
  • 如何发送 API 命令
  • 如何使用阻塞/非阻塞 API 命令
  • 如何使用 API 预期文本选项
  • 如何使用 API 命令 ID 选项
  • 显示如何使用 Windows 系统计时器逻辑
  • 展示如何使用 Microsoft ClickOnce 技术部署应用程序
  • 展示应用程序部署和安装程序方法
  • 展示如何在“添加/删除程序”中列出您的程序
  • 展示如何从应用程序打开默认浏览器窗口以获取帮助
  • 展示如何使用免费的 Microsoft Visual C# 2008 Express
  • 展示如何避免使用注册表,而是使用 .NET 用户属性
  • 展示 .NET 3.5 和 C# 2008 的使用,两者都是 Microsoft 的最新版本
  • 展示 NotifyIcon 和任务栏逻辑的使用,该逻辑由项目用户设置驱动
  • 展示如何使用 ClickOnce 技术自动更新您的应用程序
  • 展示如何使用 PayPal 捐赠链接
  • 展示如何使用指向您网站的链接。
  • 快速学习与 Skype4COM 接口!

背景

现在您会说“但所有这些复选框和链接都做什么?”

“用户注销时退出”和“Skype 停止时退出”复选框,如果选中,当 Skype 用户注销或 Skype 客户端停止时,此应用程序将退出。

“需要时启动 Skype”复选框,如果选中,当此应用程序启动时,如果 Skype 客户端尚未运行,它将启动。如果“需要时启动 Skype”复选框在此应用程序启动后启动,而 Skype 客户端未启动,它也会被启动。

“启用静默模式”复选框,如果选中,当此应用程序启动时,如果 Skype 客户端已在运行,则会立即发送设置静默模式的请求。如果 Skype 客户端未运行时选中此复选框,则会排队等待设置静默模式,并在此应用程序成功连接到 Skype 客户端后生效。设置静默模式会导致 Skype 客户端不打开任何窗口。静默模式将保持设置,直到工具栏上的 Skype 图标被点击。

“使用自动调试”复选框,如果选中,将为您提供中止、继续或自动调用调试器以调试此代码的选项。这是一种非常好的方法,可以进入调试并查看变量,从而自动查看哪里出了问题。此逻辑也可以保留,并在代码发布给公众时设置为 false,以便用于测试未来版本。当“使用自动调试”未选中时,文本框中只会显示一条错误已发生的邮件。注意:要动态使用自动调试进入调试并显示程序遇到问题的代码,您需要项目文件,并且需要以调试模式运行。

“启动最小化”复选框,如果选中,当此应用程序使用“需要时启动 Skype”复选框启动 Skype 客户端时,将最小化启动 Skype 客户端。只有在进行自动登录时,Skype 客户端才会最小化启动,否则 Skype 客户端窗口需要显示,以便输入 Skype 用户名和密码。

“启动无闪屏”复选框,如果选中,当此应用程序使用“需要时启动 Skype”复选框启动 Skype 客户端时,将启动 Skype 客户端而不显示通常在 Skype 启动时出现的 Skype 闪屏。

“隐藏 API 窗口”复选框,如果选中,则不显示 API 命令、API 错误消息或 API 回复消息。Skype4COM 在后台有一些使用 API 消息的操作。如果您只使用 Skype4COM 方法而不发送 RAW API 命令,您可能不需要看到这些消息,因此这些消息包含在自己的窗口中,以便您可以决定是否需要查看它们。所有 API 复选框以及命令和预期文本框都会根据此复选框隐藏或出现。

“正在登录”复选框,如果选中,将在 Skype4COM 消息窗口和 API 消息窗口中记录消息。如果未选中,则不进行消息记录。这样您可以滚动查看旧消息(如果需要)。这是唯一一个在程序退出时不会保存的复选框。如果保存了,您将以禁用日志记录的方式启动此应用程序,并可能不会意识到这一点。

“始终以 FirstTime = True 启动”复选框,如果选中,将重置 FirstTime 开关,此程序将表现得好像是此 Windows 用户第一次运行此应用程序。有一些首次运行的应用程序逻辑只在应用程序检测到这是此 Windows 用户首次运行时执行,例如立即提示用户使用 Skype 客户端批准此应用程序。通常,一旦为此 Windows 用户(“此 Windows 用户可能有很多 Skype 名称”)完成了第一次成功的连接请求,FirstTime 开关就会设置为 false,并设置一个 30 秒的计时器来警告用户,而不是立即警告。选中此复选框,然后通过删除此 Skype 用户测试的 Skype 用户授权,然后停止并重新启动此应用程序,将使 FirstTime 再次重置为 true,以便您可以测试初始程序授权是如何由 Skype 客户端处理的,很多次,很多种方式。此外,一旦 FirstTime 设置为 True(您可以在此程序初始化时的日志消息中看到这一点),您可以取消选中此复选框(如果需要),以查看 FirstTime 开关再次设置为 false。您可以通过转到 Skype 客户端并执行:工具 -> 选项 -> 高级 -> 管理其他程序访问 Skype 来删除此程序对此 Skype 用户的任何授权,然后单击保存。现在您可以像此程序第一次尝试为该 Windows 用户使用 Skype 客户端一样进行测试。

“始终使用非等待附加请求”复选框,如果选中,将永远不会设置 Skype 附加请求以等待响应。在大多数情况下,这是连接到 Skype 客户端的最佳方法,但是您的应用程序可能希望使用基于 Skype4COM 超时值(通常为 30 秒)的等待附加请求。如果未选中此复选框,它将演示如何等待 Skype 客户端对附加请求的响应(“API 可用后”),并演示如何将该时间延长“在此情况下为 60 秒”并重试,如果初始附加请求超时。通过从 Skype 客户端中删除此程序对 Skype 用户的任何授权记录,然后启动 Skype 客户端,而不登录,并且未选中此复选框,然后启动此应用程序,如果未经 Skype 客户端批准此程序,这将显示并调用此超时逻辑。这是一种查看等待附加和非等待附加请求之间差异的方法。您甚至可以看到使用等待附加请求与非等待附加请求之间的差异,以及等待附加请求如何因为程序是单线程的而挂起 GUI 和程序,直到等待附加完成。

“Click For SaveOnTelephoneBills.com”指向一个新网站,我正在该网站上维护更多 Skype 示例。

“Click To Donate”(点击捐赠)允许您为此示例项目(带源代码)捐赠任何您认为合理的金额,它还展示了您如何使用 PayPal 接受软件捐赠。

“使用阻塞”复选框,如果选中,则使用阻塞发送 API 命令。

“使用命令 ID”复选框,如果选中,则发送命令时使用唯一的数字 10,000 或更大,以便您可以跟踪此程序生成的命令与 Skype 客户端或 Skype4COM 生成的命令。

“保存文本”复选框,如果选中,发送命令后将保留文本,否则文本将被清除。当命令出现在命令文本框中时,按 ENTER 键(光标在命令或预期文本文本框中)即可发送命令。选中时,上次输入的命令和预期文本框中的文本将被保存,并在下次同一 Windows 用户启动程序时使用。

“重试命令超时”复选框,如果选中,将尝试再发送一次命令。没有添加逻辑来检查此程序是否已连接、Skype 客户端是否已登录或已启动,以便您可以看到在这些情况下会发生什么。

“命令文本”任何...API 命令都可以在此处输入,并且只有当光标在命令或预期文本框中且命令文本框包含文本时,按下 ENTER 键才会发送。

“预期文本”将附加到命令中,并与回复一起接收。这有助于在收到回复时携带您程序中可能需要匹配的任何数据。只有当光标在命令或预期文本框中且命令文本框包含文本时,按下 ENTER 键才会发送 API 命令。

复选框值在程序退出前保存(“日志记录”复选框除外),通过使用 .NET 用户设置,它们不使用注册表,但是它们基于每个 Windows 用户 ID,而不是每个 Skype 名称 ID。因此,除了 FirstTime 开关之外,还使用了额外的程序逻辑,当“等待授权”的附加响应在 30 秒后才收到成功附加响应时,Skype 用户将被提示检查 Skype 客户端,以查看此应用程序是否需要批准。此警告消息框将使用 Windows 系统计时器每 60 秒显示一次,直到应用程序被批准或停止。

“点击获取此程序帮助”将打开一个浏览器窗口(“您的默认浏览器”)到论坛,在那里您可以下载包含整个项目的线程,并可以发布关于使用此应用程序的问题或任何帮助请求。

“点击获取 DevZone 帮助”将在单击时在您的默认浏览器中打开 DevZone 主页。

“点击获取 Skype4COM 帮助”将在单击时在您的默认浏览器中打开 DevZone Skype4COM 帮助主页。

“点击获取 API 帮助”将在单击时在您的默认浏览器中打开 DevZone API 帮助主页。

任何这些用户设置都可以设置为 true 或 false,以便它们成为默认的复选框设置,方法是更改“项目 -> 属性 -> 与所选复选框关联的设置”,然后单击“同步”按钮。

此应用程序可以帮助您模拟、收集、查看和测试 API/Skype4COM 的几乎所有功能。它可以非常快速轻松地进行修改,以提供您所需的任何详细信息,并且可以验证您的应用程序是否正在正确处理 Skype 事件。

即使您没有任何使用 C# 语言或 .NET 的意愿,这仍然是一个“必备”工具,可以为您节省大量第三方 Skype 应用程序的故障排除和开发时间。

它可以向您展示有助于使您的第三方应用程序适用于所有 Skype for Windows 客户端和版本的技术,并将帮助您的应用程序对最终用户“坚如磐石”。

请享用,希望这能展示如何与 Skype 客户端接口,以及 C# 编码有多么容易,以及您可以使用 Microsoft Visual C# Express Edition 免费创建应用程序。

此示例还展示了如何使用“Microsoft ClickOnce”技术,结合 WinZIP 自解压程序(有 30 天免费试用),可以创建安装程序文件,这些文件会自动处理安装以及通过“添加/删除程序”进行卸载。

即使您不使用 .NET 或 Visual C#,这仍然是一个很棒的示例,因为它展示了处理 Skype 连接逻辑和授权逻辑的编码技术。

如果需要,Microsoft ClickOnce 方法会在最终用户安装时按用户进行自动安装(如果需要)。

它还处理如何绕过一些歧义问题,并附有关于当前存在问题或错误的 API/Skype4COM 函数的说明。

它对于调试也很有帮助。

如果您想查看用于创建上述exe文件的 ClickOnce 已发布文件,并且不想要源代码或整个项目,只需单击下面的链接即可使用 Microsoft ClickOnce 技术安装

要使用 Microsoft ClickOnce 技术安装 SEHE,请点击此处

此示例的目标是展示从项目设计到使用 Skype4COM 库功能,再到最终用户安装的过程。

构建和分发此项目所用的所有内容都是免费的。

Microsoft Visual C# 2008 Express 版是免费的。
SEHE 可以通过控制面板中的“添加/删除程序”进行移除,并且不需要在相关系统上预先安装或注册 Skype4COM .dll 或 Extras Manager。

即使系统上已注册并安装了另一个版本的 Skype4COM,此程序也将使用 Skype4COM .dll 1.0.31.0。

此程序将在存在期间和移除后,保持系统上已注册的任何 Skype4COM .dll 原样。

要无错误地构建项目,您可能需要在构建时收到有关没有密钥的错误时创建一个测试密钥。要做到这一点,请单击“项目 -> SEHE 属性 -> 签名 -> 创建测试密钥”(输入您选择的密码),然后重新构建项目。如果当前注册的 Skype4COM 版本低于 1.0.31.0,您可以单击 unregister.bat 文件,然后单击 register.bat 文件(两者都包含在 SEHE 文件夹中)来注册 .zip 项目文件中包含的 Skype4COM 1.0.31.0 副本。

MultipleS4CExample.zip 应该**仅**在您安装了 SEHE - Skype4COM 事件处理程序示例**后**使用。这是因为当您从此文件夹运行 SEHE.exe 文件时,它不会检查您的系统是否已安装 .NET 3.5。正常安装 SEHE - Skype 事件处理程序示例会进行此检查,并在需要时自动在您的系统上安装 .NET 3.5,并且运行 SEHE.exe 不会导致运行时错误,因为 .NET 3.5 已安装。这演示了如何快速切换和使用多个 Skype4COM 库版本,仅用于 SEHE.exe 程序,同时保留 Skype 客户端安装时注册的 Skype4COM 版本以及系统中所有其他第三方 Skype 应用程序和扩展的注册版本,而仅为 SEHE.exe 使用不同版本的 Skype4COM 库。要使用此示例,请从附件下载它,然后右键单击 MultipleS4CExample.zip 并选择“全部提取”。请阅读 MultipleS4CExample.zip 中包含的 ReadMe.text 文件。此示例包括 Skype4COM 库的版本 1.0.28.2、1.0.29.0、1.0.30.0 和 1.0.31.0。例如,当使用此文件夹中的 SEHE.exe(使用 Skype4COM 库 1.0.31.0 构建)文件,但 Skype4COM 版本低于 1.0.31.0 时,如果旧版本的 Skype4COM 库不支持任何方法,则会报告错误,这是完全正常的,SEHE.exe 在发生这种情况时不会崩溃,它会在报告错误后继续。

此版本 1.0.31.12 可以检测到 Skype 客户端未安装,然后打开浏览器窗口到 Skype 下载页面,等待 Skype 客户端下载并安装,一旦 Skype 用户登录,它就会连接到 Skype 客户端。如果您有版本 1.0.31.x < 12,它将在下次启动时使用 Instant-Update,Microsoft ClickOnce 技术自动更新。

关注点

要了解 Don Kennedy 如何获得昵称 OverLord,点击此处

SEHE 使用 Microsoft ClickOnce 技术进行自动更新,因此可以随时更新,无需检查 SEHE 的新版本。

请查看 SEHE 项目文件,了解魔法是如何实现的。让您的程序和应用程序按需自动更新。

Skype 拥有程序员可用的最佳 API 接口之一,但很少有开发者知道这一点。

还没有 Skype?不用担心,SEHE 可以检测到这一点,并在需要时提示您安装 Skype。

由于 SEHE 有许多用途,包含超过 5,000 行源代码,我宁愿一对一回答问题,请先自行尝试。

最好的方法是使用上面的 ClickOnce 链接安装 SEHE,然后查看它能做什么,然后使用 SEHE 窗口顶部的链接来熟悉您想要使用的 Skype API 区域,因为有很多。

请随时提出关于 Skype API 或 Microsoft ClickOnce 技术的任何问题,我对两者都非常熟悉。

历史

  • 1.0.31.9 - 从我在这里写的另一篇文章中添加了 NotifyiconTaskbar 代码,点击此处阅读该文章

尽情享用 TheUberOverLord AKA Don Kennedy

© . All rights reserved.