跳转到内容

Google 桌面插件开发

0% developed
来自维基教科书,开放世界中的开放书籍

你需要的东西

[编辑 | 编辑源代码]

如何开始

[编辑 | 编辑源代码]

你需要创建一个 COM 对象。

什么是 COM 对象,为什么我需要创建它?

[编辑 | 编辑源代码]

GD 使用 COM 对象作为插件。实际上,这些类似于 ActiveX 组件。它们旨在可重复使用。

如何创建 COM 对象

[编辑 | 编辑源代码]

在 Visual Studio 中,创建一个 C# 类库。

类库项目的初步代码

[编辑 | 编辑源代码]

你应该实现两种(2)方法

static void ComRegisterFunctionAttribute(Type t) {
include initialization code here
}

每当你将 COM 对象注册到系统时,都会调用此函数。你可以在这里放置初始化代码,例如将我们的插件注册到 GD 的代码(稍后详细介绍)。

static void ComUnregisterFunctionAttribute(Type t) {
}

每当你注销 COM 对象时,都会调用此函数。

你应该有以下语句

using System.Runtime.InteropServices;

当我编译类库项目时会创建哪些类型的文件?

[编辑 | 编辑源代码]

构建类库项目后,Visual Studio 会在你的输出文件夹中生成以下文件类型:.dll 和 .tlb

生成的 .dll 文件实际上是一个 COM 对象,我们需要将其注册到系统。

如何加载/注册 COM 对象

[编辑 | 编辑源代码]
Use: regasm [dllfile] /tlb

Regasm.exe 位于你的 .Net Framework bin 文件夹中。

加载 COM 对象后首先执行什么方法/代码?

[编辑 | 编辑源代码]

系统会调用 ComRegisterFunctionAttribute,因此你必须实现此方法。我们在这里放置我们的初始化,例如将我们的插件注册到 GD 的代码块。

将插件注册到 GD

[编辑 | 编辑源代码]
try {
GoogleDesktopRegistrarClass registrar = new GoogleDesktopRegistrarClass();
// Start component registration by specifying our attributes
object[] descriptions = {
"Title", pluginName,
"Description", pluginName,
"Icon", ""
};

registrar.StartComponentRegistration(controlGuid, descriptions);

IGoogleDesktopRegisterDisplayPlugin displayRegistration = 
(IGoogleDesktopRegisterDisplayPlugin)

registrar.GetRegistrationInterface("GoogleDesktop.DisplayPluginRegistration");

displayRegistration.RegisterPlugin(controlGuid, false);
// Done with component registration.
registrar.FinishComponentRegistration();
}
catch (Exception e) {
MessageBox.Show("Exception thrown during registration. Description=" + e.Message);
}

我的插件在 GD 中注册后会发生什么?

[编辑 | 编辑源代码]

你的插件将出现在 Google 桌面的添加/删除面板列表中。

高级主题

[编辑 | 编辑源代码]
Clipboard

待办事项

华夏公益教科书