在DOS提示符下 直接敲 regsvr32 *.ocx

解决方案 »

  1.   

    1.  在开始菜单处选择运行,输入  regsvr32 .ocx文件所在路径名
      

  2.   

    怎样用api注册呢???
    怎样用api注册呢???
    怎样用api注册呢???
    怎样用api注册呢???
    怎样用api注册呢???
    怎样用api注册呢???
    怎样用api注册呢???
    怎样用api注册呢???
    怎样用api注册呢???
      

  3.   

    开始菜单的运行对话框里运行regsvr32 (在后面写上你的OCX的完全路径, )或 WinExec('regsvr32 /s mscomctl.ocx',SW_HIDE);
    function MyUtil_RegisterOCX(Filename: pchar) : integer; stdcall;
    var
       hOCX: Integer;
       pReg: procedure;
    begin
       hOCX := LoadLibrary(pchar(Filename));
       if (hOCX <> 0) Then
          begin
             pReg := GetProcAddress(hOCX, 'DllRegisterServer');
             pReg;   { Anropa funktionen }
             FreeLibrary(hOCX);
             result := 0;
          end
       else
          result := -1;
    end;
    在程序中实现ocx的注册. 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;
      

  4.   

    function RegisterOleFile (strOleFileName : STRING; OleAction : boolean ) : BOOLEAN;
    const
      RegisterOle = true;//注册
      UnRegisterOle = false;//卸载
    type
      TOleRegisterFunction = function : HResult;//注册或卸载函数的原型
    var
      hLibraryHandle : THandle;//由LoadLibrary返回的DLL或OCX句柄
      hFunctionAddress: TFarProc;//DLL或OCX中的函数句柄,由GetProcAddress返回
      RegFunction : TOleRegisterFunction;//注册或卸载函数指针
    begin
      Result := FALSE;
      //打开OLE/DCOM文件,返回的DLL或OCX句柄
      hLibraryHandle := LoadLibrary(PCHAR(strOleFileName));
      if (hLibraryHandle > 0) then//DLL或OCX句柄正确
          try
            //返回注册或卸载函数的指针
            if (OleAction = RegisterOle) then//返回注册函数的指针
               hFunctionAddress := GetProcAddress(hLibraryHandle, pchar('DllRegisterServer'))
               else//返回卸载函数的指针
                   hFunctionAddress := GetProcAddress(hLibraryHandle, pchar('DllUnregisterServer'));
            if (hFunctionAddress <> NIL) then//注册或卸载函数存在
               begin
                 RegFunction := TOleRegisterFunction(hFunctionAddress);//获取操作函数的指针
                 if RegFunction >= 0 then //执行注册或卸载操作,返回值>=0表示执行成功
                    result := true;
               end;
          finally
            FreeLibrary(hLibraryHandle);//关闭已打开的OLE/DCOM文件
          end;
    end;