小弟近日学习ActiveX编程
但我发现我的计算机无法注册.ocx的文件
在WIN2000 Server 和 Professional中
用VC的工具和regsvr32都不行
我重装了系统也不行
但在别人的机器上可以
小弟的配置如下
CPU:奔腾3 700MHz
内存:KingMax 128M + 金斯顿 256M(两块都为SDRAM)
主板:技嘉的 GA-6VXE7+
显卡:艾尔莎 影雷者517TV-OUT
声卡:创新(型号忘了)
网卡:(名字忘了)
请问各位大虾我的这个问题是否由硬件引起?
如不是哪位高手可以帮小弟解决,小弟在此先谢了。
附:小弟的IIS也无法运行(已装上IIS所有组件)不知是否和以上问题有关

解决方案 »

  1.   

    你试试从其他人机器考一个regsvr32.exe
      

  2.   

    有些ocx是需要有其他的ocx(dll)支持的,必须要放在同一目录下,才能注册,你看看你的ocx是不是独立的。
      

  3.   

    好象有问题,我的iis在使用com时
    回自动启动
      

  4.   

    regsvr32 d:\xxx.dll
    编写程序
    //注册控件
    void CDllRegisterServerDlg::OnRegister() 
    {
    // TODO: Add your control notification handler code here
      RunDllFunc("DllRegisterServer");
    }
    //注销空件
    void CDllRegisterServerDlg::OnUnregister() 
    {
    // TODO: Add your control notification handler code here
    RunDllFunc("DllUnregisterServer");
    }void CDllRegisterServerDlg::RunDllFunc(CString strFuncName)
    {
      CString strMsg;
      
      UpdateData(TRUE);
      HINSTANCE h=::LoadLibrary(m_strDllName);  //m_strDllName为控件dll文件路径+文件名
      if(h == NULL)
      {
        strMsg.Format("Find not File: %s.", m_strDllName);
        MessageBox(strMsg,"Find File",MB_OK);
        return;
      }
      
      FARPROC pFunc= ::GetProcAddress((HMODULE)h,strFuncName);
      if(pFunc ==NULL)
      {
        strMsg.Format("Find not %s Function");
        MessageBox(strMsg,"Find Function",MB_OK);
        return;
      }
      if(S_OK==(*pFunc)())//(*pFunc)())
      {
        strMsg.Format("Ok: %s to %s succeeded.",strFuncName,m_strDllName);
      }
      else
      {
        strMsg.Format("Eorr: %s to %s eorr.",strFuncName,m_strDllName);
      }
      MessageBox(strMsg);
    }
      

  5.   

    大概你的ocx需要其他的dll文件,建议你另外做个debug程序,用mlin2000(离子)的方法可检测出到底缺少哪些dll文件,把它们复制到当前目录,good luck!