From: "Marvin Gülker" Date: 2009-12-30T22:02:48+09:00 Subject: Re: au3 0.1.1 released Heesob Park wrote: > As you know, the INPUT structure defined like this: > > typedef struct tagINPUT { > DWORD type; > union {MOUSEINPUT mi; > KEYBDINPUT ki; > HARDWAREINPUT hi; > }; > }INPUT, *PINPUT; > > typedef struct tagMOUSEINPUT { > LONG dx; > LONG dy; > DWORD mouseData; > DWORD dwFlags; > DWORD time; > ULONG_PTR dwExtraInfo; > } MOUSEINPUT, *PMOUSEINPUT; > > typedef struct tagKEYBDINPUT { > WORD wVk; > WORD wScan; > DWORD dwFlags; > DWORD time; > ULONG_PTR dwExtraInfo; > } KEYBDINPUT, *PKEYBDINPUT; > > typedef struct tagHARDWAREINPUT { > DWORD uMsg; > WORD wParamL; > WORD wParamH; > } HARDWAREINPUT, *PHARDWAREINPUT; > > The sizeof(MOUSEINPUT) is 24, sizeof(KEYBDINPUT) is 16, and > sizeof(HARDWAREINPUT) is 8. > Therefore, sizeof(INPUT) = sizeof(DWORD) + maxsizeof(union) = 4 + 24 = > 28. > > Regards, > > Park Heesob Thank you again, now I've got the point. One last question: The size of the MOUSEINPUT struct is 8 + 8 + 4 + 4 + 4 = 28 I see, so am I right in thinking that the pointer isn't important for this computation? Otherwise, since it's an unsigned long, it should have a size of 8 also, what makes the struct a size of 36 bytes? Or is this ignored because of passing in nil later? You see, I'm not really good in working with C structs. :) Marvin -- Posted via http://www.ruby-forum.com/.