倾家荡产求助如何不使用安装程序而注册ActiveX控件,急!!!(150分)

  • 主题发起人 主题发起人 DelCai
  • 开始时间 开始时间
D

DelCai

Unregistered / Unconfirmed
GUEST, unregistred user!
我是一个刚刚踏入大富翁论坛的菜鸟,已经提了一个问题,因为不懂得问题实在太多了!
现在只剩下一百五十分了,全部奉献了,只要能学到东西!
我编了一个Flash播放器,因为使用了ActiveX控件,所以在没有装过Flash的机器里就不能
运行,提示必须进行注册。我知道可以使用安装程序进行注册,但是我不想使用安装程序,
所以肯请大虾们帮忙!(WindowsXP D7),如果有代码,测试通过,分数全部奉上!
就这么一点分了,不要见笑!
 
建议还是使用安装程序。在安装程序结束时,调用一个批处理文件或着EXE文件,执行注册操作。
注册OCX采用的是REGSVR32.EXE。你可以把这个程序一起打包进你的程序里,
采用REGSVR32.EXE XX.OCX /S的方法,来进行注册操作。
如果实在不想用安装程序,你需要在你的程序创建时,自动去判断下系统是否安装最新的
FLASH的OCX组件,如果安装,不进行任何操作。没有安装,则利用程序的CREATE过程,自动执行系统
的REGSVR32程序注册OCX。
 
您能给我不用安装程序的代码吗?我实在是搞不定!只要测试通过分全是你的!谢了!
 
我的mail:suxujinhua@sina.com,为盼!
 
procedure TForm1.Button1Click(Sender: TObject);
type
TDLLRegisterServer = function: HResult stdcall;
var
MyOcx : THandle;
DllReg : TDllRegisterServer;
begin

MyOcx:= LoadLibrary('c:/mydir/test.ocx');
@DllReg := GetProcAddress(MyOcx, 'DllRegisterServer');
if DllReg <> 0 then
ShowMessage('Error registering');
FreeLibrary(MyOcx);
end;

 
我试一下你的代码!
 
//------------------------------------------------------------------------------
//注册控件(在NT下)
// 司马华鹏
function RegisterOcxInNT:Boolean;
var
DllRegisterServer :function () : Integer;
Stdcall;
DllName:string;
Buffer:array [0..127] of char;
Lib:Thandle;
begin

Result:=False;
DllName:=ExtractFilePath(paramstr(0)) + 'a.dll';
if not fileExists(DllName) then
begin

Alert('没有找到文件!');
exit;
end;


strPcopy(buffer,Dllname);
Lib:=LoadLibrary(Buffer);
if Lib<>0 then

try
@DllRegisterServer:=GetProcAddress(Lib,'DllRegisterServer');
if DllRegisterServer=ERROR_SUCCESS then

Prompt('成功!')
else
begin

Alert('失败!');
Exit;
end;

finally
freeLibrary(Lib)
end
else
begin

Alert('载入失败!');
exit;
end;

Result:=True;
end;
 
多人接受答案了。
 
后退
顶部