如何使程式在執行時自動註冊ActiveX控制項

2021-08-21 23:22:21 字數 2019 閱讀 9327

編寫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 運算子的...