[ANN] au3 0.1.1 released

2009/12/30 Marvin Gülker [email protected]:

Heesob P. wrote:

Regards,

Park H.

Works great! But I have a question about the 0.chr line: Why do you need
to append 8 extra bytes to achieve a size of 28 bytes? I guess, it has
something to do with C’s array treatment?

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 H.

Heesob P. 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 H.

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. :slight_smile:

Marvin

Marvin Gülker wrote:

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. :slight_smile:

Marvin

Forget it. I didn’t read it well enough.

Thanks!

Marvin