本页
概要
逐步本文介绍如何手动添加到 ActiveX 控件动态创建或 VisualC # 2005 VisualC # .NET 中运行时许可证。 在 Visual Basic 6, 通过 Licenses.Add() 方法手动添加到许可证集合许可证。 更多有关在 Visual Basic 6, License.Add() 作用信息请参阅与本文 " 参考 " 部分。
VisualC # 2005, 或 VisualC # .NET 中许可证集合不再存在。 必须在控件中嵌入许可证信息。
本文假定控件需要运行时许可证处于 MyProject.OCX 并命名 MyLicensedControl。 MyProject.OCX 位于 C:\Windows\System 32。
VisualC # 2005, 或 VisualC # .NET 中许可证集合不再存在。 必须在控件中嵌入许可证信息。
本文假定控件需要运行时许可证处于 MyProject.OCX 并命名 MyLicensedControl。 MyProject.OCX 位于 C:\Windows\System 32。
创建一个新 VisualC # .NET 或 VisualC # 2005 项目
1. | 指向 所有程序 , 指向 MicrosoftVisualStudio.NET , 依次 MicrosoftVisualStudio.NET 开始 。 注意 在 Visual Studio 2005、 Microsoft Visual Studio .NET 改为 Microsoft Visual Studio 2005 。 |
2. | 在 文件 菜单, 指向 新建 , 然后单击 项目 。 |
3. | 在 新建项目 对话框中, 单击 项目类型 下面 VisualC # 项目 , 单击 模板 , 下 Windows 应用程序 然后然后单击 确定 。 注意 除了 Visual Studio 2005、 VisualC # 项目 更改为 VisualC # 。 |
创建 ActiveX Interop 程序集
1. | 指向 所有程序 , 指向 MicrosoftVisualStudio.NET , 指向 VisualStudio.NET 工具 , 依次 VisualStudio.NET 命令提示 开始 。 注意 在 Visual Studio 2005、 Microsoft Visual Studio .NET 改为 Microsoft Visual Studio 2005 。 VisualStudio.NET 工具 更改为 VisualStudio 2005 工具 。 Visual Studio VisualStudio.NET 命令提示 更改为 Visual Studio2005 命令提示符 。 |
2. | 要创建 Interop 程序集, 必须, 两请键入以下命令:
aximp /out:C:\temp\AxMyProject.dll " C:\Windows\System32\MyProject.ocx "
AxMyProject.dll 用于 AxHost Interop。 MyProject.dll 用于 COMInterop。 |
动态创建控件
1. | 在 项目 菜单上, 单击 AddReference 。 |
2. | 单击 浏览 , 然后选择 ActiveX 控件 Interop 程序集, 您只创建 (它们应该在 C:\Temp)。 |
3. | 添加 AxMyProject.dll 和 MyProject.dll ; 本地添加这些文件复制。 |
4. | 向窗体添加一个 按钮 控件。 |
5. | 双击该按钮以寻找 按钮 Click 事件 方法代码。 |
6. | 按钮 Click 事件 方法, 中粘贴如下代码: AxMyProject.AxMyLicensedControl myControl = new AxMyProject.AxMyLicensedControl();这将一个控件通过 AxHost 新实例。 注意 Do 不创建新实例对控件通过 COM (新建 MyProject.MyLicensedControl), 因为这不能在窗体, 并且不能轻松添加许可证。 |
许可证添加到控件
1. | 确定并注意该控件运行时许可证密钥。 对于 MyLicensedControl , 许可证密钥是 " gnvlslnjskvlmlgnnimh "。 |
2. | 按钮 Click 事件 方法, 中粘贴如下代码下面 " " AxTestActiveXComponent.AxUserControl1 myControl = 新 AxTestActiveXComponent.AxUserControl1(); System.Reflection.FieldInfo f = typeof(AxHost).GetField("licenseKey", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); f.SetValue(myControl, "gnvlslnjskvlmlgnnimh");此代码插入到控件运行时许可证。 它创建的 FieldInfo , 是 OCXState 属性包的一部分的实例。 此属性包已满的特定 ActiveX 控件信息。 此例, 获取字段 licenseKey 并为 myControl 设置它。 您必须完成为每个需要运行时许可证任何 ActiveX 控件实例。 |
向窗体添加控件
1. | 将控件添加到窗体的 Controls 集合, 并然后显示控件。 要这样做, 您可以使用以下代码: Controls.Add(myControl); myControl.Show();此代码粘贴到 按钮 Click 事件 方法, " f.SetValue(myControl, "gnvlslnjskvlmlgnnimh");, " 之后和之前 End Sub。 注意 如果许可证不添加到控件, 许可证是需要, myControl.Show 失败。 MyControl.Show 运行包含该许可证验证代码。 当您尝试并运行 myControl.Show , 看到以下错误处于调试模式:
system.windows.forms.dll 附加信息中出现处理异常的类型'System.ComponentModel.LicenseException': 没有许可证来使用该 ActiveX 控件。
或在运行时, 可能看到类似以下消息:
应用程序中已发生了未处理异常。
您没有许可证来使用该 ActiveX 控件。 |
2. | 按 F 5 键运行该项目。 |
3. | 单击按钮以向窗体添加 ActiveX 控件。 |
疑难解答
要点 注意以下有关此操作:• | 许可证必须添加到每个实例的所有 ActiveX 控件需要运行时许可证。 例如, 如果创建为 MyLicensedControl , 第二个实例您需要许可证也添加到该实例。 |
• | 确保您具有正确的许可证密钥用于您控制。 确定正确的许可证密钥是特定于控件: http://msdn.microsoft.com/library/default.asp 确定密钥, 请单击下列文章编号以查看 Microsoft 知识库中相应:
151771
(http://support.microsoft.com/kb/151771/) Licreqst.exe 示例说明如何请求许可证密钥 VisualC++ 中的对象
或者, 可用于 Licenses.Add Visual Basic 6 中控制计算机注册表中具有许可证上。 Licenses.Add 返回运行时许可证, 它作为字符串添加 ; 然后您可以使用 Debug.Print 要获取许可证密钥。 |