Teen Programmers Unite  


Return to forum top

windows messages

Posted by NULLandVOID [send private reply] at December 27, 2002, 03:12:02 AM

i was screwing around in VC++ 6's spy++, with messages, and i got to wondering if i could create "raw" messages, and insert them into the queue. so i found some functions in winuser.h, post_, send_, get_(message), and then i got to wondering where this queue acually is, and how it can be accessed, and im not talking about going through messagemap, or messagepeek, or something, i want to know were they are, is there some strange interrupt to talk to the message queue. then what i tried to do is to look at the asm defs of those message functions, first by just looking in .lib files, then i tried using the ole viewer to look at USER32.dll, a MAJOR dll that happends to store those def, so of course windows won't let me look, now i want to try to find a def by #include <winuser.h> and using the a message function, and tring to get errors, then debugging and looking at the def(trying to get errors on that function so i don't have to search, the debugger goes there, and since its a MAJOR dll its stuck somewhere in the mem between 0 and FFFFFFFF ahh!),but i digress....
print "that is what i will do", unless(you guys can help); #(sorry sometimes i just break out into code =P )

so topics of question are:how to make "raw" messages, where the hell the queue is(ram?), possible asm int's that are relevent(i am thinking asm because it seems like i'll need to look that low, and doing that kind of fundimental OS type work in c\c++ seems weird), and finally why the hell do i do this to myself =P
thanks for any ideas or therepist phone numbers!

Posted by Neumann [send private reply] at December 27, 2002, 06:41:59 PM

It's unlikely you'll ever get access to that message queue. There is probably 1 queue per process and it's likely NOT related to DOS interrupts at all.

As for RAW message, I don't really know what you mean. You can use WM_USER to make app-specific message as numbers below WM_USER after are not used by Windows (ie: WM_USER+x). You can then use WPARAM and LPARAM attach data, just like any other standard Windows message. I don't think you can get any RAWer than that.

Posted by Mike_L [send private reply] at January 08, 2003, 04:15:41 PM

There is no such thing as a "raw" message. All Win32 messages are alike. They consist of a 32-bit number indicating the message type (like WM_CLOSE) and two 32-bit parameters: wParam and lParam. A message queue is created when a Win32 process first calls GetMessage() or one of the other message retrieval functions. The queue is stored somewhere in the kernel. There is no reason to access it manually. It is likely that the message queue location and structure is different for each version of Windows.

Win32 programs can send any kind of message to any process in their security context. Use the SendMessage() and PostMessage() functions to create any kind of message you want and deliver it to the unsuspecting process. Messages are addressed to indvidual windows. This means that you need an HWND to send it to. Look into FindWindow() and FindWindowEx().

For example, you can use FindWindow() to discover the HWND of the Start Button. Then by sending a WM_SHOW message to it, you can cause it to disappear. Probably every single Win32 program that creates a visible or non-visible window will crash upon reciept of certain unexpected messages.


You must be logged in to post messages and see which you have already read.

Log on
Save for later automatic logon

Register as a new user
Copyright TPU 2002. See the Credits and About TPU for more information.