Click here to Skip to main content
15,891,689 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
AnswerRe: percentage on progress bar Pin
Viorel.16-Nov-06 1:27
Viorel.16-Nov-06 1:27 
AnswerRe: percentage on progress bar Pin
David Crow16-Nov-06 3:05
David Crow16-Nov-06 3:05 
AnswerRe: percentage on progress bar Pin
Hamid_RT16-Nov-06 8:05
Hamid_RT16-Nov-06 8:05 
QuestionSet IP programmatically [modified] Pin
A_Fa16-Nov-06 0:00
A_Fa16-Nov-06 0:00 
AnswerRe: Set IP programmatically Pin
TClarke16-Nov-06 0:50
TClarke16-Nov-06 0:50 
GeneralRe: Set IP programmatically Pin
TClarke16-Nov-06 0:52
TClarke16-Nov-06 0:52 
GeneralRe: Set IP programmatically Pin
Mila02516-Nov-06 0:57
Mila02516-Nov-06 0:57 
GeneralRe: Set IP programmatically Pin
TClarke16-Nov-06 2:11
TClarke16-Nov-06 2:11 
Here is another way of doing it, Sorry about earlier


<br />
//**************************************************************************<br />
//<br />
// Description:<br />
//              Call EnableStatic method of Win32_NetworkAdapterConfiguration<br />
//<br />
// Note:<br />
//              The index property of the network adapter instance should be <br />
//              changed depending<br />
//              on your target system. Usually on NT4 systems the index of<br />
//              the ethernet<br />
//              adapter is 1 and on a win2k system the index is 0.<br />
//              The EnableStatic method is not supported on Win9x platforms<br />
//<br />
**************************************************************************<br />
<br />
#define POLARITY<br />
#define _WIN32_DCOM<br />
<br />
#include <br />
#include <br />
using namespace std;<br />
#include <br />
#include <br />
#include <br />
#include <br />
#include <br />
#include <br />
<br />
#include <br />
<br />
//int main(int iArgCnt, char ** argv)<br />
int WMIEnableStatic()<br />
{<br />
    IWbemLocator *pLocator = NULL;<br />
    IWbemServices *pNamespace = 0;<br />
    IWbemClassObject * pClass = NULL;<br />
    IWbemClassObject * pOutInst = NULL;<br />
    IWbemClassObject * pInClass = NULL;<br />
    IWbemClassObject * pInInst = NULL;<br />
  <br />
    BSTR path = SysAllocString(L"root\\cimv2");<br />
    BSTR ClassPath = SysAllocString(L"Win32_NetWorkAdapterConfiguration");<br />
    BSTR InstancePath =<br />
SysAllocString(L"Win32_NetWorkAdapterConfiguration.Index='1'");<br />
    BSTR MethodName = SysAllocString(L"EnableStatic");<br />
    BSTR ArgName1 = SysAllocString(L"IPAddress");<br />
    BSTR ArgName2 = SysAllocString(L"SubNetMask");<br />
<br />
    // Initialize COM and connect up to CIMOM<br />
<br />
    HRESULT hr = CoInitializeEx(0, COINIT_MULTITHREADED); <br />
<br />
        hr = CoInitializeSecurity(NULL, -1, NULL, NULL,<br />
        RPC_C_AUTHN_LEVEL_CONNECT, <br />
        RPC_C_IMP_LEVEL_IMPERSONATE, <br />
        NULL, EOAC_NONE, 0<br />
        );<br />
<br />
    hr = CoCreateInstance(CLSID_WbemLocator, 0, CLSCTX_INPROC_SERVER,<br />
            IID_IWbemLocator, (LPVOID *) &pLocator);<br />
<br />
    hr = pLocator->ConnectServer(path, NULL, NULL, NULL, 0, NULL, NULL,<br />
&pNamespace);<br />
<br />
    if(hr != WBEM_S_NO_ERROR)<br />
        return 1;<br />
<br />
    cout << "Connected to WMI" << endl;<br />
        <br />
    // Set the proxy so that impersonation of the client occurs.<br />
    hr = CoSetProxyBlanket(pNamespace,<br />
       RPC_C_AUTHN_WINNT,<br />
       RPC_C_AUTHZ_NONE,<br />
       NULL,<br />
       RPC_C_AUTHN_LEVEL_CALL,<br />
       RPC_C_IMP_LEVEL_IMPERSONATE,<br />
       NULL,<br />
       EOAC_NONE<br />
    );<br />
<br />
    <br />
    // Get the class object<br />
<br />
    hr = pNamespace->GetObject(ClassPath, 0, NULL, &pClass, NULL);<br />
    if(hr != WBEM_S_NO_ERROR)<br />
        return 1;<br />
<br />
<br />
    // Get the input argument and set the property<br />
<br />
    hr = pClass->GetMethod(MethodName, 0, &pInClass, NULL); <br />
    if(hr != WBEM_S_NO_ERROR)<br />
        return 1;<br />
<br />
    hr = pInClass->SpawnInstance(0, &pInInst);<br />
    if(hr != WBEM_S_NO_ERROR)<br />
        return 1;<br />
<br />
<br />
        BSTR ip;<br />
        ip = SysAllocString(L"10.0.0.3");<br />
<br />
        BSTR mask;<br />
        mask = SysAllocString(L"255.255.255.0");<br />
<br />
        long index[]={0};<br />
<br />
        SAFEARRAY *ip_list;<br />
        ip_list = SafeArrayCreateVector(VT_BSTR,0,1);<br />
        SafeArrayPutElement(ip_list,index,ip);<br />
        <br />
        SAFEARRAY *mask_list;<br />
        mask_list = SafeArrayCreateVector(VT_BSTR,0,1);<br />
        SafeArrayPutElement(mask_list,index,mask);<br />
<br />
    VARIANT arg1;<br />
    arg1.vt = VT_ARRAY|VT_BSTR;<br />
    arg1.parray = ip_list;<br />
    hr = pInInst->Put(ArgName1, 0, &arg1, 0);<br />
<br />
    VARIANT arg2;<br />
    arg2.vt = VT_ARRAY|VT_BSTR;;<br />
    arg2.parray = mask_list;<br />
    hr = pInInst->Put(ArgName2, 0, &arg2, 0);<br />
<br />
    // Call the method<br />
<br />
    hr = pNamespace->ExecMethod(InstancePath, MethodName, 0, NULL, pInInst,<br />
&pOutInst, NULL);<br />
    if(hr != WBEM_S_NO_ERROR){<br />
                cout << "ExecMethod failed " << hr;<br />
        return 1;<br />
        }<br />
    <br />
        // Get the EnableStatic method return value <br />
<br />
        VARIANT ret_value;<br />
        BSTR strReturnValue = SysAllocString(L"ReturnValue");<br />
        hr = pOutInst->Get(strReturnValue, 0, &ret_value, 0, 0);<br />
        long ret = V_I4(&ret_value);<br />
        if(ret != 0) {<br />
                cout << "EnableStatic failed with return code = " << ret;<br />
        }else{<br />
                cout << "EnableStatic succeeded" << endl;<br />
        }<br />
<br />
    // Free up resources<br />
<br />
        SysFreeString(strReturnValue);<br />
        VariantClear(&ret_value);<br />
        SysFreeString(ip);<br />
        SysFreeString(mask);<br />
        SafeArrayDestroy(ip_list);<br />
        SafeArrayDestroy(mask_list);<br />
        VariantClear(&arg1);<br />
    VariantClear(&arg2);<br />
<br />
    SysFreeString(path);<br />
    SysFreeString(ClassPath);<br />
        SysFreeString(InstancePath);<br />
    SysFreeString(MethodName);<br />
    SysFreeString(ArgName1);<br />
    SysFreeString(ArgName2);<br />
<br />
    pClass->Release();<br />
    pInInst->Release();<br />
    pInClass->Release();<br />
    pOutInst->Release();<br />
    pLocator->Release();<br />
    pNamespace->Release();<br />
    CoUninitialize();<br />
    return 0;<br />
}


