s, i : OleVariant;
begin
// Calling a constructor and a property
// Note the absence of the underscore
s := dotNET.System.String.ctor8($41, 3);
Log.Message(s.Length);
// Calling a static method
s := dotNET.System.String.Copy('Test');
Log.Message(s.OleValue); // Using the OleValue property
// Calling a non-static method
i := s.IndexOf('t');
Log.Message(i);
end;
調用DLL的函數
為了調用一個DLL的函數,你需要執行一系列的操作:
1、 定義DLL類型
2、 在TC中定義參數的數據類型
3、 定義函數類型
4、 創建數據結構并用數據填充
5、 加載DLL到內存
6、 調用函數
例如,如果我們要從User32DLL中調用一個名叫DrawTextEx的函數,則需要以下步驟:
1、 定義DLL類型。
使用DefineDLL方法來定義一個新的DLL類型如下:
Def_DLL:=DLL.DefineDLL(‘USER32’);
2、 看看函數定義和判斷參數是否兼容OLE。TC引擎能處理OLE兼容的數據類型;OLE不兼容的數據類型則需要特殊處理。所以要判斷參數類型。DreawTextEx定義如下:
int DrawTextEx(
HDC hdc,
LPTSTR lpchText,
int cchText,
LPRECT lprc,
UINT dwDTFormat,
LPDRAWTEXTPARAMS lpDTParams);
其中有一些是OLE不兼容的數據類型,所以下一步是在TC中定義這些數據類型。
3、 定義參數類型。
對于lprc,它是對RECT結構的指針,為了在TC中定義它的數據類型,調用DLL.DefineType方法。在TC中注冊新的數據類型并返回ID。返回的ID可以用在其它數據類型或函數參數的定義上。例如下面腳本定義名叫MyStruct的結構類型:
DefType := DLL.DefineType('MyStruct', // name of the new structure
vt_i4, 'Value',
vt_byref or vt_i4, 'ValueByRef', // pointer to integer
vt_byref or myID, 'MyStruct2'); // pointer to structure MyStruct2
注意DefineType注冊的只是數據類型,不會創建這個類型的變量。要想創建這個新類型的變量,需要調用DLL.New,例如下面腳本調用DLL.New創建RECT類型的變量:
r := DLL.New('RECT');
文章來源于領測軟件測試網 http://www.kjueaiud.com/