Click here to Skip to main content
16,004,977 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
GeneralRe: button settings Pin
*Dreamz13-Sep-05 2:00
*Dreamz13-Sep-05 2:00 
AnswerRe: add two functions for a button Pin
logicaldna13-Sep-05 1:30
logicaldna13-Sep-05 1:30 
AnswerRe: add two functions for a button Pin
toxcct13-Sep-05 21:27
toxcct13-Sep-05 21:27 
Questioncalculating function time,Interesting Pin
logicaldna13-Sep-05 1:03
logicaldna13-Sep-05 1:03 
AnswerRe: calculating function time,Interesting Pin
Cedric Moonen13-Sep-05 2:11
Cedric Moonen13-Sep-05 2:11 
AnswerRe: calculating function time,Interesting Pin
John R. Shaw13-Sep-05 2:44
John R. Shaw13-Sep-05 2:44 
QuestionRe: calculating function time,Interesting Pin
logicaldna13-Sep-05 18:42
logicaldna13-Sep-05 18:42 
QuestionNobody??WMI,set Ip Address,Doesn't work! Help!!! Pin
Tcpip200513-Sep-05 0:51
Tcpip200513-Sep-05 0:51 
Sigh | :sigh: I use WMI to set Ip Address for my local computer.
every function works well. but nothing changed.
Why?? I use vc6,xp OS. For some header files,you can found them from vc7, just copy them to the Include directory for vc6.
BSTR Path = SysAllocString(L"\\\\MyComputerName\\root\\cimv2");
for a test,the above line must be modified.replace "MyComputerName" with your own computer name.
I paste all the code here. A win32 console app.
Thank you everyone.


#define _WIN32_DCOM
#include
#pragma comment(lib,"Wbemuuid.lib")
#include
//#include "wbemcli.h"
#include "objbase.h"
#include
#include
#pragma comment(lib, "comsupp.lib")
void CreateOneElementBstrArray(VARIANT* v, LPCWSTR s)
{
SAFEARRAYBOUND bound[1];
SAFEARRAY* array;
bound[0].lLbound = 0;
bound[0].cElements = 1;
array = SafeArrayCreate(VT_BSTR, 1, bound);
long index = 0;
BSTR bstr = SysAllocString(s);
SafeArrayPutElement(array, &index, bstr);
SysFreeString(bstr);
VariantInit(v);
v->vt = VT_BSTR | VT_ARRAY;
v->parray = array;
}
HRESULT __fastcall UnicodeToAnsi(LPCOLESTR pszW, LPSTR* ppszA)
{

ULONG cbAnsi, cCharacters;
DWORD dwError;

// If input is null then just return the same.
if (pszW == NULL)
{
*ppszA = NULL;
return NOERROR;
}

cCharacters = wcslen(pszW)+1;
// Determine number of bytes to be allocated for ANSI string. An
// ANSI string can have at most 2 bytes per character (for Double
// Byte Character Strings.)
cbAnsi = cCharacters*2;

// Use of the OLE allocator is not required because the resultant
// ANSI string will never be passed to another COM component. You
// can use your own allocator.
*ppszA = (LPSTR) CoTaskMemAlloc(cbAnsi);
if (NULL == *ppszA)
return E_OUTOFMEMORY;

// Convert to ANSI.
if (0 == WideCharToMultiByte(CP_ACP, 0, pszW, cCharacters, *ppszA,
cbAnsi, NULL, NULL))
{
dwError = GetLastError();
CoTaskMemFree(*ppszA);
*ppszA = NULL;
return HRESULT_FROM_WIN32(dwError);
}
return NOERROR;

}

