並提前感謝您提供任何建議/見解/幫助。在德爾福應用程序中使用Plantronics SDK
背景:
我們有一個用Delphi編寫的(XE3)用於Windows的軟電話應用程序。最近要求通過激活答覆按鈕和Plantronics無線耳機來應答來電。 MSI文件已下載並執行,Plantronics SDK已轉換/更改爲Delphi庫文件。
然後我開始關注Plantronics網站的「第一步」部分。我知道「第一步」代碼將不得不進行調整以適應德爾福系統。
問題:
在調整代碼內德爾福工作,遇到和解決的幾個翻譯問題。一個這樣的錯誤被證明是固執的 - 當一個特定類的實例被創建時,拋出錯誤「Class not registered」。
「第一步」 爲參考代碼 -
// 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;
}
Delphi代碼:
//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;
每個教程/論壇,回答有關解決 「類未註冊」我發現的錯誤沒有解決問題。
有沒有人有任何建議或瞭解我一直在做什麼錯?
謝謝。可用於在它之前創建需要「COMCallEventArgs」對象
我曾錯誤地從教程以爲/第一步節 -
爲什麼不在導入類型庫時使用Delphi創建組件包裝並使用組件?然後,您可以像使用其他事件處理程序一樣使用Object Inspector創建事件。 –