Hope this helps a bit more Smile | :)

Tom
Generaluse &lt;pre&gt; Pin
toxcct16-Nov-06 2:16
toxcct16-Nov-06 2:16 
GeneralRe: use &lt;pre&gt; Pin
TClarke16-Nov-06 3:30
TClarke16-Nov-06 3:30 
GeneralRe: use &lt;pre&gt; Pin
TClarke16-Nov-06 3:32
TClarke16-Nov-06 3:32 
GeneralRe: use &lt;pre&gt; Pin
toxcct16-Nov-06 3:38
toxcct16-Nov-06 3:38 
GeneralRe: use &lt;pre&gt; Pin
TClarke16-Nov-06 4:12
TClarke16-Nov-06 4:12 
GeneralRe: use &lt;pre&gt; Pin
toxcct16-Nov-06 4:31
toxcct16-Nov-06 4:31 
GeneralRe: use &lt;pre&gt; Pin
Mark Salsbery16-Nov-06 4:52
Mark Salsbery16-Nov-06 4:52 
GeneralRe: use &lt;pre&gt; Pin
TClarke16-Nov-06 5:01
TClarke16-Nov-06 5:01 
GeneralRe: use &lt;pre&gt; Pin
A_Fa17-Nov-06 20:25
A_Fa17-Nov-06 20:25 
Questionfuntion over-loading error Pin
odesh15-Nov-06 23:37
odesh15-Nov-06 23:37 
AnswerRe: funtion over-loading error [deleted] Pin
toxcct15-Nov-06 23:41
toxcct15-Nov-06 23:41 
GeneralRe: funtion over-loading error Pin
Cedric Moonen16-Nov-06 1:17
Cedric Moonen16-Nov-06 1:17 
AnswerRe: funtion over-loading error Pin
Viorel.16-Nov-06 0:37
Viorel.16-Nov-06 0:37 
GeneralRe: funtion over-loading error Pin
toxcct16-Nov-06 0:45
toxcct16-Nov-06 0:45 
GeneralRe: funtion over-loading error Pin
Cedric Moonen16-Nov-06 1:11
Cedric Moonen16-Nov-06 1:11 
GeneralRe: funtion over-loading error Pin
toxcct16-Nov-06 2:14
toxcct16-Nov-06 2:14 
GeneralRe: funtion over-loading error Pin
Viorel.16-Nov-06 1:16
Viorel.16-Nov-06 1:16 

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.