国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 編程 > Delphi > 正文

排除Delphi5中編寫COM+程序的一個錯誤

2019-11-18 18:44:47
字體:
來源:轉載
供稿:網友
         在Delphi5中編寫COM+組件時總獲得不到ObjectContext
也就是調用GetObjectContext返回nil. 這使事物處理沒法正確
完成. 有人在網上告訴我在COM+組件前加上一條加載mtxex.dll
語句.確實解決了這個問題, 但好像運行的并不穩定.
PRocedure TgEntityObj.Initialize;
begin
  inherited;
  LoadLibrary('mtxex.dll');
end;
但我在Delphi6中不加這條語句就可以獲得ObjectContext.
我看了D6中的MTX單元和D5果然不一樣, 這也不能怪Borland
D5出來的時候WIN2000(COM+)還沒出來所以D5中MTX單位中還是加載
MTS的寫法.

在D5 MTX單元中253行.
implementation

uses ComObj;

type
  TGetObjectContextProc = function(var ObjectContext: IObjectContext): HRESULT; cdecl;
  TSafeRefProc = function(const rid: TGUID; Unk: IUnknown): Pointer; cdecl;
var
  GetObjectContextProc: TGetObjectContextProc = nil;
  SafeRefProc: TSafeRefProc = nil;
  MtsProcsLoaded: Boolean = False;

procedure LoadMtsProcs;
var
  Mtxdll: HModule;
begin
  if MtsProcsLoaded then Exit;
  MtsProcsLoaded := True;
  Mtxdll := GetModuleHandle('mtxex.dll');
  if mtxdll <> 0 then
  begin
    @GetObjectContextProc := GetProcAddress(Mtxdll, 'GetObjectContext');
    @SafeRefProc := GetProcAddress(Mtxdll, 'SafeRef');
  end;
end;

function GetObjectContext: IObjectContext;
begin
  LoadMtsProcs;
  if Assigned(GetObjectContextProc) then
    OleCheck(GetObjectContextProc(Result))
  else
    Result := nil;    //單步執行時返回空.
end;

D6中的MTX單元 注意不同.

implementation

uses ComObj;

type
  TGetObjectContextProc = function(var ObjectContext: IObjectContext): HRESULT; cdecl;
  ///
  TCoGetObjectContextProc = function(const riid: TGUID; var ObjectContext: IObjectContext): HRESULT; stdcall;
  TSafeRefProc = function(const rid: TGUID; Unk: IUnknown): Pointer; cdecl;
var
  GetObjectContextProc: TGetObjectContextProc = nil;
  CoGetObjectContextProc: TCoGetObjectContextProc = nil;    ///
  SafeRefProc: TSafeRefProc = nil;
  MtsProcsLoaded: Boolean = False;

function IsComPlusPlatform: boolean;      //////  是否為COM+
var
  Ver: TOsVersionInfo;////
begin
  Ver.dwOSVersionInfoSize := sizeof(Ver);////
  GetVersionEx(Ver);
  if (Ver.dwPlatformID = VER_PLATFORM_WIN32_NT) and///
     (Ver.dwMajorVersion >= 5) then////
       Result := true          //
  else Result := false;
end;                              //////


procedure LoadMtsProcs;
var
  Mtxdll: HModule;
begin
  if MtsProcsLoaded then Exit;
  MtsProcsLoaded := True;
  if IsComPlusPlatform then        ////
  begin
    Mtxdll := GetModuleHandle('ole32.dll');   ///
    if mtxdll <> 0 then                         ///
       @CoGetObjectContextProc := GetProcAddress(Mtxdll, 'CoGetObjectContext');
  end                                             ///
  else
  begin
    Mtxdll := GetModuleHandle('mtxex.dll');
    if mtxdll <> 0 then
    begin
      @GetObjectContextProc := GetProcAddress(Mtxdll, 'GetObjectContext');
      @SafeRefProc := GetProcAddress(Mtxdll, 'SafeRef');
    end;
  end;
end;
function GetObjectContext: IObjectContext;
const
  IID_IObjectContext: TGUID = '{51372AE0-CAE7-11CF-BE81-00AA00A2FA25}';  ///
begin
  LoadMtsProcs;
  if Assigned(CoGetObjectContextProc) then    ///
    CoGetObjectContextProc(IID_IObjectContext, Result)     ///
  else if Assigned(GetObjectContextProc) then
    OleCheck(GetObjectContextProc(Result))
  else
    Result := nil;
end;

加斜細的是多的部分你只需要把這些部加D5的MTX就可以了.然后另存到你程序的當前目錄
編譯程序就能獲得ObjectContext了.


上一篇:設計模式、用Delphi實現---->Strategy模式

