編寫delphi應用程式時,經常會遇到一些activex控制項[注:擴充套件名為ocx的控制項或dll的型別庫],它們為應用程式的開發提供了簡單的操作途徑。然而,這些程式在發布的同時,面臨activex控制項註冊問題。
解決途徑:一、用安裝程式製作打包檔案,往往會給增加程式本身的大小,系統重灌時,則必須重新安裝它;二、用程式本身進行**編寫函式的形式處理它。
使用方法分為兩種:
一、直接把視覺化的activex控制項放到程式中;
二、執行時根據需要實時建立。
如果是直接使用,則應用程式在初始化的過程中會自動尋找、建立所需的activex控制項,如果控制項沒有註冊,初始化程式會產生乙個異常,捕捉並處理這個異常。
在程式form中加入乙個新的方法:
unit uautoregactivex;
inte***ce
uses
windows, messages, sysutils, variants, classes, graphics, controls, forms, dialogs, comobj; //加入comobj單元
type
tautoregactivexfrm = class(tform)
procedure formcreate(sender: tobject);
private
public
protected
procedure checkexception(sender: tobject; eabort: exception);
end;
varautoregactivexfrm: tautoregactivexfrm;
implementation
function oleregister(solefilename: string; oleaction: byte):boolean;
const
registerole = 1; //註冊
unregisterole = 0; //解除安裝
type
toleregisterfunction = function: hresult; //註冊或解除安裝函式原型
varhlibraryhandle: thandle; //由loadlibray返回的dll或ocx控制代碼
hfunctionaddress: tfarproc; //dll或ocx中的函式控制代碼,由getproaddress返回
regfunction: toleregisterfunction; //註冊或解除安裝函式指標
begin
result := false;
//開啟檔案,返回dll或ocx控制代碼
hlibraryhandle := loadlibrary(pchar(solefilename));
if (hlibraryhandle > 0) then //dllakg ocx控制代碼正確
try//返回註冊或解除安裝函式指標
if (oleaction = registerole) then //返回註冊函式指標
hfunctionaddress := getprocaddress(hlibraryhandle,pchar('dllregisterserver'))
else //返回解除安裝函式指標
hfunctionaddress := getprocaddress(hlibraryhandle,pchar('dllunregisterserver'));
if (hfunctionaddress <> nil) then //判斷註冊或解除安裝函式是否存在
begin
regfunction := toleregisterfunction(hfunctionaddress); //獲取操作函式的指標
if regfunction >=0 then //執行註冊或解除安裝操作,返回值》=0表示執行成功
result := true;
end;
finally
freelibrary(hlibraryhandle); //關閉已開啟的檔案
end;
end;
end.
在程式執行時自動註冊ActiveX控制項
編寫delphi應用程式時,經常會遇到一些activex控制項 注 擴充套件名為ocx的控制項或dll的型別庫 它們為應用程式的開發提供了簡單的操作途徑。然而,這些程式在發布的同時,面臨activex控制項註冊問題。解決途徑 一 用安裝程式製作打包檔案,往往會給增加程式本身的大小,系統重灌時,則必須...
如何在執行時確定物件型別(RTTI)
如何在執行時確定物件型別 rtti rtti 是 runtime type information 的縮寫,意思是 執行時型別資訊。它提供了執行時確定物件型別的方法。本文將簡略介紹 rtti 的一些背景知識 描述 rtti 的概念,並通過具體例子和 介紹什麼時候使用以及如何使用 rtti 本文還將詳...
如何在執行時確定物件型別(RTTI)
rtti 是 runtime type information 的縮寫,意思是 執行時型別資訊。它提供了執行時確定物件型別的方法。本文將簡略介紹 rtti 的一些背景知識 描述 rtti 的概念,並通過具體例子和 介紹什麼時候使用以及如何使用 rtti 本文還將詳細描述兩個重要的 rtti 運算子的...