Ich habe ein kleines aber auch ein gutes Beispiel gefunden...
IN VISUAL BASIC:
sub Main()
DIM CATIA as INFITF.Application
SET CATIA = GetObject(,"CATIA.Application")
DIM Doc as Document
SET Doc = CATIA.ActiveDocument
MsgBox Doc.Fullname
end sub
IN VISUAL C++
int connectToSE( ApplicationPtr & seApp,int create )
{
HRESULT Result=NOERROR;
BOOL bVisible=FALSE, bDone=FALSE;
CLSID AppClsid;
IUnknown *pAppUnk=NULL;
::leInitialize(NULL);
Result = ::CLSIDFromProgID( L"CATIA.Application", &AppClsid );
Result = ::GetActiveObject( AppClsid, NULL, &pAppUnk );
if( FAILED( Result ))
{
if( ! create )
return 0;
if(( CoCreateInstance( AppClsid, NULL, CLSCTX_LOCAL_SERVER, IID_IUnknown, ( void** )&pAppUnk )) != S_OK )
return 0;
}
Result = pAppUnk->QueryInterface( __uuidof( Application ), ( void ** )&seApp );
pAppUnk->Release( );
pAppUnk = NULL;
return seApp.GetInterfacePtr( )!= NULL;
}
int main( ... )
{
CoInitialize( 0 );
ApplicationPtr myCatiaApp;
connectToSE( myCatiaApp, 1 );
}
und in diesem Sinne geht es für jedes Objekt...
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP