displayengines.cpp
来自「在程序中加入脚本支持」· C++ 代码 · 共 48 行
CPP
48 行
void DisplayEngines(void)
{
// get the component category manager for this machine
ICatInformation *pci = 0;
HRESULT hr = CoCreateInstance(CLSID_StdComponentCategoriesMgr,
0, CLSCTX_SERVER,
IID_ICatInformation,
(void**)&pci);
if (SUCCEEDED(hr))
{
// get the list of parseable script engines
CATID rgcatidImpl[1];
rgcatidImpl[0] = CATID_ActiveScriptParse;
IEnumCLSID *pec = 0;
hr = pci->EnumClassesOfCategories(1, rgcatidImpl, 0, 0,
&pec);
if (SUCCEEDED(hr))
{
// print the list of CLSIDs to the console as ProgIDs
enum {CHUNKSIZE = 16};
CLSID rgclsid[CHUNKSIZE];
ULONG cActual;
do
{
hr = pec->Next(CHUNKSIZE, rgclsid, &cActual);
if (FAILED(hr))
break;
if (hr == S_OK)
cActual = CHUNKSIZE;
for (ULONG i = 0; i < cActual; i++)
{
OLECHAR *pwszProgID = 0;
if (SUCCEEDED(ProgIDFromCLSID(rgclsid[i], &pwszProgID)))
{
printf("%S\n", pwszProgID);
CoTaskMemFree(pwszProgID);
}
}
}
while (hr != S_FALSE);
pec->Release();
}
pci->Release();
}
else
printf("###error: couldn't load category manager\n");
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?