Article ID: 200074
Article Last Modified on 10/24/2003
256986 Description of the Microsoft Windows Registry
#include <bldauto.h> IBuildProject* pIBuildProject = NULL; pIGenericProject->QueryInterface(IID_IBuildProject, (void**)&pIBuildProject));
// IBuildProject.odl : type library source for IBuildProject.tlb
// This file will be processed by the Make Type Library (mktyplib) tool to
// produce the type library (IBuildProject.tlb).
[ uuid(48187B40-02D6-11D1-A308-00A0C909E775), version(1.0),
helpstring ("Type Library to properly register IBuildProject") ]
library AddIn
{
importlib("stdole32.tlb");
importlib("devshl.dll");
importlib("ide/devbld.pkg");
[ uuid(96961264-A819-11CF-AD07-00A0C9034965),
helpstring("Represents a group of related files that can include one or more configurations"),
oleautomation,
dual
]
interface IBuildProject : IGenericProject
{
// methods
[id(0x00000064), propget, helpstring("Returns the set of configurations in this project")]
HRESULT Configurations([out, retval] IConfigurations** Configurations);
};
};
MKTYPLIB IBuildProject.odl
REGEDIT4
[HKEY_CLASSES_ROOT\Interface\{96961264-A819-11CF-AD07-00A0C9034965}]
@="IBuildProject"
[HKEY_CLASSES_ROOT\Interface\{96961264-A819-11CF-AD07-00A0C9034965}\ProxyStubClsid]
@="{00020424-0000-0000-C000-000000000046}"
[HKEY_CLASSES_ROOT\Interface\{96961264-A819-11CF-AD07-00A0C9034965}\ProxyStubClsid32]
@="{00020424-0000-0000-C000-000000000046}"
[HKEY_CLASSES_ROOT\Interface\{96961264-A819-11CF-AD07-00A0C9034965}\TypeLib]
@="{48187B40-02D6-11D1-A308-00A0C909E775}"
"Version"="1.0"<BR/>
<BR/>
[HKEY_CLASSES_ROOT\TypeLib\{48187B40-02D6-11D1-A308-00A0C909E775}]
[HKEY_CLASSES_ROOT\TypeLib\{48187B40-02D6-11D1-A308-00A0C909E775}\1.0]
@="IBuildProject Type Library"
[HKEY_CLASSES_ROOT\TypeLib\{48187B40-02D6-11D1-A308-00A0C909E775}\1.0\409]
[HKEY_CLASSES_ROOT\TypeLib\{48187B40-02D6-11D1-A308-00A0C909E775}\1.0\409\win32]
@="c:\\Program Files\\DevStudio\\SharedIDE\\BIN\\IDE\\IBuildProject.tlb"
[HKEY_CLASSES_ROOT\TypeLib\{48187B40-02D6-11D1-A308-00A0C909E775}\1.0\FLAGS]
@="0"
Save this file as IBuildProject2.reg.
#include <afx.h> // For ASSERT
#include <atlbase.h> // For COM smart pointers
#import <devshl.dll> // For DSSharedObjects
#import <devbld.pkg> // For DSProjectSystem
#import <IBuildProject.tlb> rename_namespace("IBP2") // Fixed .tlb
using namespace DSSharedObjects; // Namespace declared in type library
using namespace DSProjectSystem;
void main()
{
CoInitialize( NULL ); // Make sure COM is initialized
CLSID clsidDevStudio; // Get DevStudio's current CLSID
HRESULT hr = CLSIDFromProgID( L"MSDev.Application",
&clsidDevStudio );
// {FB7FDAE2-89B8-11CF-9BE8-00A0C90A632C};
if (SUCCEEDED( hr ))
{
CComPtr<IUnknown> pUnk; // Use smart pointer
hr = GetObject( clsidDevStudio, NULL, &pUnk );
if (SUCCEEDED( hr ))
{
CComQIPtr<IApplication, &__uuidof( IApplication )>
pApplication( pUnk );
ASSERT( NULL != pApplication.p ); // Make sure we got the pointer
CComPtr<IDispGenericProject>
pDGenericProject( (IDispGenericProject *)pApplication->ActiveProject );
ASSERT( NULL != pDGenericProject.p );
CComQIPtr<IBuildProject, &__uuidof( IBuildProject )>
pProject1( pDGenericProject );
ASSERT( NULL != pProject1.p ); // ASSERT!
// This assertion fails because DSProjectSystem::IBuildProject contains invalid UUID
// Fix by setting it to 96961264-a819-11cf-ad07-00a0c9034965 (matches ObjModel\bldguid.h)
CComQIPtr<IBP2::IBuildProject, &__uuidof( IBP2::IBuildProject )>
pProject2( pDGenericProject );
ASSERT( NULL != pProject2.p );
// This assertion is OK because IBP2::IBuildProject contains correct UUID
}
else ; // "Developer Studio is not running"
}
else ; // "Developer Studio is not properly installed on this machine"
CoUninitialize();
}
173483 HOWTO: Create Custom AppWizards that Generate Non-MFC Projects
Keywords: kbbug kbfix kbide kbvc600fix kbenv kbautomation kbdsstools KB200074