如何用一個Soap元件呼叫所有COM+元件? |
|
mustapha.wang
資深會員 發表:89 回覆:409 積分:274 註冊:2002-03-13 發送簡訊給我 |
我原來的系統是局域網的3-tier,中間件是COM ,
現在想用Soap延展到internet上,但我不想一個Soap元件對應一個COM 元件,
並且在每個Soap元件重定義COM 的接口
我想只寫一個Soap元件,用一個方法CallCom,來動態調用所有的COM 方法
procedure TSoapCallCom.CallCom(ComProgID, MethodName: WideString;
var ParamList,ReturnValue: OLEVariant);
var
ICom:IDispatch;
DispIDs:array[0..0] of TDispID;
DispParams:TDispParams;
ParamValue:array[Byte] of OLEVariant;
i:integer;
begin
DispParams.cArgs:=VarArrayHighBound(ParamList,1) 1;
for i:=0 to DispParams.cArgs-1 do
begin
ParamValue[i]:=ParamList[DispParams.cArgs-1-i];
end;
DispParams.rgvarg:=@ParamValue;
DispParams.cNamedArgs:=0;
DispParams.rgdispidNamedArgs:=nil;
ICom:=CreateRemoteComObject('Sac049',ProgIDToClassID(ComProgID)) as IDispatch;
OLECheck(ICOM.GetIDsOfNames(GUID_NULL,@MethodName,1,0,@DispIDs));
OLECheck(ICOM.Invoke(DispIDs[0],GUID_NULL,0,DISPATCH_METHOD,DispParams,@ReturnValue,nil,nil));
for i:=0 to DispParams.cArgs-1 do //返回var參數
ParamList[i]:=ParamValue[DispParams.cArgs-1-i];
end; 代碼可以執行,結果也對,但 1.最後兩句不能返回修改了的var參數
2.如果ParamValue:array[Byte] of OLEVariant;定義成ParamValue:array[word] of OLEVariant;會報棧溢出
3.或者有類似httpsrvr.dll的方式(它有bug,在TWebConnection釋放時,不能釋放COM )
------
江上何人初见月,江月何年初照人 |
baby999
一般會員 發表:0 回覆:8 積分:1 註冊:2003-01-20 發送簡訊給我 |
http://www.delphibbs.com/keylife/iblog_show.asp?xid=1107
What is EventSinkImp?
EventSinkImp is a free utility (comes with full source code for enthusiasts) that imports COM connection point-based event interfaces for ease of use in Delphi applications. EventSinkImp creates stub classes/components that publishes event methods as native Delphi events so that you can easily build applications that need to capture COM-based events from Delphi, Visual Basic, or Visual C server COM components. If you are familiar with VB, EventSinkImp allows you to achieve the equivalent of VB's Dim WithEvents mechanism. 你可以在
http://www.techvanguards.com/products/eventsinkimp/
下载
那儿有很多好东西呀
|
mustapha.wang
資深會員 發表:89 回覆:409 積分:274 註冊:2002-03-13 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |