2017-02-22 56 views
2

並提前感謝您提供任何建議/見解/幫助。在德爾福應用程序中使用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」對象

我曾錯誤地從教程以爲/第一步節 -

+0

爲什麼不在導入類型庫時使用Delphi創建組件包裝並使用組件?然後,您可以像使用其他事件處理程序一樣使用Object Inspector創建事件。 –

回答

0

問題一直是(可能)由下列解決。

經過進一步檢查,稍後需要時會創建COMCallEventArgs對象。

需要做更多的測試,但我相信這個問題已經解決。