下一篇:設計模式、用Delphi實現---->Builder模式

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
xxx国产精品| 国产福利在线观看| 在线天堂av| 四虎网站在线观看| 青青青国产视频| 国产美女自拍视频| 国产黄a三级三级三级av在线看| 国产天堂在线| av手机免费观看| 国产精选一区二区三区不卡催乳| 国产视频三级在线观看播放| 精品入口蜜桃| 国产在线资源| 在线免费观看黄色av| 九九99九九精彩| 尤物视频免费在线观看| 2021av天天| 自拍亚洲国产| 色中文字幕在线| 国产探花在线观看| 欧美黑人乱大交| 国产99re66在线视频| 免费在线看v| 在线午夜视频| 91xxx在线观看| h视频在线网站| 中文日本在线观看| eeuss影院在线| 久久国产情侣| 69久久久久| 日本免费视频www| 丁香花在线电影小说观看 | 免费高清av| 在线黄色国产电影| 国产黄色小视频| 中文字幕视频在线观看| 日本高清中文字幕在线| av在线1区2区| 在线国产中文字幕| 国产va在线| 国产福利小视频在线观看| 天天操人人干| 国产精品白浆视频免费观看| 国产粉嫩一区二区三区在线观看| 日本欧美在线视频免费观看| 欧美精品一区二区三区免费| 69日小视频在线观看| 成人av小说网| 麻豆精品视频入口| 在线观看av资源网| 亚洲www色| www免费在线观看| 精品视频三区| 天堂在线中文| 高清av中文在线字幕观看1| av中文在线资源| 久久香蕉一区| 国产网站免费看| 国产大学生粉嫩无套流白浆| 另类综合图区| 国产麻豆高清视频在线第一页| 成 人免费视频播放| 国产在线观看a视频| 午夜国产在线| 91中文字幕网| 欧美aaa一级片| 国产三区四区在线观看| 在线中文字幕av| 激情五月色综合亚洲小说| 九九热视频免费观看| 国产欧美日本亚洲精品一4区| 精品女厕厕露p撒尿| 欧美96在线| 国产高清视频免费最新在线| 国产成人精品18| 欧美96在线| 99爱视频在线观看| 国产麻豆综合视频在线观看| 精品a在线观看| 国产一二区在线| xxxxx中文字幕| 国产www.大片在线| 成年午夜在线| 免费观看久久久久| av在线免费播放网站| 国产高清视频在线播放| 超碰国产在线观看| 白浆爆出在线观看| 在线三级中文| 国产视频三区| 国产午夜精品一区理论片| 男女午夜视频在线观看| 在线观看av网站| 中文在线视频观看| 97国产在线| 99久久精品免费观看国产| 国产天堂在线观看| 国产免费黄网站| 国产69精品久久久久孕妇国产69久久 | 欧美午夜电影一区二区三区| 国产精品99999| 最新av免费看| 最好看更新中文字幕| 国产精品偷乱一区二区三区| 成人欧美精品久久久久影院| 欧美成人久久电影香蕉| 免费看成年人视频在线观看| 日本视频二区| 久久精品国产麻豆| 日本最新在线视频| 国产网站麻豆精品视频| 国产羞羞视频| 国产黄色片在线播放| 在线中文字幕av| 日本天堂影院在线视频| 免费国产视频| 中文字幕色视频| 在线天堂中文www视软件| 亚洲欧美久久婷婷爱综合一区天堂| 精品精品导航| 日本成a人片在线观看| 欧美日韩在线视频免费观看| 国产中文字幕在线视频| 国产免费av高清在线| 18 激情视频在线| 三级小说一区| 中文字幕国产视频| 国产视频二区在线观看| 91麻豆免费在线视频| 日本h片在线观看| 91精选福利| 丁香在线视频| gogo高清在线播放免费| 国产丝袜自拍| 青娱乐在线视频观看| 国产黄色高清在线| 国产毛片在线| 亚洲an天堂an在线观看| 国产区成人精品视频| 超碰免费在线播放| 精品国产免费观看一区| 国产在线第一页| jizz性欧美| 永久免费在线观看| 国产黄色高清在线| 日本中文字幕在线看| 免费av在线| 日本久久国产| 三级小说一区| av在线不卡网站| 亚洲精品少妇久久久久久| 97国产视频| 91在线中文| 97国产视频| 精精国产xxxx视频在线中文版| 国产精品区一区二| 中中文字幕av在线| 国产免费av高清在线| 欧美日韩视频精品二区| 日本黄色免费网址| 日本成人a视频| 日本成人网址| 噜噜噜噜噜在线视频| 在线天堂中文| 精品美女在线观看视频在线观看| 国产偷倩在线播放| 国产三级自拍| 精品999视频| 午夜影院免费| 九九精品视频在线观看九九| 国产在线资源| 国产午夜三区视频在线| 国产日韩网站| 2021av天天| 日本不卡影院| 国产一级片在线| 中文av在线播放| 麻豆国产在线播放| 国产日产精品久久久久久婷婷| 国产成人精品综合网站| 日本高清中文字幕在线| 国产免费麻豆视频| 91免费日韩| 国产在线视频福利| 国产9色视频| 国产在线观看网站| 国产精品va在线观看视色| 精品国内一区二区三区免费视频| 四虎成人欧美精品在永久在线| 九九热在线视频| 精品一二三区视频| 九色视频网站| 在线色视频网| 国产精品18久久久久网站| gogo在线高清视频| 国产色在线观看| 黄色国产网站在线播放| 在线免费日韩| 国产精品久久在线| 成视频年人免费看黄网站|