妖哥我又来请教了! - C++ Builder / Windows SDK/API
如何知道程序运行的系统所装的office版本?
只有excel也行。就是想知道是03还是07或者10的?
[解决办法]
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