COM的使用可以完全不用135Port,如果用SocketConnent是不是可能呢 |
尚未結案
|
dennis11
一般會員 發表:2 回覆:13 積分:3 註冊:2004-09-16 發送簡訊給我 |
|
jieshu
版主 發表:42 回覆:894 積分:745 註冊:2002-04-15 發送簡訊給我 |
引言: COM的使用可以完全不用135Port,如果用SocketConnent是不是可能呢? 如果COM是由VC或VB所產生的,是不是用SocketConnent是不是可能呢? 有無ex提供Port在本機一定會用到, 用SocketConnection是透過Scktsrvr來連DCOM, 對外可以不用135 Port, 可不可以連COM就要試了才知道, 至於COM是由什麼程式所寫, 應該關係不大. <iFrame src="http://www.coss.com.tw/jieshu/sign.htm" width=400 height=105 scolling="NO" border="0"></iFrame> 震江系統(股)公司: http://www.coss.com.tw/ 捷舒軟體設計坊: http://www.coss.com.tw/jieshu/ 發表人 - jieshu 於 2004/09/22 12:31:53
------
人生有夢,逐夢而行 人若為善,福雖未至,禍已遠離 人若為惡,禍雖未至,福已遠離 http://www.taconet.com.tw/jieshu/ |
dennis11
一般會員 發表:2 回覆:13 積分:3 註冊:2004-09-16 發送簡訊給我 |
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
|
dennis11
一般會員 發表:2 回覆:13 積分:3 註冊:2004-09-16 發送簡訊給我 |
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
|
dennis11
一般會員 發表:2 回覆:13 積分:3 註冊:2004-09-16 發送簡訊給我 |
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
|
dennis11
一般會員 發表:2 回覆:13 積分:3 註冊:2004-09-16 發送簡訊給我 |
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
|
dennis11
一般會員 發表:2 回覆:13 積分:3 註冊:2004-09-16 發送簡訊給我 |
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
|
dennis11
一般會員 發表:2 回覆:13 積分:3 註冊:2004-09-16 發送簡訊給我 |
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
我查一下 Delphi Source SObjectNotAvailable = 'Object not available: %s'; function TDataBlockInterpreter.CreateObject(const Name: string): OleVariant;
var
ClassID: TGUID;
begin
if (Name[1] = '{') and (Name[Length(Name)] = '}') then
ClassID := StringToGUID(Name) else
ClassID := ProgIDToClassID(Name);
if CanCreateObject(ClassID) then
Result := InternalCreateObject(ClassID) else
raise Exception.CreateResFmt(@SObjectNotAvailable, [GuidToString(ClassID)]);
end; 1. ServerGUID = '{' GUID '}';
2. 看起來 CanCreateObject 出了問題。
function TDataBlockInterpreter.CanCreateObject(const ClassID: TGUID): Boolean;
begin
Result := (FCheckRegValue = '') or
(GetRegStringValue(SClsid GuidToString(ClassID), FCheckRegValue) = SFlagOn);
end; CanCreateObject 是檢查登錄檔是否有此 GUID
\\HKEY_CLASSES_ROOT\CLSID
自己檢查看看是否出了什麼問題!
|
dennis11
一般會員 發表:2 回覆:13 積分:3 註冊:2004-09-16 發送簡訊給我 |
|
alphakao
一般會員 發表:0 回覆:18 積分:8 註冊:2002-07-04 發送簡訊給我 |
|
dennis11
一般會員 發表:2 回覆:13 積分:3 註冊:2004-09-16 發送簡訊給我 |
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
|
jieshu
版主 發表:42 回覆:894 積分:745 註冊:2002-04-15 發送簡訊給我 |
引言: COM的使用可以完全不用135Port,如果用SocketConnent是不是可能呢? 如果COM是由VC或VB所產生的,是不是用SocketConnent是不是可能呢? 有無ex提供其實何必一定要直接連呢? 當作三層式程式來寫不就好了, 由Server程式來呼叫COM, 就和一般的程式連COM沒有兩樣. <iFrame src="http://www.coss.com.tw/jieshu/sign.htm" width=400 height=105 scolling="NO" border="0"></iFrame> 震江系統(股)公司: http://www.coss.com.tw/ 捷舒軟體設計坊: http://www.coss.com.tw/jieshu/
------
人生有夢,逐夢而行 人若為善,福雖未至,禍已遠離 人若為惡,禍雖未至,福已遠離 http://www.taconet.com.tw/jieshu/ |
dennis11
一般會員 發表:2 回覆:13 積分:3 註冊:2004-09-16 發送簡訊給我 |
|
jieshu
版主 發表:42 回覆:894 積分:745 註冊:2002-04-15 發送簡訊給我 |
引言: 因為com物件是外包的所以沒法改 病毒流行網管又不同意開135 所以才會有想用SocketConnection的方式連接可以不變COM又不用135 port我說的就是不用去改COM阿, 由SocketConnection呼叫RemoteDataModule, 在RemoteDataModule裡去呼叫COM, 寫對應的Function來呼叫即可.
------
人生有夢,逐夢而行 人若為善,福雖未至,禍已遠離 人若為惡,禍雖未至,福已遠離 http://www.taconet.com.tw/jieshu/ |
dennis11
一般會員 發表:2 回覆:13 積分:3 註冊:2004-09-16 發送簡訊給我 |
|
jieshu
版主 發表:42 回覆:894 積分:745 註冊:2002-04-15 發送簡訊給我 |
引言: 有沒有Sample可以參考呢? RemoteDataModule要如何與SocketConnect連接---多層基本常識--- RemoteDataModule要如何與com連接 本機135不用開,com在MTS下起的來嗎?是設127.0.0.1不用135,會不會 Proxy及Stub連線建不起來.不能用呢?我沒寫過和COM連的程式, 所以也不曉得怎麼寫, 如果您也不知道怎麼連COM的話, 建議您先找這方面的寫法, 套到三層式的方式我再幫您寫個Sample, 本機的135 Port是一定要開的, 除非用防火牆擋掉, 外部才不能連.
------
人生有夢,逐夢而行 人若為善,福雖未至,禍已遠離 人若為惡,禍雖未至,福已遠離 http://www.taconet.com.tw/jieshu/ |
dennis11
一般會員 發表:2 回覆:13 積分:3 註冊:2004-09-16 發送簡訊給我 |
>>我說的就是不用去改COM阿, 由SocketConnection呼叫RemoteDataModule, 在>>RemoteDataModule裡去呼叫COM, 寫對應的Function來呼叫即可. 我想我誤會你的意思了,我以為你說不用改COM,用SocketConnection呼叫RemoteDataModule,在RemoteDataModule裡去呼叫COM即可如題的避掉135
port,不過還是謝謝你!因為這個問題我問過MicroSoft的MVP等一些人,所得到的
答案都是要用135(除非用.Net重寫COM 可以自定外,基本上以前的COM都要用135),但我曾在其他論壇中看過有人說可以用http去替代,都沒有看到真正可以解決的方案,只有是而非的假定.
|
jieshu
版主 發表:42 回覆:894 積分:745 註冊:2002-04-15 發送簡訊給我 |
引言: 我想我誤會你的意思了,我以為你說不用改COM,用SocketConnection呼叫RemoteDataModule,在RemoteDataModule裡去呼叫COM即可如題的避掉135 port,不過還是謝謝你!因為這個問題我問過MicroSoft的MVP等一些人,所得到的 答案都是要用135(除非用.Net重寫COM 可以自定外,基本上以前的COM都要用135),但我曾在其他論壇中看過有人說可以用http去替代,都沒有看到真正可以解決的方案,只有是而非的假定.在本機用135 Port有什麼問題嗎? 我想你誤會網管的意思了, 在本機無論哪個Port都能用, 除了不要和別人一樣, 對外連結由於怕被病毒連線攻擊, 才利用防火牆擋掉對135 Port的連結, 所以用SocketConnection來連是沒問題的, 因為Scktsrvr和SocketConnection都可以自己指定Port, RemoteDataModule也是COM的一種, 也是用135 Port, 可透過scktsrvr讓SocketConnection來連, 在RemoteDataModule上要再連其他東西應該都沒問題才是.
------
人生有夢,逐夢而行 人若為善,福雖未至,禍已遠離 人若為惡,禍雖未至,福已遠離 http://www.taconet.com.tw/jieshu/ |
speedup
資深會員 發表:19 回覆:259 積分:280 註冊:2003-07-04 發送簡訊給我 |
烽火連天
這問題好像不大
< class="code">
我試了一下透過ScoketConnection 可以呼叫其他COM 元件
步驟如下
首先在Server執行Borland Socket Server port要開哪個自己定
記的取消Borland Socket Server 中Connections 的Registered Object Only 接著寫Client端程式
擺一個TSocketConnetction 和按鈕上去
TSocketConnetction 設定如下
Address = Server 的 ip Address
ServerName = Word.Application (我假設你的Server上有裝Word)
Connectiioned = True 在Button Click事件中撰寫以下程式碼
var Word :OleVariant;
begin
word := socketConnection1.AppServer;
word.Visible := True;
end;
在Client執行程式按下按鈕後應該可以看到Server機器上的Word會執行
so.只要你開發的COM元件符合Dual Interface 應該都可被socketConnection使用 混心雜欲 棄修身~唉
------
唉~ |
Ktop_Robot
站務副站長 發表:0 回覆:3511 積分:0 註冊:2007-04-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |