首页 > 代码库 > delphi注册/反注册OCX
delphi注册/反注册OCX
uses ShellAPI; function ExecAndWait(const ExecuteFile, ParamString : string): boolean;var SEInfo: TShellExecuteInfo; ExitCode: DWORD;begin FillChar(SEInfo, SizeOf(SEInfo), 0); SEInfo.cbSize := SizeOf(TShellExecuteInfo); with SEInfo do begin fMask := SEE_MASK_NOCLOSEPROCESS; Wnd := Application.Handle; lpFile := PChar(ExecuteFile); lpParameters := PChar(ParamString); nShow := SW_HIDE; end; if ShellExecuteEx(@SEInfo) then begin repeat Application.ProcessMessages; GetExitCodeProcess(SEInfo.hProcess, ExitCode); until (ExitCode <> STILL_ACTIVE) or Application.Terminated; Result:=True; end else Result:=False;end; procedure RegisterOCX;type TRegFunc = function : HResult; stdcall;var ARegFunc : TRegFunc; aHandle : THandle; ocxPath : string;begin try ocxPath :=‘E:\SVN\Matrix控件\JydMax.ocx‘ ;//ExtractFilePath(Application.ExeName) + ‘Flash.ocx‘; aHandle := LoadLibrary(PChar(ocxPath)); if aHandle <> 0 then begin ARegFunc := GetProcAddress(aHandle,‘DllRegisterServer‘); if Assigned(ARegFunc) then begin ExecAndWait(‘regsvr32‘,‘/s ‘ + ocxPath); end; FreeLibrary(aHandle); end; except ShowMessage(Format(‘Unable to register %s‘, [ocxPath])); end;end; {1.} 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.} function RegisterServer(const aDllFileName: string; aRegister: Boolean): Boolean;type TRegProc = function: HResult; stdcall;const cRegFuncNameArr: array [Boolean] of PChar = (‘DllUnregisterServer‘, ‘DllRegisterServer‘);var vLibHandle: THandle; vRegProc: TRegProc;begin Result := False; vLibHandle := LoadLibrary(PChar(aDllFileName)); if vLibHandle = 0 then Exit; @vRegProc := GetProcAddress(vLibHandle, cRegFuncNameArr[aRegister]); if @vRegProc <> nil then Result := vRegProc = S_OK; FreeLibrary(vLibHandle);end;
http://www.cnblogs.com/toosuo/p/3226193.html
delphi注册/反注册OCX
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。