RT_DIALOG (0x00000005)
මෙහි ඇත්තේ PE එකක අපට දක්නට ඇති dialogs වේ. එනම් අප forms ලෙස හදුන්වන්නේද මේවාය. මෙම dialog එකක් තුල තවත් objects තිබිය හැක. එනම් buttons, check boxes, radio buttons ආදිය වේ. පලමුව dialog එකක structure එක හදුනා ගැනීම සිදු කරමු.
dialog වර්ග 2 ක් තිබේ. එනම් Extended Styles(ExStyles) ඇති හා නැති ඒවා ලෙසය.
මෙහි resource data හි පලමු 8 bytes 0x00000000FFFF0001 ලෙස ඇත්නම් එහි ExStyles ඇත.
මෙහි මීට පසුව ඇති පලමු 4 bytes මගින් ExStyles පෙන්නුම් කරයි. එම styles පහත ආකාරයට දැක්විය හැක.
උදා:- Shell32.dll හි 1003 යන dialog එකෙහි ExStyle එක 0x00000000 ලෙස වේ.
STYLE NAME | BIT # |
WS_EX_NOACTIVATE | v=1 |
WS_EX_LAYOUTRTL | x=1 |
WS_EX_NOINHERITLAYOUT | xii=1 |
WS_EX_LAYERED | xiii=1 |
WS_EX_APPWINDOW | xiv=1 |
WS_EX_STATICEDGE | xv=1 |
WS_EX_CONTROLPARENT | xvi=1 |
WS_EX_LEFTSCROLLBAR | xviii=1 |
WS_EX_RTLREADING | xix=1 |
WS_EX_RIGHT | xx=1 |
WS_EX_LEFT WS_EX_LTRREADING WS_EX_RIGHTSCROLLBAR | xviii=0 And xix=0 And xx=0 |
WS_EX_CONTEXTHELP | xxii=1 |
WS_EX_CLIENTEDGE | xxiii=1 |
WS_EX_WINDOWEDGE | xxiv=1 |
WS_EX_TOOLWINDOW | xxv=1 |
WS_EX_MDICHILAD | xxvi=1 |
WS_EX_TRANSPARENT | xxvii=1 |
WS_EX_ACCEPTFILES | xxviii=1 |
WS_EX_TOPMOST | xxix=1 |
WS_EX_NOPARENTNOTIFY | xxx=1 |
WS_EX_DLGMODALFRAME | xxxii=1 |
WS_EX_PALETTEWINDOW | xxiv=1 And xxv=1 And xxix=1 |
WS_EX_OVERLAPPEDWINDOW | xxiii=1 And xxiv=1 |
මෙහි මීලග 4 bytes මගින් Window Styles පෙන්නුම් කෙරේ. එම Styles පහත ආකාරයට පෙන්නුම් කල හැක.
උදා:- Shell32.dll හි 1003 යන dialog එකෙහි Style එක 0x80C821CC ලෙස ඇත.
STYLE NAME | BIT # |
WS_POPUP | i=1 And ii=0 |
WS_CHILD | i=0 And ii=1 |
WS_MINIMIZE | iii=1 |
WS_VISIBLE | iv=1 |
WS_DISABLED | v=1 |
WS_CLIPSIBLINGS | vi=1 |
WS_CLIPCHILDREN | vii=1 |
WS_MAXIMIZE | viii=1 |
WS_BORDER | ix=1 And x=0 |
WS_DLGFRAME | ix=1 And x=0 |
WS_CAPTION | ix=1 And x=1 |
WS_VSCROLL | xi=1 |
WS_HSCROLL | xii=1 |
WS_SYSMENU | xiii=1 |
WS_THICKFRAME | xiv=1 |
WS_MINIMIZEBOX | xv=1 |
WS_MAXIMIZEBOX | xvi=1 |
DS_CONTEXTHELP | xix=1 |
DS_CENTERMOUSE | xx=1 |
DS_CENTER | xxi=1 |
DS_CONTROL | xxii=1 |
DS_SETFOREGROUND | xxiii=1 |
DS_NOIDLEMSG | xxiv=1 |
DS_MODALFRAME | xxv=1 |
DS_SETFONT | xxvi=1 |
DS_LOCALEDIT | xxvii=1 |
DS_NOFAILCREATE | xxviii=1 |
DS_FIXEDSYS | xxix=1 |
DS_SYSMDAL | xxxi=1 |
DS_ABSALIGN | xxxii=1 |
WS_POPUPWINDOW | i=1 And ix=1 And x=1 And xiii=1 |
WS_TILEDWINDOW | ix=1 And x=1 And xiii=1 And xiv=1 And xv=1 And xvi=1 |
මීලගට ඇති 2 bytes මගින් මෙම form එකෙහි ඇති objects ගණන දක්වා ඇත. මෙහි 0x0008 ලෙස ඇත. මීලග 2 bytes මගින් form එක පෙන්විය යුතු ස්ථානයේ X ඛන්ඩාංකය දක්වා ඇත. මෙහිදී 0x0000 වේ. මීලග 2 bytes මගින් Y ඛන්ඩාංකය දක්වා ඇත. මෙහිදී 0x0000 වේ. මීලග 2 bytes මගින් form එකෙහි width එකද ඊලග 2 bytes මගින් form එකෙහි height එකද දක්වා ඇත. මෙහිදී ඒවා 0x00E3 හා 0x005F ලෙස වේ. මීලග 2 bytes මගින් form එකට Main menu එකක් තිබේද යන වග පෙන්වයි. මෙහි අගය 0x0000 හෝ 0xFFFF නොවේ නම්, එහි ඇති අගය menu එකෙහි ID එක වේ. 0xFFFF ලෙස ඇත්නම් ඊලග 2 bytes මගින් menu ID එක පෙන්නුම් කරයි. මීලගට menu ID එක දැක්වූ ආකාරයටම class ID එක දක්වා ඇත. මෙහිදී බොහෝ විට 0x0000 ලෙස ඇත. මීලගට ඇත්තේ form එකෙහි caption එක වේ. මීලග 2 bytes මගින් form එකෙහි font size එක දක්වා ඇත. මීලග 2 bytes මගින් font weight එක දක්වා ඇත. මීලග 2 bytes මගින් italic ද යන වග දක්වා ඇත. එය 0x0001 ලෙස ඇත්නම් italic ද 0x0000 ලෙස ඇත්නම් italic නොවන බවද පෙන්නුම් කරයි. මීලගට ඇත්තේ font name එක වේ. මෙහි weight හා italic යන්න ඇත්තේ ExStyles ඇති forms වල පමණක් වේ.
මීලගට ඇත්තේ form එකෙහි objects පිළිබද විස්තර වේ. ඒවා array එකක් ලෙස ඇත. පළමුව object classes හදුනා ගනිමු.
ප්රධාන වශයෙන් classes වර්ග 6 ක් ඇත. එම classes හා ඒවාට අයත් objects පහත දක්වා ඇත.
මෙම සෑම object එකකම data ආරම්භ වනුයේ file offset එක 4 හි ගුණාකාරයක් වන ස්ථානයකිනි. එනම් මෙහි alignment එක 4 වේ. එක් object එකක් ගත් විට,
මෙහි පළමු 4 bytes මගින් ExStyles පෙන්නුම් කරයි. මෙය ExStyles ඇති forms වල පමණක් ඇත. ExStyles පහත ආකාර වේ.
STYLE NAME | BIT # |
WS_EX_DLGMODALFRAME | xxxii=1 |
WS_EX_CLIENTEDGE | xxiii=1 |
WS_EX_STATICEDGE | v=1 |
තවද object එකෙහි class එක අනුව ExStlyes ඇත. ඒවා පහත දක්වා ඇත.
SysListView32
STYLE NAME | BIT # |
LVS_EX_GRIDLINES | xxxii=1 |
LVS_EX_SUBITEMIMAGES | xxxi=1 |
LVS_EX_CHECKBOXES | xxx=1 |
LVS_EX_TRACKSELECT | xxix=1 |
LVS_EX_HEADERRAGDROP | xxviii=1 |
LVS_EX_FULLROWSELECT | xxvii=1 |
LVS_EX_ONECLICKACTIVATE | xxvi=1 |
LVS_EX_TWOCLICKACTIVATE | xxv=1 |
SysTabControl32
STYLE NAME | BIT # |
TCS_EX_FLATSEPARATORS | xxxii=1 |
TCS_EX_REGISTERDROP | xxxi=1 |
RichEdit20A
STYLE NAME | BIT # |
ES_EX_NOCALLOLEINIT | xxxii=1 |
ComboBoxEx32
STYLE NAME | BIT # |
CBES_EX_NOEDITIMAGE | xxxii=1 |
CBES_EX_NOEDITIMAGEINDENT | xxxi=1 |
CBES_EX_PATHWORDBREAKPRO | xxx=1 |
CBES_EX_NOSIZELIMIT | xxix=1 |
CBES_EX_CASESENSITIVE | xxviii=1 |
මීලග 4 bytes මගින් දක්වා ඇත්තේ Styles වේ. ඒවා පහත ආකාර වේ.
STYLE NAME | BIT # |
WS_TABSTOP | xvi=1 |
WS_GROUP | xv=1 |
WS_HSCROLL | xii=1 |
WS_VSCROLL | xi=1 |
WS_BORDER | ix=1 |
WS_CLIPSBLINGS | vi=1 |
WS_DISABLED | v=1 |
WS_VISIBLE | iv=1 |
WS_CHILD | ii=1 |
මෙහිදීද object class එක අනුව styles දක්වනු ලැබේ.
BUTTON
අවසන් 4 bits හි අගය,
BS_PUSHBUTTON | 0 |
BS_DEEPUSHBUTTON | 1 |
BS_CHECKBOX | 2 |
BS_AUTOCHECKBOX | 3 |
BS_RADIOBUTTON | 4 |
BS_3STATE | 5 |
BS_AUTO3STATE | 6 |
BS_GROUPBOX | 7 |
BS_USERBUTTON | 8 |
BS_AUTORADIOBUTTON | 9 |
BS_OWNERDRAW | 11 |
STYLE NAME | BIT # |
BS_LEFTTEXT | xxvii=1 |
BS_ICON | xxvi=1 |
BS_BITMAP | xxv=1 |
BS_LEFT | xxiv=1 And xxiii=0 |
BS_RIGHT | xxiv=0 And xxiii=1 |
BS_CENTER | xxiv=1 And xxiii=1 |
BS_TOP | xxiv=1 And xxiii=0 |
BS_BOTTOM | xxii=0 And xxi=1 |
BS_VCENTER | xxii=1 And xxi=1 |
BS_PUSHLIKE | xx=1 |
BS_MULTILINE | xix=1 |
BS_NTIFY | xviii=1 |
BS_FLAT | xvii=1 |
TEXT BOX
STYLE NAME | BIT # |
ES_LEFT | xxxii=0 And xxxi=0 |
ES_CENTER | xxxii=1 And xxxi=0 |
ES_RIGHT | xxxii=1 And xxxi=1 |
ES_MULTILINE | xxx=1 |
ES_UPPERCASE | xxix=1 |
ES_LOWERCASE | xxviii=1 |
ES_PASSWORD | xxvii=1 |
ES_AUTOVSCROLL | xxvi=1 |
ES_AUTOHSCROLL | xxv=1 |
ES_NOHIDESEL | xxiv=1 |
ES_OEMCONVERT | xxiii=1 |
ES_READONLY | xxii=1 |
ES_WANTRETURN | xxi=1 |
ES_NUMBER | xx=1 |
STATIC
අවසන් 4 bits හි අගය,
SS_LEFT | 0 |
SS_CENTER | 1 |
SS_RIGHT | 2 |
SS_ICON | 3 |
SS_BLACKRECT | 4 |
SS_GRAYRECT | 5 |
SS_WHITERECT | 6 |
SS_BLACKFRAME | 7 |
SS_GRAYFRAME | 8 |
SS_WHITEFRAME | 9 |
SS_USERITEM | 10 |
SS_SIMPLE | 11 |
SS_LEFTNOWORDWRAP | 12 |
SS_OWNERDRAW | 13 |
SS_BITMAP | 14 |
SS_ENHMETAFILE | 15 |
STYLE NAME | BIT # |
SS_NOPREFIX | xxv=1 |
SS_REALSIZEIMAGE | xxi=1 |
SS_RIGHTIMAGE | xxii=1 |
SS_CENTERIMAGE | xxiii=1 |
SS_NOTIFY | xxiv=1 |
SS_WORDELLIPSIS | xvii=1 And xviii=1 |
SS_PATHELLIPSIS | xvii=1 And xviii=1 |
SS_ENDELLIPSIS | xvii=0 And xviii=1 |
SS_SUNKEN | xx=1 |
LIST BOX
STYLE NAME | BIT # |
LBS_NODATA | xix=1 |
LBS_DISABLENOSCROLL | xx=1 |
LBS_EXTENDEDSEL | xxi=1 |
LBS_WANTKEYBOARDINPUT | xxii=1 |
LBS_MULTICOLUMN | xxiii=1 |
LBS_NOINTEGRALHEIGHT | xxiv=1 |
LBS_USETABSTOPS | xxv=1 |
LBS_HASSTRINGS | xxvi=1 |
LBS_OWNERDRAWVARIABLE | xxvii=1 |
LBS_OWNERDRAWFIXED | xxviii=1 |
LBS_MULTIPLESEL | xxix=1 |
LBS_NOREDRAW | xxx=1 |
LBS_SORT | xxxi=1 |
LBS_NOTIFY | xxxii=1 |
SCROLLBAR
STYLE NAME | BIT # |
SBS_SIZEGRIP | xxviii=1 |
SBS_SIZEBOX | xxix=1 |
SBS_BOTTOMALIGN | xxx=1 |
SBS_RIGHTALIGN SBS_SIZEBOXBOTTOMRIGHTALIGN SBS_TOPALIGN SBS_LEFTALIGN SBS_SIZEBOXTOPLEFTALIGN | xxxi=1 |
SBS_HORZ | xxxii=0 |
SBS_VERT | xxxii=1 |
අදට ලියල ඉවරයි. මේ කොටසේ තව ලියන්න තියෙනවා. මීලග කොටසින් ඒ ටික ලියනවා.