void PrintWMIError(HRESULT hr)
{
IWbemStatusCodeText * pStatus = NULL;
HRESULT hres = CoCreateInstance(CLSID_WbemStatusCodeText, 0,
CLSCTX_INPROC_SERVER,IID_IWbemStatusCodeText, (LPVOID *) &pStatus);
if(S_OK == hres)
{
BSTR bstrError;
hres = pStatus->GetErrorCodeText(hr, 0, 0, &bstrError);
if(S_OK != hres)
bstrError = SysAllocString(L"Get last error failed");
LPSTR pszStatusTextA;
UnicodeToAnsi(bstrError, &pszStatusTextA);
printf("%s\n",pszStatusTextA);
CoTaskMemFree(pszStatusTextA);
pStatus->Release();
SysFreeString(bstrError);
}
}
HRESULT ConfigNet()
{

IWbemLocator *pLocator=NULL;
IWbemServices *pNamespace=NULL;
IWbemClassObject *pClass=NULL;
IWbemClassObject *pInputParamClass=NULL;
IWbemClassObject *pInputParamInstance=NULL;
IWbemClassObject * pOutInst = NULL;
BSTR InstancePath = SysAllocString(L"Win32_NetworkAdapterConfiguration=2");
HRESULT hr;
BSTR Path = SysAllocString(L"\\\\MyComputerName\\root\\cimv2");
BSTR ClassPath = SysAllocString(L"Win32_NetworkAdapterConfiguration");
BSTR MethodName = SysAllocString(L"EnableStatic");
LPCWSTR Arg1Name = L"IPAddress";
VARIANT var1;
LPCWSTR Arg2Name = L"SubnetMask";
VARIANT var2;
__try
{
CreateOneElementBstrArray(&var1, L"10.0.0.101");
CreateOneElementBstrArray(&var2, L"255.255.255.0");

CoCreateInstance(CLSID_WbemLocator, 0,
CLSCTX_INPROC_SERVER,
IID_IWbemLocator, (LPVOID*)&pLocator);

hr = pLocator->ConnectServer(Path,NULL, NULL, NULL, 0, NULL, NULL,
&pNamespace);

hr = CoSetProxyBlanket( pNamespace,
RPC_C_AUTHN_WINNT,
RPC_C_AUTHZ_NONE,
NULL,
RPC_C_AUTHN_LEVEL_CALL,
RPC_C_IMP_LEVEL_IMPERSONATE,
NULL,
EOAC_NONE);

if(!SUCCEEDED(hr))
{
PrintWMIError(hr);
return hr;
}
if(SUCCEEDED(hr))
{
hr = pNamespace->GetObject(ClassPath, 0, NULL, &pClass, NULL);
}
if(!SUCCEEDED(hr))
{
PrintWMIError(hr);
return hr;
}
if(SUCCEEDED(hr))
{
hr = pClass->GetMethod(MethodName, 0, &pInputParamClass, NULL);
}
if(!SUCCEEDED(hr))
{
PrintWMIError(hr);
return hr;
}
if(SUCCEEDED(hr))
{
hr = pInputParamClass->SpawnInstance(0, &pInputParamInstance);
}
if(!SUCCEEDED(hr))
{
PrintWMIError(hr);
return hr;
}
if(SUCCEEDED(hr))
{
hr = pInputParamInstance->Put(Arg1Name, 0, &var1, 0);
}
if(!SUCCEEDED(hr))
{
PrintWMIError(hr);
return hr;
}
if(SUCCEEDED(hr))
{
hr = pInputParamInstance->Put(Arg2Name, 0, &var2, 0);
}
if(!SUCCEEDED(hr))
{
PrintWMIError(hr);
return hr;
}
if(SUCCEEDED(hr))
{
hr = pNamespace->ExecMethod(InstancePath, MethodName, 0, NULL,
pInputParamInstance, &pOutInst, NULL);
}
if(!SUCCEEDED(hr))
{
PrintWMIError(hr);
return hr;
}
}
__finally
{
if(pInputParamInstance)
pInputParamInstance->Release();
if(pInputParamClass)
pInputParamClass->Release();
if(pClass)
pClass->Release();
if(pNamespace)
pNamespace->Release();
if(pLocator)
pLocator->Release();
}
return hr;
}

int _tmain(int argc, _TCHAR* argv[])
{

CoInitialize(NULL);
ConfigNet();
CoUninitialize();
printf("Program end\n");
return 0;
}

QuestionI got runtime error when I am moving toolbars in my program. Pin
G Haranadh13-Sep-05 0:14
G Haranadh13-Sep-05 0:14 
QuestionSerial communication Pin
Aditi48412-Sep-05 23:59
Aditi48412-Sep-05 23:59 
AnswerRe: Serial communication Pin
MailtoGops13-Sep-05 3:15
MailtoGops13-Sep-05 3:15 
GeneralRe: Serial communication Pin
Aditi48413-Sep-05 3:50
Aditi48413-Sep-05 3:50 
AnswerRe: Serial communication Pin
John R. Shaw13-Sep-05 4:06
John R. Shaw13-Sep-05 4:06 
AnswerRe: Serial communication Pin
Roger Stoltz13-Sep-05 6:35
Roger Stoltz13-Sep-05 6:35 
GeneralRe: Serial communication Pin
Aditi48413-Sep-05 23:26
Aditi48413-Sep-05 23:26 
AnswerRe: Serial communication Pin
Roger Stoltz14-Sep-05 1:00
Roger Stoltz14-Sep-05 1:00 
AnswerRe: Serial communication Pin
Aditi48414-Sep-05 1:36
Aditi48414-Sep-05 1:36 
GeneralRe: Serial communication Pin
Roger Stoltz14-Sep-05 5:00
Roger Stoltz14-Sep-05 5:00 
AnswerRe: Serial communication Pin
Aditi48415-Sep-05 21:51
Aditi48415-Sep-05 21:51 
QuestionHow to add a Scheduled Task to the Task Scheduler Pin
PravinSingh12-Sep-05 23:55
PravinSingh12-Sep-05 23:55 
AnswerRe: How to add a Scheduled Task to the Task Scheduler Pin
prasad_som13-Sep-05 0:03
prasad_som13-Sep-05 0:03 
AnswerRe: How to add a Scheduled Task to the Task Scheduler Pin
David Crow13-Sep-05 2:30
David Crow13-Sep-05 2:30 
Questionmemory management Pin
Ali Tavakol12-Sep-05 23:55
Ali Tavakol12-Sep-05 23:55 
Questionserver and client Pin
Member 216100412-Sep-05 23:54
Member 216100412-Sep-05 23:54 
QuestionCDC::SelectObject Pin
Nishad S12-Sep-05 23:33
Nishad S12-Sep-05 23:33 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.