|
Dude, didn't some of us give the reply as well as the code to the exact same question you asked elsewhere? I too have given here. Why don't you try to work with them and not litter the forums with same questions.
...byte till it megahertz...
|
|
|
|
|
hi to everyone here is my code below and i am newbie to programming
#include"stdafx.h"
#include"windows.h"
#include"winnt.h"
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int ncmdShow)
{
HANDLE hImage;
DWORD dwExitCode = 0;
IMAGE_DOS_HEADER imgdosh={0};
hImage = CreateFileA("E:\\kill.exe",GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if (INVALID_HANDLE_VALUE == hImage)
{
MessageBoxA(NULL,"invalid file","err",MB_OK);
}
HANDLE hfilemaping = CreateFileMapping(hImage,NULL,PAGE_READONLY,0,0,0);
{
if(!hfilemaping)
{
MessageBoxA(NULL,"Mapping Fails","err",MB_OK);
}
HANDLE ndmapview = MapViewOfFile(hfilemaping,FILE_MAP_READ,0,0,0);
if(!ndmapview)
{
MessageBoxA(NULL,"Mapping Fails","err",MB_OK);
}
if (IMAGE_DOS_SIGNATURE != imgdosh.e_magic)
{
MessageBoxA(NULL,"not a dos file","Suuc",MB_OK);
}
if (IMAGE_DOS_SIGNATURE == imgdosh.e_magic)
{
MessageBoxA(NULL,"dos file","Suuc",MB_OK);
}
return 0;
}
}
Question - Test.exe is a PE file but my program returns me a msgbox that "it is not a dos file".?
what is the mistake i have done please can anyone help me to figure out.?
Regards
0x8085
|
|
|
|
|
I have no idea on PE file reading. Wow, you are newbie and started coding with PE.
where is your imgdosh correctly initialized? Did you miss any code for that? You initialized to 0 in the beginning, there is no code to set the values to it and you are checking for
if(IMAGE_DOS_SIGNATURE != imgdosh.e_magic).
Is this correct or am I missing something?
|
|
|
|
|
Hi mk14882,
thanks for replying.
yes that was the mistake i think .. but i dint know how to fix it..still i am going googling for it.
Regards
0x8085
|
|
|
|
|
0x8085 wrote: Test.exe
what is that file ? is it the same as "kill.exe" that is written in the example ?
What makes you think that creating an file makes it a PE (Portable Executable) file ?
anyway, you do nothing with imgdosh ...
Watched code never compiles.
|
|
|
|
|
hi,
Kill.exe is a small PE file with a function to display message box hello world.
i want to create a file to an application to check whether the file is a pe file or not.
for that i started with a first step of verifying the dos signature.
you change the path "e:\\kill.exe" to any pe file it will compile.
regards
0x8085
|
|
|
|
|
Some time back I read Vijay mukhi's website on PE files. I thought it was not my world and left it.
Here is the link if it can help you: http://www.vijaymukhi.com/security/windows/pefile.htm[^]
The return type of MapViewOfFile() is LPVOID. Check it out if it can cause any issue.
|
|
|
|
|
hi mk14882,
Thanks a lot.. I think this would help me..
thank you once again..
I will check it and let you know.
Regards
0x8085
|
|
|
|
|
Looks like you are taking code from other places and kinda skipping a few important details about some of the functions you are using from the winsdk such as:
Return Value
If the function succeeds, the return value is the starting address of the mapped view.
If the function fails, the return value is NULL. To get extended error information, call GetLastError.
From the msdn, this will solve your problem.
|
|
|
|
|
Hi!
I've to read Player Names from a data base table. I'm randomly selecting 11 players from each country(totally nine countries). I'm using the following code to do this:
array<stringc> ctyLst = SQLdb.Query("Select DISTINCT Team from Test ORDER BY Team DESC");
core::stringc queryStr;
for(int i = 0; i<ctyLst.size();i++)
{
queryStr = L"Select Name From Test WHERE Team ='";
queryStr += ctyLst[i].trim();
queryStr += L"'";
queryStr += L"ORDER BY RANDOM() LIMIT 11";
playerLst = SQLdb.Query(queryStr);
printf("%s \n",queryStr.c_str());
printf("%s \n",playerLst[i].c_str());
}
The first 4 lines inside the For loop builds the query dynamically. At line 5, the query is executed and the result is assigned to the array. When I print the elements of playerLst array only 11 player names are printed(not what I expect. It has to print 99 names since each country has 11 players and there are 9 cty's). If I uncomment the line 6(i.e push_back()), the following error occurs:
Error 2 error C2664: 'irr::core::array<T>::push_back' : cannot convert parameter 1 from 'irr::core::array<T>' to 'const irr::core::stringc &' d:\test\main.cpp 142
How to initialise the array with the query result and print it completely?
|
|
|
|
|
You should use the insert[^] method.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
Hi!
Thanks for the reply. If I use the insert method, it shows the following error:
Error 2 error C2664: 'irr::core::array<T>::insert' : cannot convert parameter 1 from 'irr::core::array<T>' to 'const irr::core::stringc &' d:\test\main.cpp 144
This is the code:
playerLst.insert(SQLdb.Query(queryStr));
insert accepts string & , but my query returns array of string . How to pass the argument?
|
|
|
|
|
I was wrongly assuming you're using a std container. Forget my suggestion (and go with nested loop).
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
I think that the OP is using Irrlicht array template[^].
|
|
|
|
|
Yes, I think you are right, thanks for pointing it out.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
No problem!
My first thought was also that he is using some STL container but after a looked deeper into the error message I realized that he is using Irrlicht.
|
|
|
|
|
T.RATHA KRISHNAN wrote: At line 5, the query is executed and the result is assigned to the array. When I print the elements of playerLst array only 11 player names are printed(not what I expect. It has to print 99 names since each country has 11 players and there are 9 cty's).
This is the expected result because you have to use a nested loop in order to print players.
Try something like this after :
for(int i = 0; i<ctyLst.size();i++)
{
queryStr = L"Select Name From Test WHERE Team ='";
queryStr += ctyLst[i].trim();
queryStr += L"'";
queryStr += L"ORDER BY RANDOM() LIMIT 11";
playerLst = SQLdb.Query(queryStr);
for(int j = 0; j<playerLst.size();j++)
{
printf("%s \n",playerLst[j].c_str());
}
}
And about the error: You are trying to add another array into your array (SQLdb.Query returns an array, right?), instead of adding a string and that is the cause of the error.
|
|
|
|
|
If I use nested loop also only 11 names are printed.
|
|
|
|
|
It is a good idea to use your debugger in such situations.
See how many results your first query returns.
After that see how many results return your query that you call each time in loop (note that the loop count depends on the results of first query).
First be sure that queries work as expected!
|
|
|
|
|
This is the query at each iteration of the for loop and contents of the array at each iteration:
Select Name From Test WHERE Team ='Australia' ORDER BY RANDOM() LIMIT 11
SR Watson
SR Watson
SR Watson
SR Watson
SR Watson
SR Watson
SR Watson
SR Watson
SR Watson
SR Watson
SR Watson
Select Name From Test WHERE Team ='England' ORDER BY RANDOM() LIMIT 11
LJ Wright
LJ Wright
LJ Wright
LJ Wright
LJ Wright
LJ Wright
LJ Wright
LJ Wright
LJ Wright
LJ Wright
LJ Wright
Select Name From Test WHERE Team ='India' ORDER BY RANDOM() LIMIT 11
SR Tendulkar
SR Tendulkar
SR Tendulkar
SR Tendulkar
SR Tendulkar
SR Tendulkar
SR Tendulkar
SR Tendulkar
SR Tendulkar
SR Tendulkar
SR Tendulkar
Select Name From Test WHERE Team ='New Zealand' ORDER BY RANDOM() LIMIT 11
BB McCullum
BB McCullum
BB McCullum
BB McCullum
BB McCullum
BB McCullum
BB McCullum
BB McCullum
BB McCullum
BB McCullum
BB McCullum
Select Name From Test WHERE Team ='Pakistan' ORDER BY RANDOM() LIMIT 11
Naved-ul-Hasan
Naved-ul-Hasan
Naved-ul-Hasan
Naved-ul-Hasan
Naved-ul-Hasan
Naved-ul-Hasan
Naved-ul-Hasan
Naved-ul-Hasan
Naved-ul-Hasan
Naved-ul-Hasan
Naved-ul-Hasan
Select Name From Test WHERE Team ='South Africa' ORDER BY RANDOM() LIMIT 11
YA Abdulla
YA Abdulla
YA Abdulla
YA Abdulla
YA Abdulla
YA Abdulla
YA Abdulla
YA Abdulla
YA Abdulla
YA Abdulla
YA Abdulla
Select Name From Test WHERE Team ='Sri Lanka' ORDER BY RANDOM() LIMIT 11
UWMBCA Welegedara
UWMBCA Welegedara
UWMBCA Welegedara
UWMBCA Welegedara
UWMBCA Welegedara
UWMBCA Welegedara
UWMBCA Welegedara
UWMBCA Welegedara
UWMBCA Welegedara
UWMBCA Welegedara
UWMBCA Welegedara
Select Name From Test WHERE Team ='West Indies' ORDER BY RANDOM() LIMIT 11
AB Barath
AB Barath
AB Barath
AB Barath
AB Barath
AB Barath
AB Barath
AB Barath
AB Barath
AB Barath
AB Barath
Select Name From Test WHERE Team ='Zimbabwe' ORDER BY RANDOM() LIMIT 11
KM Dabengwa
KM Dabengwa
KM Dabengwa
KM Dabengwa
KM Dabengwa
KM Dabengwa
KM Dabengwa
KM Dabengwa
KM Dabengwa
KM Dabengwa
KM Dabengwa
No.of Players in the List: 11
Only one player name is assgned for all 11 array locations. If I execute the query using SQLBROWSER,it prints correct results(different 11 names). Why is it so?
I wonder why this printf statement:
printf("No.of Players in the List: %d \n",playerLst.size());
prints 11 even if it outputs 99 unique names. It has to print 99 only?
If I give printf inside the for loop it prints No. Players as 11 at each iteration.
|
|
|
|
|
|
|
You are welcome!
|
|
|
|
|
i define a hot key in my app with RegisterHotKey.
ATOM identiferForTest=GlobalAddAtom(_T("test"));
if (!RegisterHotKey(this->m_hWnd,identiferForTest,0,'T'))
{
AfxMessageBox(_T("hot key conflict!"));
}
and in the event handler~showing a MessageBox respond to the hot key(press 'T' keyboard key)
later at somewhere i call UnRegisterHotKey!
then later i call RegisterHotKey again as mentioned above
now when i press other key~~ a debug assertion failure Window pop up!
what's going on?
can anybody give me some advice?
|
|
|
|
|
What does the ASSERT say? You get a lot of information by examining it. (Press Retry in the assertion dialog.)
|
|
|
|