2010-07-05 101 views
1

我想在應用程序中使用2個dll(OCX),但是當我想調用一個函數時,我該怎麼做呢?在delphi中使用dll ocx

我怎麼稱呼這個功能 RSDKLib_TLB.IID_IMeasurement ....「TGUID」?

在DLL

IID_IMeasurement: TGUID = '{97E75BE0-AF26-4E4A-B651-C5DDECEC2936}'; 

或者是方法錯了?

+0

我幾乎沒有使用COM的經驗,所以我會把它放在註釋中:你的OCX DLL實現了一個基於COM的控件;從Delphi轉到組件 - >導入ActiveX,找到你的控制並導入它。 Delphi將生成所有必需的東西,將該控件放到組件托盤上,然後您可以將它放到表單上並使用它。當然,這可能會有無數的複雜情況,但我不是COM專家,所以我不知道。 – 2010-07-06 06:27:39

+0

你展示的東西根本不是一個功能。是什麼讓你覺得你應該*打電話給它?你在項目中使用什麼參考材料? – 2010-07-06 15:41:31

回答

2

聽起來像你可能需要一些基本的COM編程介紹。

聽起來好像你已經導入了庫。但是你需要學習如何調用可用的函數。

首先看看導入單元的底部(正好在執行關鍵字上方),您會發現幾個名爲CoXXX的類,其中XXX通常是您要創建的接口的名稱。

和CoXXX班會是這樣的:

CoXXX = class 
    class function Create: IXXX; 
    class function CreateRemote(const MachineName: string): IXXX; 
    end; 

因此,在您所提供的信息採取了猜測。

var 
M : IMeasurement; 
begin 
M := CoIMeasurement.Create 
M.MethodYouNeedToCall; 
end; 
+0

你是指在這裏? /*********************************************** ********************** // // GUID在TypeLibrary中聲明。繼前綴用來: //類型庫:LIBID_xxxx //組件類:CLASS_xxxx //調度接口:DIID_xxxx //非DISP接口:IID_xxxx – 2010-07-06 17:35:33

+0

這是該單元的實現部分之前。 – 2010-07-06 17:49:59

+0

我這樣嘗試 var M:IImage2Disp; 開始 M:= TIRSDK.Create; //這裏我沒有足夠的實際參數爲什麼? M.TempUnit:= 1000; 結束; Thank's – 2010-07-06 23:39:48