|
Hi
I have below the following piece of code in a vc++6 MFC dialog project. i want to have it that the ip address can be entered into a "edit box" and that ip address can then be pinged.
im guessing that i change the WHERE Address=\"127.0.0.1\"" to WHERE Address='"+Addy+"'" or is that wrong?
how do i declare the variable Addy, as i have tried a few but no sucess
please help
Existing code....
hres = pSvc->ExecQuery( L"WQL", L"SELECT * FROM Win32_PingStatus WHERE Address=\"127.0.0.1\"", WBEM_FLAG_FORWARD_ONLY, NULL, &pEnumerator);
-- modified at 12:01 Thursday 2nd March, 2006
|
|
|
|
|
Are you wanting something like:
CString strIPAddress = L"127.0.0.1";
CString strQuery;
strQuery.Format(L"SELECT * FROM Win32_PingStatus WHERE Address = %s", (LPCTSTR) strIPAddress);
hres = pSvr->ExecQuery(L"WQL", strQuery, ...);
"Let us be thankful for the fools. But for them the rest of us could not succeed." - Mark Twain
"There is no death, only a change of worlds." - Native American Proverb
|
|
|
|
|
thx for the reply
but that turned up two errors...
1) error C2664: 'void __cdecl CString::Format(const char *,...)' : cannot convert parameter 1 from 'unsigned short [50]' to 'const char *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
2) error C2664: 'ExecQuery' : cannot convert parameter 2 from 'class CString' to 'unsigned short *const '
|
|
|
|
|
So try removing the Ls from the string literals. Are you using Unicode or not?
"Let us be thankful for the fools. But for them the rest of us could not succeed." - Mark Twain
"There is no death, only a change of worlds." - Native American Proverb
|
|
|
|
|
i honstly couldnt tell you as visual c++ is new to me, im still just getting to hand with these new variable types.
the error i get now is as follows....
error C2664: 'ExecQuery' : cannot convert parameter 1 from 'char [4]' to 'unsigned short *const '
my code is now....
CString strIPAddress = "127.0.0.1";
CString strQuery;
strQuery.Format("SELECT * FROM Win32_PingStatus WHERE Address = %s", (LPCTSTR) strIPAddress);
hres = pSvc->ExecQuery("WQL", strQuery, WBEM_FLAG_FORWARD_ONLY, NULL, &pEnumerator);
many thanks for your help
|
|
|
|
|
Put the L back in front of the "WQL" string - ExecQuery() is expecting a Unicode string, which is what the 'L' specifies.
Ryan "Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late" John Nichol "Point Of Impact"
|
|
|
|
|
In trying that i still get an error
the error is....
error C2664: 'ExecQuery' : cannot convert parameter 2 from 'class CString' to 'unsigned short *const '
my code is......
CString strIPAddress = "127.0.0.1";
CString strQuery;
strQuery.Format("SELECT * FROM Win32_PingStatus WHERE Address = %s", (LPCTSTR) strIPAddress);
hres = pSvc->ExecQuery(L"WQL", strQuery, WBEM_FLAG_FORWARD_ONLY, NULL, &pEnumerator);
|
|
|
|
|
keithlee wrote: strQuery.Format("SELECT * FROM Win32_PingStatus WHERE Address = %s", (LPCTSTR) strIPAddress);
hres = pSvc->ExecQuery(L"WQL", strQuery, WBEM_FLAG_FORWARD_ONLY, NULL, &pEnumerator);
strQuery.Format(_T("SELECT * FROM Win32_PingStatus WHERE Address = %s"), (LPCTSTR) strIPAddress);
hres = pSvc->ExecQuery(_T("WQL"), strQuery, WBEM_FLAG_FORWARD_ONLY, NULL, &pEnumerator);
Does this help?
Nibu thomas
Software Developer
|
|
|
|
|
that shows the followng error
error C2664: 'ExecQuery' : cannot convert parameter 1 from 'char [4]' to 'unsigned short *const '
|
|
|
|
|
Have you done any Unicode programming? You need to convert your string to Unicode. Include the atlconv.h file and do this:
CString strIPAddress = _T("127.0.0.1");
CString strQuery;
strQuery.Format(_T("SELECT * FROM Win32_PingStatus WHERE Address = %s"), (LPCTSTR) strIPAddress);
hres = pSvc->ExecQuery(L"WQL", T2W(strQuery), WBEM_FLAG_FORWARD_ONLY, NULL, &pEnumerator); This will ensure that all the strings are of the correct type and should work nicely.
Ryan "Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late" John Nichol "Point Of Impact"
|
|
|
|
|
hi
no luck there with the above code, any idea whats wrong?
i get the following errors....
error C2065: '_lpa' : undeclared identifier
error C2679: binary '=' : no operator defined which takes a right-hand operand of type 'class CString' (or there is no acceptable conversion)
error C2065: '_convert' : undeclared identifier
|
|
|
|
|
just found the problem, did a look up on MSDN and you need to specify
USES_CONVERSION;
wohoo, finally it works!
|
|
|
|
|
|
SWDevil wrote: how can I do this?
Read the file into a CString object, then use the Find() method.
"Let us be thankful for the fools. But for them the rest of us could not succeed." - Mark Twain
"There is no death, only a change of worlds." - Native American Proverb
|
|
|
|
|
|
|
does CFile::Read()return a CString obbject (I don't have MSDN at the moment, that's why I'm asking)
DavidCrow wrote: Just take what is between >> and <<.
How do I do that? with Right/Left functions?
|
|
|
|
|
If you use a CStdioFile you can use the ReadString() function to read the line directly into a CString.
ReadString(input);
then you can do the find on your input
int endtag = input.Find(">>", 0);
Why is common sense not common?
Never argue with an idiot. They will drag you down to their level where they are an expert.
|
|
|
|
|
Oh yeah and the function you want to use for getting that 12345 is the Mid() function.
Why is common sense not common?
Never argue with an idiot. They will drag you down to their level where they are an expert.
|
|
|
|
|
<code>
typedef struct alcPacket
{
char workStationID[20];
char NTLogin[20];
}*alcPacket_t;
</code>
Sender :
<code>
alcPacket_t alcp;
strcpy(alcp->NTLogin,"xyz");
strcpy(alcp->workStation,"yahoo");
nRet = sendto(hSocket,(char*)alcp,sizeof(alcPacket),0,(struct sockaddr*)&stDstAddr,sizeof(stDstAddr));
</code>
Receiver :
<code>
alcPacket_t alcp;
nRet = recvfrom(hSocket,achInBuf,120,0,(struct sockaddr*)&stSrcAddr,&addr_size);
alcp = (alcPacket_t)achInBuf;
printf("%s",alcp->NTLogin);
printf("%s",alcp->workStationID);
</code>
Everthing works fine.. but i get a the output for NTLogin is preceded by a long streak of ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌxyz
the out put looks like
ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌxyz
Yahoo
ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌxyz
yahoo
how can i remove that junk from NTLogin? what's wrong?
VuNic
|
|
|
|
|
Have you tried
ZeroMemory(alcp, sizeof(alcp);
and then send it?
mfg
Phil
bum... and I thought I´d got rid of all the bugs
|
|
|
|
|
VuNic wrote: alcPacket_t alcp;strcpy(alcp->NTLogin,"xyz");
This looks suspicious. Try:
alcPacket_t alcp;
alcp = new alcPacket;
strcpy(alcp->NTLogin, "xyz");
"Let us be thankful for the fools. But for them the rest of us could not succeed." - Mark Twain
"There is no death, only a change of worlds." - Native American Proverb
|
|
|
|
|
sorry for late reply David, just got into this(sock) module in a round robin fashion. hmm but the problem is still there.
i have some fundamental doubt :
<code>
typedef struct alcPacket
{
char workStationID[20];
char NTLogin[20];
}*alcPacket_t;
</code>
Why the sizeof alcPaket shows 120 ?
and in the receiving end, tested the strlen for the
<code>
nRet = recvfrom(hSocket,achInBuf,120,0,(struct sockaddr*)&stSrcAddr,&addr_size);
alcp = (alcPacket_t)achInBuf;
printf("\n%s",alcp->NTLogin);
printf("\n%d",strlen(alcp->NTLogin));
printf("\n%s",alcp->workStationID);
printf("\n%d",strlen(alcp->workStationID));
</code>
It prints the values as
48 for NTLogin WRONG, with that junk characters
11 for Workstation ID.RIGHT
what could be the problem ??
VuNic
|
|
|
|
|
OOOOOOOOPS, i'm really sorry David. it was a GIGO,
i made a worst mistake.. at the sending End,
i have the given the structure as
<br />
typedef struct alcPacket<br />
{<br />
char workStationID[60];<br />
char NTLogin[60];<br />
<br />
}*alcPacket_t;<br />
But while receiving, i used the strcut,
<br />
typedef struct alcPacket<br />
{<br />
char workStationID[20];<br />
char NTLogin[20];<br />
<br />
}*alcPacket_t;<br />
look at char workStationID[60]; andchar workStationID[20];
the size is 60 in the former and the size is 20 with the later.
......sorry for the strain i have made to your mind .............................
VuNic
|
|
|
|
|
VuNic wrote: ......sorry for the strain i have made to your mind .............................
Mine tooo .. Seen your mail today only... i am don't have access to internet on client site..
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
|
|
|
|