Introduction
This is a simple add-in that allows you to quickly and easily find out which service pack you have
installed for Visual Studio.
Creating the Add-in
Use the Visual C++ Add-in Wizard (specified in MDSN January 2001 in "Creating Add-ins Using Visual C++") to
create an add-in:
- File --> New
- Projects
- Developer Studio Add-In Wizard
- type project name (VSSPVer) and click OK
- Let everything stay checked and click OK.
- Modify the default method name (both in interface and associated C++ class, definition and declaration)
replacing it with the new name OnSPVersion.
The implementation looks like this:
STDMETHODIMP CCommands::OnSPVersion()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
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;
}
That's it. Compile, register the DLL using regsvr32 and that's it. It will appear into
menu Tools/Customize/Add-ins and macro files with the name "VSSPVer Developer Studio Add-in".