線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3071
推到 Plurk!
推到 Facebook!

如何注册和卸载com里的tlb文件

答題得分者是:Vicen
akali
一般會員


發表:4
回覆:2
積分:1
註冊:2004-08-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-28 10:09:12 IP:220.200.xxx.xxx 未訂閱
因为客户端是98下的,使用com时需要注册和卸载tlb文件,但是,不知道怎么进行操作,查了win sdk,有RegisterTypeLib这个方法,但是看原形: HRESULT RegisterTypeLib(ptlib, szFullPath, szHelpDir) ITypeLib FAR* ptlib OLECHAR FAR* szFullPath OLECHAR FAR* szHelpDir 却不知道怎么用,ITypeLib FAR* ptlib这种怎么在delphi声明?? 希望哪位能指导一下,要是有delphi里注册/卸载tlb文件的例子就更好了,谢谢 ~~learning delphi~~ 發表人 - akali 於 2005/03/28 10:16:58
------
~~learning delphi~~
Vicen
高階會員


發表:13
回覆:145
積分:151
註冊:2005-03-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-28 13:20:57 IP:221.226.xxx.xxx 未訂閱
Uses classes,Forms,Sysutils,Dialogs, ActiveX, ComObj;     function RegisterTypeLibs(LibPath : WideString):Boolean;
Var
  tlib: ITypeLib; 
begin
  try 
    Result := True;
    OleCheck(LoadTypeLib(PWideChar(LibPath), tlib)); 
    OleCheck(RegisterTypeLib(tlib, PWideChar(LibPath),nil)); 
  except 
    Result := False;
  end; 
end;
發表人 - Vicen 於 2005/03/28 13:27:11
akali
一般會員


發表:4
回覆:2
積分:1
註冊:2004-08-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-28 16:22:14 IP:220.200.xxx.xxx 未訂閱
谢谢了 ~~learning delphi~~
------
~~learning delphi~~
akali
一般會員


發表:4
回覆:2
積分:1
註冊:2004-08-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-03-29 11:36:38 IP:220.200.xxx.xxx 未訂閱
不好意思,又有问题了,代码那样打是可以编译过,但是好象注册不起来啊,我是这样打的 //-------------------------------------------------------------- function TtfAutoUpdate.pRegLib(fileName : String):boolean; var sFileName : String; ptlib: ITypeLib; begin sFileName := fileName; try result := true; OleCheck(LoadTypeLib(PWideChar(sFileName), ptlib)); OleCheck(RegisterTypeLib(ptlib, PWideChar(sFileName),nil)); pWriteLog('注册' fileName '成功'); Except on e:Exception do begin result := false; pWriteLog('注册' fileName '失败,错误:' e.Message); end; end; end; //-------------------------------------------------------------- function TtfAutoUpdate.pUnRegLib(fileName : String):boolean; var sFileName : String; ptlib : ITypeLib; ptla : PTLibAttr; begin sFileName := fileName; try result := true; OleCheck(LoadTypeLib(PWideChar(sFileName), ptlib)); OleCheck(ptlib.GetLibAttr(ptla)); OleCheck(UnRegisterTypeLib(ptla.guid,ptla.wMajorVerNum,ptla.wMinorVerNum,ptla.lcid,ptla.syskind)); ptlib.ReleaseTLibAttr(ptla); pWriteLog('卸载' fileName '成功'); Except on e:Exception do begin result := false; pWriteLog('卸载' fileName '失败,错误:' e.Message); end; end; end; 运行时出现这样的信息: 卸载C:\SEATLOADER\file\TrAwoke.tlb失败,错误:加载类型库或动态链接库时出现错误。 注册C:\SEATLOADER\file\TrAwoke.tlb失败,错误:加载类型库或动态链接库时出现错误。 就是这些tlb并没有注册/卸载起来,这是什么原因造成的?谢谢 ~~learning delphi~~
------
~~learning delphi~~
系統時間:2024-04-29 8:36:32
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!