S
sunyyjj
Unregistered / Unconfirmed
GUEST, unregistred user!
我制作了一个简单的ActiveX控件,自己加入了四个接口方法。
procedure FunwithArgs(const str: WideString; i: Integer; b: WordBool); dispid 240;
procedure FunI(I: Integer); dispid 241;
procedure FunS(const s: WideString); dispid 242;
procedure FunB(b: WordBool); dispid 243;
在其他的程序中,使用如下方法调用:
var
aDispParams: TDispParams;
iResult, aHResult, aDispID: integer;
aResult: variant;
ITmp2: IDispatch;
funName: widestring;//注意,一定要widestring
varArr: array of TVariantArg;
begin
OleContainer1.OleObjectInterface.QueryInterface(IID_IStringGridX,ITmp2);
SetLength(varArr, 1);
varArr[0].vt := VT_INT;
^^^^
varArr[0].iVal := 10;
^^^^
with aDispParams do
begin
rgvarg := @varArr;
rgdispidNamedArgs := nil;
cArgs := 1;
cNamedArgs := 0;
end;
funName := 'FunI';
aHResult := ITmp2.GetIDsOfNames(GUID_NULL,@funName,1,0,@aDispID);
OleCheck(aHResult);
//到这一步为止,一切正常,可以获得正确的 aDispID
aHResult := ITmp2.Invoke(aDispID, GUID_NULL, 0, DISPATCH_METHOD, aDispParams, nil,nil,nil);
OleCheck(aHResult);
我想调用那个简单的方法 FunI。
但是,当我运行到这里的时候,就会报“不正确的变量类型”的错误。这个是怎么
回事呀?是上文^^^^处写的不对,还是什么其他的问题?
//Bow
procedure FunwithArgs(const str: WideString; i: Integer; b: WordBool); dispid 240;
procedure FunI(I: Integer); dispid 241;
procedure FunS(const s: WideString); dispid 242;
procedure FunB(b: WordBool); dispid 243;
在其他的程序中,使用如下方法调用:
var
aDispParams: TDispParams;
iResult, aHResult, aDispID: integer;
aResult: variant;
ITmp2: IDispatch;
funName: widestring;//注意,一定要widestring
varArr: array of TVariantArg;
begin
OleContainer1.OleObjectInterface.QueryInterface(IID_IStringGridX,ITmp2);
SetLength(varArr, 1);
varArr[0].vt := VT_INT;
^^^^
varArr[0].iVal := 10;
^^^^
with aDispParams do
begin
rgvarg := @varArr;
rgdispidNamedArgs := nil;
cArgs := 1;
cNamedArgs := 0;
end;
funName := 'FunI';
aHResult := ITmp2.GetIDsOfNames(GUID_NULL,@funName,1,0,@aDispID);
OleCheck(aHResult);
//到这一步为止,一切正常,可以获得正确的 aDispID
aHResult := ITmp2.Invoke(aDispID, GUID_NULL, 0, DISPATCH_METHOD, aDispParams, nil,nil,nil);
OleCheck(aHResult);
我想调用那个简单的方法 FunI。
但是,当我运行到这里的时候,就会报“不正确的变量类型”的错误。这个是怎么
回事呀?是上文^^^^处写的不对,还是什么其他的问题?
//Bow