Sziasztok!
A következő kóddal lenne problémám.
BSTR clsname = SysAllocString(L"Win32_OperatingSystem");
BSTR MethodName = SysAllocString(L"Win32Shutdown");
IWbemClassObject* pClsProc = NULL;
IWbemClassObject* pInParams = NULL;
IWbemClassObject* pOutMethod = NULL;
IWbemClassObject* pClsProcInst = NULL;
hres = pSvc->GetObject(clsname, 0, NULL, &pClsProc, NULL);
if( SUCCEEDED(hres) ) {
hres = pClsProc->GetMethod(MethodName, 0, &pInParams,NULL);
if( SUCCEEDED(hres) ) {
hres = pInParams->SpawnInstance(0, &pClsProcInst);
if( SUCCEEDED(hres) ) {
VARIANT pcVal;
VARIANT rsVal;
VariantInit(&pcVal);
pcVal.vt = VT_I4;
pcVal.lVal = 1;
VariantInit(&rsVal);
rsVal.vt = VT_I4;
rsVal.lVal = 0;
hres = pClsProcInst->Put(L"Flags", 0,&pcVal, 0 );
hres = pClsProcInst->Put(L"Reserved", 0,&rsVal, 0);
if( SUCCEEDED(hres) ) {
hres = pSvc->ExecMethod(clsname, MethodName, 0, NULL, pClsProcInst, &pOutMethod, NULL);
if(FAILED(hres)) {
cout << "Could not execute method. Error code = 0x" << hex << hres << endl;
Console:eadLine();
}
}
VariantClear(&pcVal);
VariantClear(&rsVal);
}
}
}
[link]A kódot ennek az oldalnak a 6. pontja mintájára készítettem.
Az oldalon lévő eredeti kóddal nincs is probléma. Azonban a fenti kódot sehogy sem tudom működésre bírni.
Futtatás alatt ahogy a "hres = pSvc->ExecMethod(clsname, MethodName, 0, NULL, pClsProcInst, &pOutMethod, NULL);" részhez ér, ezt a hibaüzenetet írja ki: 0x8004102f
[link]Win32Shutdown -leírása itt.
Ha valaki tudja a hiba okát, kérem segítsen.
Köszi.