读书人

妖哥小弟我又来请问了

发布时间: 2012-02-16 21:30:36 作者: rapoo

妖哥我又来请教了! - C++ Builder / Windows SDK/API
如何知道程序运行的系统所装的office版本?
只有excel也行。就是想知道是03还是07或者10的?

[解决办法]

C/C++ code
void __fastcall TForm1::Button5Click(TObject *Sender){ Variant MSWord,vSelect ;AnsiString  Str;     try    {          MSWord=Variant::CreateObject("Word.Application");    }    catch(...)    {        MessageBox(0, "启动 Word 出错, 可能是没有安装Word.",                "提示", MB_OK | MB_ICONERROR);        MSWord = Unassigned;        return;    }  MSWord.OlePropertySet("Visible", true);  Str = MSWord.OlePropertyGet("Version");  ShowMessage(Str);  MSWord.OleProcedure("Quit");  MSWord = Unassigned;}//---------------------------------------
[解决办法]
耶喝,看样子zzb完全可以替代我了嘛。

Office安装以后,在注册表会有一些痕迹,抛开人工修改的因素(这也是我一直认为注册表不太靠谱的地方),大致还是可以获取到一些信息的。

针对Word来讲,在注册表中登记的安装路径是:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\x.0\Word\InstallRoot

注意上面的x.0是和版本相关的,需要,需要枚举,从1.0猜到14.0,如果有这个路径存在,再检查InstallRoot的键Path的值,是一个路径,检查这个路径是否存在,如果存在,可以假装安装了这个版本的Word。
[解决办法]
如果是看Excel则是:
HKEY_CLASSES_ROOT\Excel.Application\CurVer
如果是WPS文字则是:
HKEY_CLASSES_ROOT\WPS.Application\CurVer
如果是WPS表格则是:
HKEY_CLASSES_ROOT\ET.Application\CurVer

读书人网 >C++ Builder

热点推荐