在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
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;
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论