Цитата из MSDN:
CLSIDFromProgID
Looks up a CLSID in the registry, given a ProgID.
HRESULT CLSIDFromProgID(
LPCOLESTR lpszProgID,
LPCLSID pclsid
);
Parameters
lpszProgID
[in] Pointer to the ProgID whose CLSID is requested.
pclsid
[out] Pointer to the retrieved CLSID on return.
Return Values
S_OK
The CLSID was retrieved successfully.
CO_E_CLASSSTRING
The registered CLSID for the ProgID is invalid.
REGDB_E_WRITEREGDB
An error occurred writing the CLSID to the registry. See "Remarks" below.
Remarks
Given a ProgID, CLSIDFromProgID looks up its associated CLSID in the registry. If the ProgID cannot be found in the registry, CLSIDFromProgID creates an OLE 1 CLSID for the ProgID and a CLSID entry in the registry. Because of the restrictions placed on OLE 1 CLSID values, CLSIDFromProgID and CLSIDFromString are the only two functions that can be used to generate a CLSID for an OLE 1 object.
CLSIDFromProgID never triggers an automatic installation of missing classes.
Requirements
Windows NT/2000/XP: Requires Windows NT 3.1 or later.
Windows 95/98: Requires Windows 95 or later.
Header: Declared in objbase.h.
Library: Use ole32.lib.
Правда не знаю как на Axapta, но на С++ будет так
PHP код:
#include "stdafx.h"
#include <objbase.h>
#include <stdio.h>
int main(int argc, char* argv[])
{
LPCOLESTR lpStr=L"Excel.Application";
CLSID findCLSID;
HRESULT hr=CLSIDFromProgID(lpStr,&findCLSID);
if(FAILED(hr))
printf("Error %x\n",hr);
return 0;
}