我在控制台用如下命令可以注册com服务:
regsvr32 mydll.dll
这其实是调用了mydll.dll导出的DllRegisterServer函数
可是borland建议程序员不要在程序中直接调用这个函数 当我发布一个软件时不见得让用户自己打控制台命令来注册吧
我想知道自己写程序的实现的方法
谢谢各位
regsvr32 mydll.dll
这其实是调用了mydll.dll导出的DllRegisterServer函数
可是borland建议程序员不要在程序中直接调用这个函数 当我发布一个软件时不见得让用户自己打控制台命令来注册吧
我想知道自己写程序的实现的方法
谢谢各位
解决方案 »
- 超奇怪的问题
- 关于制作补丁软件的问题
- 怎样做出表格样式的界面
- 各位大虾,我现在开发了一个连接SQL SERVER的应用系统,请问怎样把SQL SERVER的客户端引擎和程序一起打包!!(急)
- Delphi的前途好担忧.我对你没有信心~请大家讨论(进者有分)
- show和showmodal有什么区别
- 用Delphi制作的DLL文件可不可以直接被Delphi(或其他应用程序如VB)调用?
- 小女子有急问!!
- 如何用程序对dbgrid中的记录进行选择,全选
- 在Delphi中BDE创建别名后,打开数据库(不是本地的*.DB、*.DBF)时,总是提示用户和密码,其密码是什么?
- 项目计划书!急!
- 如何清空存储过程中参数的值?
不过我用inno setup(is的做出的文件大了点),不知道这个东东有没这个功能
TRegAction = (raRegister, raUnregister);
procedure TRegSvr(FileName :String; RegAction :TRegAction = raRegister);
procedure DLLRegisterServer(FileName :String);
procedure DllUnregisterServer(FileName :String);resourcestring
SELoadFile = 'error in open DLL file';
SEFindProc = 'can''''t find register procedure.';
SERegisterFail = 'not found type library in specific file';
implementationprocedure TRegSvr(FileName :String; RegAction :TRegAction = raRegister);
var
LibHandle :Integer;
Proc :function : HResult; stdcall;
const
SProcName: array[TRegAction] of PChar =
('DllRegisterServer', 'DllUnregisterServer');
begin
LibHandle := LoadLibrary(PChar(FileName));
if LibHandle = 0 then raise Exception.Create(SELoadFile);
try
@Proc := GetProcAddress(LibHandle, SProcName[RegAction]);
if @Proc = nil then raise Exception.Create(SEFindProc);
if Proc <> 0 then raise Exception.Create(SERegisterFail);
finally
FreeLibrary(LibHandle);
end;
end;procedure DLLRegisterServer(FileName :String);
begin
TRegSvr(FileName, raRegister);
end;procedure DllUnregisterServer(FileName :String);
begin
TRegSvr(FileName, raUnregister);
end;end.
var
OCXHand: THandle;
RegFunc: TDllRegisterServer;
begin
Try
OCXHand:= LoadLibrary(PChar('c:\test.Dll'));
RegFunc:= GetProcAddress(OCXHand, 'DllRegisterServer');
if RegFunc <> 0 then
MessageBox(Application.Handle,'不能注册!','提示',MB_ICONINFORMATION+MB_OK);
FreeLibrary(OCXHand);
except
MessageBox(Application.Handle,'注册失败!','提示',MB_ICONINFORMATION+MB_OK);
end;
end;