WinExec('RegSvr32 Which.dll',SW_HIDE);

解决方案 »

  1.   

    Winexec('RegSvr32.exe  Which.dll',1);
      

  2.   

    可是我的文件名还包括一个很长的路径String变量,
    WinExec的第一个参数必须是PChar,请问怎么处理?
    即怎么实现WinExec('RegSvr32 路径变量+文件名‘,SW_HIDE);
      

  3.   

    我有两过程,使用可注册的DLL,及OCX自动注册。
    不用WINEXEC。可用qq:10350670联系一直在线。
      

  4.   

    谢谢各位大虾的帮助!但是还有一个问题:
    WinExec(PChar('RegSvr32  ' + strRegDll1), SW_HIDE);
    我在Winme下用上面的句子还可以,但是在Win2000下仍然有
    回显窗口出现提示我注册成功,怎么办?
      

  5.   

    //注册DLL或删除注册
    function  RegisterDll(dllname:string;op:integer):boolean;
    type
      tagDllReg=function():integer;//DLL接口
    var
      hmdl:HMODULE;
      DllReg:tagDllReg;
      pfile:array[1..1024] of char;
    begin
      try
        strPCopy(@pfile,dllname);
        hmdl:=LoadLibrary(@pfile);
        case op of
        0: //注册
          begin
            DllReg:=GetProcAddress(hmdl,'DllRegisterServer');
            if (@DllReg<>nil) then
            begin
              if (DllReg()=S_OK) then Result:=true else Result:=False;
            end else
            begin
              Result:=False;
              MessageDlg('  没有正确注册或没有找到动态库:'+dllname,mtInformation,[mbOk],0);
            end;
          end;
        1: //删除注册
          begin
            DllReg:=GetProcAddress(hmdl,'DllUnregisterServer');
            if (@DllReg<>nil) then
            begin
              if (DllReg()=S_OK) then Result:=true else Result:=False;
            end else
            begin
              Result:=False;
              MessageDlg('  没有正确删除注册或没有找到动态库:'+dllname,mtInformation,[mbOk],0);
            end;
          end;
        else
          Result:=False;
        end;
      except
        Result:=False;
      end;
    end;