Delphi中Ocx的动态注册方法
2006-04-26 21:33
633 查看
Delphi中Ocx的动态注册方法
方法1
uses windows;
type
TDllRegisterServer = function: HResult; stdcall;
function RegisterOCX(FileName: string): Boolean;
var
OCXHand: THandle;
RegFunc: TDllRegisterServer;
begin
OCXHand := LoadLibrary(PChar(FileName));
RegFunc := GetProcAddress(OCXHand, 'DllRegisterServer');
if @RegFunc <> nil then
Result := RegFunc = S_OK
else
Result := False;
FreeLibrary(OCXHand);
end;
function UnRegisterOCX(FileName: string): Boolean;
var
OCXHand: THandle;
RegFunc: TDllRegisterServer;
begin
OCXHand := LoadLibrary(PChar(FileName));
RegFunc := GetProcAddress(OCXHand, 'DllUnregisterServer');
if @RegFunc <> nil then
Result := RegFunc = S_OK
else
Result := False;
FreeLibrary(OCXHand);
end;
方法2
procedure TForm1.Button1Click(Sender: TObject);
var
astr:String;
bstr:String;
ProcAddr:Pointer;
DllAddr:Integer;
begin
od1.Execute;
astr:=od1.FileName+chr(0);
DllAddr:=LoadLibrary(PChar(astr));
if DllAddr<>0 then
begin
bstr:='DllregisterServer'+chr(0);
//只要将以上处改为DllUnRegisterServer即不注册ActiveX控件
ProcAddr:=GetProcAddress(DllAddr,PChar(bstr));
if ProcAddr<>nil then
CallWindowProc(ProcAddr,DllAddr,0,0,0)
else
ShowMessage(od1.FileName+'不是有效的控件');
FreeLibrary(DllAddr);
end
else
ShowMessage(od1.FileName+'无法装载');
end;
方法1
uses windows;
type
TDllRegisterServer = function: HResult; stdcall;
function RegisterOCX(FileName: string): Boolean;
var
OCXHand: THandle;
RegFunc: TDllRegisterServer;
begin
OCXHand := LoadLibrary(PChar(FileName));
RegFunc := GetProcAddress(OCXHand, 'DllRegisterServer');
if @RegFunc <> nil then
Result := RegFunc = S_OK
else
Result := False;
FreeLibrary(OCXHand);
end;
function UnRegisterOCX(FileName: string): Boolean;
var
OCXHand: THandle;
RegFunc: TDllRegisterServer;
begin
OCXHand := LoadLibrary(PChar(FileName));
RegFunc := GetProcAddress(OCXHand, 'DllUnregisterServer');
if @RegFunc <> nil then
Result := RegFunc = S_OK
else
Result := False;
FreeLibrary(OCXHand);
end;
方法2
procedure TForm1.Button1Click(Sender: TObject);
var
astr:String;
bstr:String;
ProcAddr:Pointer;
DllAddr:Integer;
begin
od1.Execute;
astr:=od1.FileName+chr(0);
DllAddr:=LoadLibrary(PChar(astr));
if DllAddr<>0 then
begin
bstr:='DllregisterServer'+chr(0);
//只要将以上处改为DllUnRegisterServer即不注册ActiveX控件
ProcAddr:=GetProcAddress(DllAddr,PChar(bstr));
if ProcAddr<>nil then
CallWindowProc(ProcAddr,DllAddr,0,0,0)
else
ShowMessage(od1.FileName+'不是有效的控件');
FreeLibrary(DllAddr);
end
else
ShowMessage(od1.FileName+'无法装载');
end;
uses OLEctl {, ....}; interface {...} var OCXHandle: THandle; RegFunc: TDllRegisterServer; begin OCXHandle:= LoadLibrary('c:/XXX.ocx'); RegFunc := GetProcAddress(OCXHandle, 'DllRegisterServer'); if RegFunc <> 0 then ShowMessage('Error!'); FreeLibrary(OCXHand); end; 或者 WinExec("regsvr32.exe/s yourocx.ocx",SW_NORMAL);
相关文章推荐
- 【DLL(OCX)】动态注册方法
- ocx控件注册方法
- 详解两种C#自动实现DLL(OCX)控件注册的方法
- Delphi动态事件深入分析(对象方法在调用的时候会传递一个隐含的Self指针,而该指针的值在EAX中。即左边第一个参数)
- JavaSE JNI 动态注册本地方法(c语言实现native层)
- 安卓 jni 开发之 native 方法的动态注册
- 在程序中动态的注册或注销OCX
- C#自动实现Dll(OCX)控件注册的两种方法
- 方法中启动的Activity动态注册广播,此新启动的Activity接收不到此方法后续发出的广播
- windows7 64位下运行 regsvr32 注册ocx或者dll的方法
- Spring之动态注册bean的实现方法
- C#自动注册第三方提供或是自己编写的DLL或ocx控件的方法
- Delphi开发嵌入IE的OCX,调用页面上JavaScript的方法
- 在Delphi下,使用线程向窗体发送动态数组数据的解决方法~
- delphi cxGrid 动态加载列 的方法
- ios runtime 动态注册一个新类 增加一个方法
- C#自动实现Dll(OCX)控件注册的两种方法
- 注册.OCX文件的方法
- C#自动实现Dll(OCX)控件注册的两种方法