【问题标题】:Using the Plantronics SDK with a Delphi application将 Plantronics SDK 与 Delphi 应用程序一起使用
【发布时间】:2017-02-22 17:41:10
【问题描述】:

并提前感谢您提供的任何建议/见解/帮助。

背景:

我们有一个用 Delphi (XE3) 为 Windows 编写的软件电话应用程序。最近要求能够通过激活 Plantronics 无线耳机的接听按钮来接听来电。 MSI 文件已下载并执行,Plantronics SDK 已转换/更改为 Delphi 库文件。

然后我开始关注 Plantronics 网站的“第一步”部分。我知道必须调整“第一步”代码以适应 Delphi 系统。

问题:

在调整代码以在 Delphi 中工作时,遇到并解决了一些翻译问题。一个这样的错误被证明是顽固的 - 当创建一个特定类的实例时,会抛出错误“类未注册”。

“第一步”代码供参考-

//  Connect to the Plantronics COM API:
myAppName = "SDK .NET COM sample";
sessionManager = new COMSessionManager();
sessionManager.Register(myAppName, out session);

// Hook to SessionManager events:
sessionManagerEvents = sessionManager as ICOMSessionManagerEvents_Event;
if (sessionManagerEvents != null)
{
    sessionManagerEvents.onCallStateChanged += SessionManagerEvents_onCallStateChanged;
    sessionManagerEvents.onDeviceStateChanged += SessionManagerEvents_onDeviceStateChanged;
}

德尔福代码:

//Connect to the Plantronics COM API:
plugin_name: "Plugin Name";
the_session: CoCOMSession.Create;
session_manager = new COMSessionManager.Create;
session_manager.Register(plugin_name, the_session);

//Hook to Session Manager Events
state_device_event_args := CoCOMStateDeviceEventArgs.Create;
call_event_args := CoCOMCallEventArgs.Create;

Delphi 代码的最后一行是问题所在。其他三个“创建”调用顺利进行。 “call_event_args := CoCOMCallEventArgs.Create;”这一行抛出错误“类未注册”,即使它与其他三个一起在库文件中声明和实现。

库文件摘录:

类声明:

IID_ICOMStateDeviceEventArgs: TGUID = '{91542BEE-4931-4620-9E96-23AE4001E93F}';
CLASS_COMStateDeviceEventArgs: TGUID = '{335D08FD-8BB5-4EF5-964B-E8A8C010530F}';

IID_ICOMCallEventArgs: TGUID = '{0280956C-C644-4CD8-B124-C8A99E5D505E}';
CLASS_COMCallEventArgs: TGUID = '{705129C3-2265-4F10-9768-0FF8A20234C0}';

类创建函数:

//Works
class function CoCOMStateDeviceEventArgs.Create: ICOMStateDeviceEventArgs;
begin
    Result := CreateComObject(CLASS_COMStateDeviceEventArgs) as ICOMStateDeviceEventArgs;
end;

// Doesn't Work
class function CoCOMCallEventArgs.Create: ICOMCallEventArgs;
begin
  Result := CreateComObject(CLASS_COMCallEventArgs) as ICOMCallEventArgs;
end;

我发现的关于解决“类未注册”错误的每个教程/论坛答案都没有解决问题。

有人对我做错了什么有任何建议或见解吗?

谢谢。

【问题讨论】:

  • 当您导入类型库并使用组件时,为什么不让 Delphi 创建组件包装器?然后,您可以像任何其他事件处理程序一样使用 Object Inspector 创建事件。

标签: class delphi


【解决方案1】:

该问题已(可能)通过以下方式解决 -

我从教程/第一步部分错误地认为需要先创建“COMCallEventArgs”对象才能使用它。

经过进一步审查,COMCallEventArgs 对象会在以后必要时创建。

需要做更多的测试,但我相信这个问题已经解决了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 2012-05-22
    • 2016-11-29
    • 2012-12-29
    • 1970-01-01
    • 2018-10-21
    相关资源
    最近更新 更多