如何判断某个软件是否安装,比如判断Excel是否安装?谢谢!

解决方案 »

  1.   

    有个苯方法,你可以用
    try
    {
    建立EXCEL的实例对象,如果成功
    return true
    }
    catch
    {
    return false
    }
      

  2.   

    可以查注册表,参考MS知识库:
    Article ID : 289634
      

  3.   

    我以前用查注册表的方法:
    安装过的软件在
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

      

  4.   

    回复人: keiy() ( ) 信誉:100  2005-03-16 19:09:00  得分: 0  
     
     
       我以前用查注册表的方法:
    安装过的软件在
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
    中 对excel可以,其他的可能就不行了  
     
      

  5.   

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
    一般的软件还是有的
      

  6.   

    先谢谢大家了。能否举个例子啊,假设我就要判断Excel,Word有没有装?
      

  7.   

    try
    {
       ShellExecute(this->m_hWnd,"open",
    "Excel.exe","","",
    SW_HIDE );
       return true
    }
    catch
    {
       return false
    }
      

  8.   

    唐秀观的虽然可以判断是否安装了EXCEL软件,但在测试的同时,假如安装了,那么会打开EXCEL程序,这算是未计划的多余行为吧?在测试的同时,并不做额外行为,我觉得才合理。检查注册表是好方法。
      

  9.   

    try
    {
       ShellExecute(this->m_hWnd,"open",
    "Excel.exe","","",
    SW_HIDE );
       return true
       ::SendMessage(hExcel,WM_COLSE,0,0);
    }
    catch
    {
       return false
    }
      

  10.   

    ::SendMessage(hExcel,WM_COLSE,0,0);这样……行吗?
      

  11.   

    //
    void CTest2Dlg::OnButton1() 
    {
    // TODO: Add your control notification handler code here
    CRegKey key,key1;
        DWORD dwIndex=0,lpcbname=100,ret=0;
        char T_name[100];
        FILETIME lpftlast;
        int i=0;
    if (key.Open(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall")==ERROR_SUCCESS)
    {
    for(i=0;ret==ERROR_SUCCESS;i++,dwIndex++)
    {
               ZeroMemory(T_name,100);
               lpcbname=100; ret=RegEnumKeyEx(key,dwIndex,T_name,&lpcbname,
                NULL,NULL,NULL,&lpftlast);
                if (ret==ERROR_SUCCESS)
                  if (key1.Open(key,T_name)==ERROR_SUCCESS)
      {
                     ZeroMemory(T_name,100);
                     lpcbname=100; 
     if (key1.QueryValue(T_name,"DisplayName",&lpcbname)==ERROR_SUCCESS)
     {
                        m_list.InsertString(-1,T_name);
    if (strstr(T_name,"Microsoft Office")!=NULL)
    MessageBox("Microsoft Office 已安装");
     }
     key1.Close();
      }
    }      key.Close();
            
    }
    else
    MessageBox("Error");}