首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

妖哥小弟我又来请问了

2012-02-16 
妖哥我又来请教了! - C++ Builder / Windows SDK/API如何知道程序运行的系统所装的office版本?只有excel也

妖哥我又来请教了! - 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

热点排行