的ComServer我現在實現了這個演示代碼爲APP成功地,http://www.jasontpenny.com/blog/2010/03/23/custom-protocol-handler-in-delphi/,但似乎如果應用程序是一個單一的形式應用程序才能正常工作。怎樣才能找到一個TWebBrowser異步可插入協議
我發現的是,沒有廠在返回CoGetClassObject:
procedure NewProtocolHandler(const aProtocolName: String; aProtocolCallback: TProtocolCallback; aProtocollType: TGUID);
var
error : HRESULT;
begin
if _protocol <> '' then
raise Exception.Create('Currently only supports a single asynchronous pluggable protocol');
_protocol := aProtocolName;
_protocolCallback := aProtocolCallback;
error := CoGetClassObject(Class_AsyncPlugProto_Protocol, CLSCTX_SERVER, nil, IClassFactory, Factory);
CoInternetGetSession(0, InternetSession, 0);
InternetSession.RegisterNameSpace(Factory, Class_AsyncPlugProto_Protocol, PChar(_protocol), 0, nil, 0);
CoCreateInstance(aProtocollType, nil {was IUnknown(Self)}, CLSCTX_INPROC_SERVER, IUnknown, MyProtocol);
end;
,我已經開始相信,這是由於在初始化部分不正確的ComServer。
initialization
TComObjectFactory.Create(ComServer, TAsyncPlugProto, Class_AsyncPlugProto_Protocol, 'Protocol', '', ciMultiInstance, tmApartment);
finalization
EndProtocolHandler;
end.
我的網頁瀏覽器實際上不是一種形式的一部分,我允許多個瀏覽器在我的應用程序中使用,所以瀏覽器被聲明爲TWinControl如果條件得到滿足的TWebBrowser其通過創建:
FBrowser := TWebBrowser.Create(nil);
和訪問爲:
(FBrowser as TWebBrowser)
我是相當新的COM函數,所以我怎麼能去尋找ComServer相對TWebBrowser?
等待,讓您使用'TWebBrowser'或'TChromium'?你能編輯你的問題來解決這個問題嗎(或者描述它是什麼意思)? – TLama
即使我的應用程序可以支持Chromium,這個問題也適用於TWebBrowser。關鍵問題是找到TWebBrowser的ComService。 –