在软件开发过程中,了解所使用的开发环境版本是非常重要的。Visual Studio作为微软推出的集成开发环境(IDE),提供了多种服务包(Service Packs)以增强其功能和稳定性。本文将指导如何创建一个插件,以快速方便地检测安装的Visual Studio服务包版本。
将使用Visual C++Add-inWizard来创建一个插件。这个向导在2001年1月的MDSN中有详细说明。以下是创建插件的步骤:
下面是实现插件核心功能的代码示例:
STDMETHODIMP CCommands::OnSPVersion() {
AFX_MANAGE_STATE(AfxGetStaticModuleState());
// TODO: Replace this with the actual code to execute this command
// 使用m_pApplication访问Developer Studio Application对象
// 使用VERIFY_OK在DEBUG版本中查看错误字符串(参见stdafx.h)
HKEY hkVSSPVer = NULL;
LONG lRetVal = NO_ERROR;
CString strVersion;
lRetVal = ::RegOpenKeyEx(
HKEY_LOCAL_MACHINE,
_T("SOFTWARE\\Microsoft\\VisualStudio\\6.0\\ServicePacks"),
0L,
KEY_READ,
&hkVSSPVer
);
if (lRetVal == NO_ERROR) {
DWORD dwType;
lRetVal = RegQueryValueEx(hkVSSPVer, _T("latest"), NULL, &dwType, NULL, NULL);
if ((lRetVal == NO_ERROR) && (dwType == REG_DWORD)) {
DWORD dwVSSPVersion = 0;
DWORD dwDataLen = sizeof(DWORD);
lRetVal = ::RegQueryValueEx(hkVSSPVer, _T("latest"), NULL, &dwType, (LPBYTE)&dwVSSPVersion, &dwDataLen);
if (lRetVal == NO_ERROR) {
strVersion.Format(IDS_VSSPVER_VERSION, dwVSSPVersion);
} else {
strVersion.LoadString(IDS_VSSPVER_UNKNOWN);
}
} else {
strVersion.LoadString(IDS_VSSPVER_UNKNOWN);
}
RegCloseKey(hkVSSPVer);
} else {
strVersion.LoadString(IDS_VSSPVER_UNKNOWN);
}
VERIFY_OK(m_pApplication->EnableModeless(VARIANT_FALSE));
::MessageBox(NULL, strVersion, _T("Microsoft Visual Studio"), MB_OK | MB_ICONINFORMATION);
VERIFY_OK(m_pApplication->EnableModeless(VARIANT_TRUE));
return S_OK;
}
这段代码首先尝试打开注册表中的Visual Studio服务包版本信息,然后读取最新的服务包版本号。如果读取成功,它将格式化版本号并显示给用户;如果失败,则显示未知版本。