Jump to content

Control Viewer - AutoIt Window Info Tool


Yashied
 Share

Recommended Posts

7 minutes ago, VeeDub said:

UI_Automation doesn't work when the desktop is locked

nothing, nothing will work on a locked screen. I would code my own Dropbox in AutoIt.
Lol, I'd do it and charge you for the DropEmInThaBox(TM/R) service :P 

You should rethink your needs and approaches. Dropbox is not the only game in town, nor the best. 

Follow the link to my code contribution ( and other things too ).
FAQ - Please Read Before Posting.
autoit_scripter_blue_userbar.png

Link to comment
Share on other sites

@argumentum

I think we may be talking at cross-purposes

When I click on the Dropbox icon on the SystemTray, the application opens.

It is within the app that I wish to identify controls (not the icon on the System Tray).

At the present time when I click on the 'Browse Tool', the Dropbox window / application closes. So I was hoping to have some way of using the Browse Tool without causing the Dropbox window to close. In the same way that UIASpy can report info on all windows that are accessible on the desktop.

If this is going to be a hassle and you don't think it's going to work. I'll start looking into why _WinGetCntrlInfo doesn't returns [0][0] for the Dropbox window.

Thanks

VW

Dropbox App.png

Link to comment
Share on other sites

3 minutes ago, VeeDub said:

At the present time when I click on the 'Browse Tool', the Dropbox window / application closes.

image.png

..by now I feel aggravated. Kindly go back to your thread, where you're asking these questions. I can not help you any more.

Follow the link to my code contribution ( and other things too ).
FAQ - Please Read Before Posting.
autoit_scripter_blue_userbar.png

Link to comment
Share on other sites

13 minutes ago, argumentum said:

nothing, nothing will work on a locked screen. I would code my own Dropbox in AutoIt.
Lol, I'd do it and charge you for the DropEmInThaBox(TM/R) service :P 

Well I can click on the Dropbox icon on the SystemTray when the desktop is locked or unlocked

However at the present time I am unable to work with the Dropbox application that is opened - regardless of whether the desktop is locked or not.

I take your point that there are alternatives to Dropbox and that I may have to consider that option in this instance.

At this point I consider the fact that UIA doesn't work when the desktop is locked as a major weakness generally. So I'm interested to see if I can use other approaches to access controls when the desktop is locked. That is why I'm persevering with Dropbox at the moment, because it would be useful for me to automate and the techniques I identified could be useful in other instances as well.

Link to comment
Share on other sites

  • 2 weeks later...
On 3/14/2020 at 2:55 AM, argumentum said:

What's New in Version 0.2020.3.13
added: lock the "Browse Tool". Sec. and Main mouse key will lock the tool. Press SHIFT to unlock.

What's New in Version 0.2020.01.14 ( unreleased )
changed func for IsItBootRun()
changed TaskSched "_OnLogon" added 10 sec. delay

What's New in Version 0.2019.11.22 ( unreleased )
added: refresh AutoIt tab when selected and restored from tray.
changed: To speed up color picker when tab is AutoIt or Extras, will not update control info.
added: icon for uncompiled script.

The files are in the downloads area.

I'm sorry but I do not write in English I need to google translator
https://www.virustotal.com/gui/file/44357b9cdcb224a2131a8a98a6f69c1d314951b3507dd52cdfaa477aff91b91e/detection
why ?

To community goes all my regards and thanks

Link to comment
Share on other sites

  • 1 month later...
  • 1 month later...
  • 7 months later...

I discovered this thread a couple of days ago and it's really a brilliant script.
Bravo @Yashied (wherever you are now) and @argumentum who had the courage to rework it !

I'm experimenting a bit the reworked script of @boomingranny found in this link, which is Yashied's script adapted to newer versions of AutoIt, while trying to solve the following problem :

02.png.2592e44759e3223b15b92897cb94e0b5.png

As you notice, the styles of this AutoIt control (an Input control) are not all "translated" because we see in the picture, field Styles names : "0x00002081, WS_CHILD, WS_TABSTOP, WS_VISIBLE"

In fact, 0x00002081 corresponds to : 0x2000 (ES_NUMBER) + 0x0080 (ES_AUTOHSCROLL) + 0x0001 (ES_CENTER)
But as Yashied didn't include any Control style in his script (except the  Window Styles & Dialog Styles) then you'll nearly always find some "0x......" in the Control field style names.

I'll be back if experiments lead to something easy to script, probably based on additional arrays of styles (one per each type of AutoIt control) and a reworked Func _GetStyleString() which could use the Control Class ("Edit" in the pic) to pick up styles from the Edit array of styles.

Link to comment
Share on other sites

4 minutes ago, pixelsearch said:

I discovered this thread a couple of days ago and it's really a brilliant script.
...I'm experimenting a bit the reworked script ...
I'll be back if experiments lead to something...

I'll add the reworked code to the distribution and add some cosmetic tweak I was thinking of too.
I never paid attention to that you point out, but it will be a welcomed patch/fix

10 minutes ago, pixelsearch said:

In fact, 0x00002081 corresponds to : 0x2000 (ES_NUMBER) + 0x0080 (ES_AUTOHSCROLL) + 0x0001 (ES_CENTER)

if you give me the list, I could do it myself, tho if you do it ... better ;) 
Either way. Thanks for contributing. @Yashied really coded a nice tool :)

Follow the link to my code contribution ( and other things too ).
FAQ - Please Read Before Posting.
autoit_scripter_blue_userbar.png

Link to comment
Share on other sites

Hi argumentum :)

I took the Style list for all controls from this link :
https://www.autoitscript.com/autoit3/docs/appendix/GUIStyles.htm

Selected and copied (ctrl-a, ctrl-c) the whole Web page from the Browser, opened Excel, Pasted Special (as Text, not as HTML) forcing it to lose all Html format so all Excel rows would have the same small height, ending in something like this, where Style names and Styles numbers are automatically placed in 2 separate columns in Excel :

...
Edit/Input Styles
#include <EditConstants.au3>    
Default/forced       
$ES_AUTOHSCROLL 0x0080
$ES_AUTOVSCROLL 0x0040
$ES_CENTER      0x0001
$ES_LOWERCASE   0x0010
$ES_NOHIDESEL   0x0100
$ES_NUMBER      0x2000
$ES_OEMCONVERT  0x0400
$ES_MULTILINE   0x0004
$ES_PASSWORD    0x0020
$ES_READONLY    0x0800
$ES_RIGHT       0x0002
$ES_UPPERCASE   0x0008
$ES_WANTRETURN  0x1000
...

 

8 hours ago, argumentum said:

f you give me the list, I could do it myself

Please be my guest if you wanna do it :)
May I suggest, in the beginning, to try only a certain type of control (for example this Edit/Input Styles) and if you find the result satisfying, then add a 2nd type of control etc...

If it can help, it took me some time to understand why Yashied did a test based on (Not BitAND($Data[$i][0], 0xFFFF)) in his Func _GetStyleString()

For $i = 0 To UBound($Data) - 1
    If BitAND($iStyle, $Data[$i][0]) Then
        If (Not BitAND($Data[$i][0], 0xFFFF)) Or ($fDialog) Or ($fExStyle) Then
            $iStyle = BitAND($iStyle, BitNOT($Data[$i][0]))
            $Text &= $Data[$i][1] & ', '
        EndIf
    EndIf
Next

If I understood correctly, this test is done to prevent the Dialog Styles to be applied to Controls.

We can notice that all Dialog Styles have a value < 0xFFFF and are unfortunately placed in the same array as the Window styles, which all have a value > 0xFFFF (the 1st one being [0x00010000, 'WS_TABSTOP'] as found in Yashied's Style array)

An example in the pic below :

04.png.7facf7636df39e3462ae59224e003cea.png

The style "0x00000080" should be ES_AUTOHSCROLL. But if you look at Yashied's array, you'll find this :

Global Const $Style[31][2] = _
     ...
     [0x00000080, 'DS_MODALFRAME'], _
     ...

So, without the test based on (Not BitAND($Data[$i][0], 0xFFFF)), then "DS_MODALFRAME" would have been wrongly added to the Input Styles names list. I think it could have been avoided if the Dialog Styles and the Window Styles had been placed in 2 different arrays instead of being mixed in a single Style array.

Always in Func _GetStyleString(), another thing I didn't understand is why the 2 following lines don't always give the same result ?

$iStyle = BitAND($iStyle, BitNOT($Data[$i][0])) ; Yashied's code (brings correct results)
$iStyle = BitXOR($iStyle, $Data[$i][0]) ; personal test (brings sometimes wrong results)

I have a little idea why, but I'll open a new thread for this because it's not directly related to this thread.

Good luck argumentum :)

Edited by pixelsearch
typo
Link to comment
Share on other sites

On 1/25/2021 at 9:01 PM, pixelsearch said:

Good luck argumentum :)

Thanks :) 

ok, this post I will remove once you "ok" the patch. I made an include with the constants:

Spoiler
#include-once

Global Const $Style_Gui[37][2] = _
[[0x00800000, "$WS_BORDER"], _
[0x80000000, "$WS_POPUP"], _
[0x00C00000, "$WS_CAPTION"], _
[0x02000000, "$WS_CLIPCHILDREN"], _
[0x04000000, "$WS_CLIPSIBLINGS"], _
[0x08000000, "$WS_DISABLED"], _
[0x00400000, "$WS_DLGFRAME"], _
[0x00100000, "$WS_HSCROLL"], _
[0x01000000, "$WS_MAXIMIZE"], _
[0x00010000, "$WS_MAXIMIZEBOX"], _
[0x20000000, "$WS_MINIMIZE"], _
[0x00020000, "$WS_MINIMIZEBOX"], _
[0x00000000, "$WS_OVERLAPPED"], _
[0x00CF0000, "$WS_OVERLAPPEDWINDOW"], _
[0x80880000, "$WS_POPUPWINDOW"], _
[0x00040000, "$WS_SIZEBOX"], _
[0x00080000, "$WS_SYSMENU"], _
[0x00040000, "$WS_THICKFRAME"], _
[0x00200000, "$WS_VSCROLL"], _
[0x10000000, "$WS_VISIBLE"], _
[0x40000000, "$WS_CHILD"], _
[0x00020000, "$WS_GROUP"], _
[0x00010000, "$WS_TABSTOP"], _
[0x00000080, "$DS_MODALFRAME"], _
[0x00000200, "$DS_SETFOREGROUND"], _
[0x00002000, "$DS_CONTEXTHELP"], _
        [0x00000004, 'DS_3DLOOK'], _
        [0x00000001, 'DS_ABSALIGN'], _
        [0x00000800, 'DS_CENTER'], _
        [0x00001000, 'DS_CENTERMOUSE'], _
        [0x00000400, 'DS_CONTROL'], _
        [0x00000008, 'DS_FIXEDSYS'], _
        [0x00000020, 'DS_LOCALEDIT'], _
        [0x00000010, 'DS_NOFAILCREATE'], _
        [0x00000100, 'DS_NOIDLEMSG'], _
        [0x00000040, 'DS_SETFONT'], _
        [0x00000002, 'DS_SYSMODAL']]

Global Const $Style_GuiExtended[23][2] = _
[[0x00000010, "$WS_EX_ACCEPTFILES"], _
[0x00040000, "$WS_EX_APPWINDOW"], _
[0x02000000, "$WS_EX_COMPOSITED"], _
[0x00000200, "$WS_EX_CLIENTEDGE"], _
[0x00000400, "$WS_EX_CONTEXTHELP"], _
[0x00000001, "$WS_EX_DLGMODALFRAME"], _
[0x400000, "$WS_EX_LAYOUTRTL"], _
[0x00000040, "$WS_EX_MDICHILD"], _
[0x00000300, "$WS_EX_OVERLAPPEDWINDOW"], _
[0x00020000, "$WS_EX_STATICEDGE"], _
[0x00000008, "$WS_EX_TOPMOST"], _
[0x00000020, "$WS_EX_TRANSPARENT"], _
[0x00000080, "$WS_EX_TOOLWINDOW"], _
[0x00000100, "$WS_EX_WINDOWEDGE"], _
[0x00080000, "$WS_EX_LAYERED"], _
[0x00100000, "$GUI_WS_EX_PARENTDRAG"], _
        [0x00010000, 'WS_EX_CONTROLPARENT'], _
        [0x00004000, 'WS_EX_LEFTSCROLLBAR'], _
        [0x08000000, 'WS_EX_NOACTIVATE'], _
        [0x00100000, 'WS_EX_NOINHERITLAYOUT'], _
        [0x00000004, 'WS_EX_NOPARENTNOTIFY'], _
        [0x00001000, 'WS_EX_RIGHT'], _
        [0x00002000, 'WS_EX_RTLREADING']]

Global Const $Style_Button[20][2] = _
[[0x0800, "$BS_BOTTOM"], _
[0x0300, "$BS_CENTER"], _
[0x0001, "$BS_DEFPUSHBUTTON"], _
[0x2000, "$BS_MULTILINE"], _
[0x0400, "$BS_TOP"], _
[0x0C00, "$BS_VCENTER"], _
[0x0040, "$BS_ICON"], _
[0x0080, "$BS_BITMAP"], _
[0x8000, "$BS_FLAT"], _
[0x4000, "$BS_NOTIFY"], _
[0x0005, "$BS_3STATE"], _
[0x0006, "$BS_AUTO3STATE"], _
[0x0003, "$BS_AUTOCHECKBOX"], _
[0x0002, "$BS_CHECKBOX"], _
[0x0100, "$BS_LEFT"], _
[0x1000, "$BS_PUSHLIKE"], _
[0x0200, "$BS_RIGHT"], _
[0x0020, "$BS_RIGHTBUTTON"], _
[0x0007, "$BS_GROUPBOX"], _
[0x0009, "$BS_AUTORADIOBUTTON"]]

Global Const $Style_Combo[10][2] = _
[[0x0040, "$CBS_AUTOHSCROLL"], _
[0x0800, "$CBS_DISABLENOSCROLL"], _
[0x0002, "$CBS_DROPDOWN"], _
[0x0003, "$CBS_DROPDOWNLIST"], _
[0x4000, "$CBS_LOWERCASE"], _
[0x0400, "$CBS_NOINTEGRALHEIGHT"], _
[0x0080, "$CBS_OEMCONVERT"], _
[0x0001, "$CBS_SIMPLE"], _
[0x0100, "$CBS_SORT"], _
[0x2000, "$CBS_UPPERCASE"]]

Global Const $Style_ListBox[7][2] = _
[[0x1000, "$LBS_DISABLENOSCROLL"], _
[0x0100, "$LBS_NOINTEGRALHEIGHT"], _
[0x4000, "$LBS_NOSEL"], _
[0x0001, "$LBS_NOTIFY"], _
[0x0002, "$LBS_SORT"], _
[0xA00003, "$LBS_STANDARD"], _
[0x0080, "$LBS_USETABSTOPS"]]

Global Const $Style_Edit[13][2] = _
[[0x0080, "$ES_AUTOHSCROLL"], _
[0x0040, "$ES_AUTOVSCROLL"], _
[0x0001, "$ES_CENTER"], _
[0x0010, "$ES_LOWERCASE"], _
[0x0100, "$ES_NOHIDESEL"], _
[0x2000, "$ES_NUMBER"], _
[0x0400, "$ES_OEMCONVERT"], _
[0x0004, "$ES_MULTILINE"], _
[0x0020, "$ES_PASSWORD"], _
[0x0800, "$ES_READONLY"], _
[0x0002, "$ES_RIGHT"], _
[0x0008, "$ES_UPPERCASE"], _
[0x1000, "$ES_WANTRETURN"]]

Global Const $Style_Progress[4][2] = _
[[0x08, "$PBS_MARQUEE"], _
[0x01, "$PBS_SMOOTH"], _
[0x10, "$PBS_SMOOTHREVERSE"], _
[0x04, "$PBS_VERTICAL"]]

Global Const $Style_UpDown[6][2] = _
[[0x08, "$UDS_ALIGNLEFT"], _
[0x04, "$UDS_ALIGNRIGHT"], _
[0x20, "$UDS_ARROWKEYS"], _
[0x40, "$UDS_HORZ"], _
[0x80, "$UDS_NOTHOUSANDS"], _
[0x01, "$UDS_WRAP"]]

Global Const $Style_Label[19][2] = _
[[0x07, "$SS_BLACKFRAME"], _
[0x04, "$SS_BLACKRECT"], _
[0x01, "$SS_CENTER"], _
[0x0200, "$SS_CENTERIMAGE"], _
[0x12, "$SS_ETCHEDFRAME"], _
[0x10, "$SS_ETCHEDHORZ"], _
[0x11, "$SS_ETCHEDVERT"], _
[0x08, "$SS_GRAYFRAME"], _
[0x05, "$SS_GRAYRECT"], _
[0x0000, "$SS_LEFT"], _
[0x0C, "$SS_LEFTNOWORDWRAP"], _
[0x80, "$SS_NOPREFIX"], _
[0x0100, "$SS_NOTIFY"], _
[0x0002, "$SS_RIGHT"], _
[0x0400, "$SS_RIGHTJUST"], _
[0x0B, "$SS_SIMPLE"], _
[0x1000, "$SS_SUNKEN"], _
[0x09, "$SS_WHITEFRAME"], _
[0x06, "$SS_WHITERECT"]]

Global Const $Style_Tab[20][2] = _
[[0x0001, "$TCS_SCROLLOPPOSITE"], _
[0x0002, "$TCS_BOTTOM"], _
[0x0002, "$TCS_RIGHT"], _
[0x0004, "$TCS_MULTISELECT"], _
[0x0008, "$TCS_FLATBUTTONS"], _
[0x0010, "$TCS_FORCEICONLEFT"], _
[0x0020, "$TCS_FORCELABELLEFT"], _
[0x0040, "$TCS_HOTTRACK"], _
[0x0080, "$TCS_VERTICAL"], _
[0x0000, "$TCS_TABS"], _
[0x0100, "$TCS_BUTTONS"], _
[0x0000, "$TCS_SINGLELINE"], _
[0x0200, "$TCS_MULTILINE"], _
[0x0000, "$TCS_RIGHTJUSTIFY"], _
[0x0400, "$TCS_FIXEDWIDTH"], _
[0x0800, "$TCS_RAGGEDRIGHT"], _
[0x1000, "$TCS_FOCUSONBUTTONDOWN"], _
[0x2000, "$TCS_OWNERDRAWFIXED"], _
[0x4000, "$TCS_TOOLTIPS"], _
[0x8000, "$TCS_FOCUSNEVER"]]

Global Const $Style_Avi[4][2] = _
[[0x04, "$ACS_AUTOPLAY"], _
[0x01, "$ACS_CENTER"], _
[0x02, "$ACS_TRANSPARENT"], _
[0x10, "$ACS_NONTRANSPARENT"]]

Global Const $Style_Date[6][2] = _
[[0x01, "$DTS_UPDOWN"], _
[0x02, "$DTS_SHOWNONE"], _
[0x04, "$DTS_LONGDATEFORMAT"], _
[0x09, "$DTS_TIMEFORMAT"], _
[0x20, "$DTS_RIGHTALIGN"], _
[0x00, "$DTS_SHORTDATEFORMAT"]]

Global Const $Style_MonthCal[3][2] = _
[[0x10, "$MCS_NOTODAY"], _
[0x08, "$MCS_NOTODAYCIRCLE"], _
[0x04, "$MCS_WEEKNUMBERS"]]

Global Const $Style_TreeView[13][2] = _
[[0x0001, "$TVS_HASBUTTONS"], _
[0x0002, "$TVS_HASLINES"], _
[0x0004, "$TVS_LINESATROOT"], _
[0x0010, "$TVS_DISABLEDRAGDROP"], _
[0x0020, "$TVS_SHOWSELALWAYS"], _
[0x0040, "$TVS_RTLREADING"], _
[0x0080, "$TVS_NOTOOLTIPS"], _
[0x0100, "$TVS_CHECKBOXES"], _
[0x0200, "$TVS_TRACKSELECT"], _
[0x0400, "$TVS_SINGLEEXPAND"], _
[0x1000, "$TVS_FULLROWSELECT"], _
[0x2000, "$TVS_NOSCROLL"], _
[0x4000, "$TVS_NONEVENHEIGHT"]]

Global Const $Style_Slider[10][2] = _
[[0x0001, "$TBS_AUTOTICKS"], _
[0x0008, "$TBS_BOTH"], _
[0x0000, "$TBS_BOTTOM"], _
[0x0000, "$TBS_HORZ"], _
[0x0002, "$TBS_VERT"], _
[0x0080, "$TBS_NOTHUMB"], _
[0x0010, "$TBS_NOTICKS"], _
[0x0004, "$TBS_LEFT"], _
[0x0000, "$TBS_RIGHT"], _
[0x0004, "$TBS_TOP"]]

Global Const $Style_ListView[12][2] = _
[[0x0000, "$LVS_ICON"], _
[0x0001, "$LVS_REPORT"], _
[0x0002, "$LVS_SMALLICON"], _
[0x0003, "$LVS_LIST"], _
[0x0200, "$LVS_EDITLABELS"], _
[0x4000, "$LVS_NOCOLUMNHEADER"], _
[0x8000, "$LVS_NOSORTHEADER"], _
[0x0004, "$LVS_SINGLESEL"], _
[0x0008, "$LVS_SHOWSELALWAYS"], _
[0x0010, "$LVS_SORTASCENDING"], _
[0x0020, "$LVS_SORTDESCENDING"], _
[0x0080, "$LVS_NOLABELWRAP"]]

Global Const $Style_ListViewExtended[12][2] = _
[[0x00000020, "$LVS_EX_FULLROWSELECT"], _
[0x00000001, "$LVS_EX_GRIDLINES"], _
[0x00000010, "$LVS_EX_HEADERDRAGDROP"], _
[0x00000008, "$LVS_EX_TRACKSELECT"], _
[0x00000004, "$LVS_EX_CHECKBOXES"], _
[0x00008000, "$LVS_EX_BORDERSELECT"], _
[0x00010000, "$LVS_EX_DOUBLEBUFFER"], _
[0x00000100, "$LVS_EX_FLATSB"], _
[0x00002000, "$LVS_EX_MULTIWORKAREAS"], _
[0x00080000, "$LVS_EX_SNAPTOGRID"], _
[0x00000002, "$LVS_EX_SUBITEMIMAGES"], _
[0x00000400, "$LVS_EX_INFOTIP"]]

    ...so add #include <GUIStyles.inc.au3> ; this code

and find and change:

_SetData($Input[22], _GetStyleString($Data, 0, 0, GUICtrlRead($Input[16])))
; and 
_SetData($Input[24], _GetStyleString($Data, 0, 1, "Ex" & GUICtrlRead($Input[16])))

and replace:

Func _GetStyleString($iStyle, $fDialog = 1, $fExStyle = 0, $sClass = '')
    If $sClass <> '' Then ConsoleWrite($sClass & @CRLF)
    Local $Data, $Text = ''

    If $sClass <> '' Then _GetCtrlStyleString($iStyle, $Text, $sClass)

    If $fExStyle Then
        $Data = $Style_GuiExtended ; $ExStyle
    Else
        $Data = $Style_Gui ; $Style
    EndIf
    Local $iStyleRet = $iStyle ; ..save the missing match in $iStyleRet
    For $i = 0 To UBound($Data) - 1
        If BitAND($iStyle, $Data[$i][0]) Then ; ..found a match in the array
            If (Not BitAND($Data[$i][0], 0xFFFF)) Or ($fDialog) Or ($fExStyle) Or $sClass <> '' Then
                $iStyleRet = BitAND($iStyleRet, BitNOT($Data[$i][0])) ; ..remove THAT from the return $iStyleRet
                $Text &= $Data[$i][1] & ', '
            EndIf
        EndIf
    Next
    If $iStyleRet Then
        $Text = '0x' & Hex($iStyleRet, 8) & ', ' & $Text
    EndIf
    Return StringRegExpReplace($Text, ',\s\z', '')
EndFunc   ;==>_GetStyleString

Func _GetCtrlStyleString($iStyle, ByRef $Text, $sClass)

    Switch $sClass  ; $Input[16]
        Case "Button"
            $Data = $Style_Button
        Case "ComboBox"
            $Data = $Style_Combo
        Case "ListBox"
            $Data = $Style_ListBox
        Case "Edit"
            $Data = $Style_Edit
        Case "msctls_progress32"
            $Data = $Style_Progress
        Case "msctls_updown32"
            $Data = $Style_UpDown
        Case "Static"
            $Data = $Style_Label
        Case "SysTabControl32"
            $Data = $Style_Tab
        Case "SysAnimate32"
            $Data = $Style_Avi
        Case "SysDateTimePick32"
            $Data = $Style_Date
        Case "SysMonthCal32"
            $Data = $Style_MonthCal
        Case "SysTreeView32"
            $Data = $Style_TreeView
        Case "msctls_trackbar32"
            $Data = $Style_Slider
        Case "SysListView32"
            $Data = $Style_ListView
        Case "ExSysListView32"
            $Data = $Style_ListViewExtended
    EndSwitch

    For $i = 0 To UBound($Data) - 1
        If BitAND($iStyle, $Data[$i][0]) Then
            $iStyle = BitAND($iStyle, BitNOT($Data[$i][0]))
            $Text &= $Data[$i][1] & ', '
        EndIf
    Next
EndFunc

 

That is the corrected implementation. The control styles are added ( from the link ) and also the window styles, as a control is in itself a window of sorts.

Try it out and I'll post the new build on Wednesday. ( I'll be busy doing woodwork with the neighbor tomorrow :) ) 

Edited by argumentum
fixed an oops / changes

Follow the link to my code contribution ( and other things too ).
FAQ - Please Read Before Posting.
autoit_scripter_blue_userbar.png

Link to comment
Share on other sites

Hi argumentum :)

Wow... you are fast, it takes me much (much) more time to script and test.
Just a few comments on your precedent post, but there are still plenty of tests to be done

I notice you added Windows styles & extended styles to Yashied's original list, probably because they are in the web page we worked on (this web page is in fact an exact copy of the help file page named "GUI Control Styles"). But see what happens now :

Global Const $ExStyle[21][2] ; Yashied's
Global Const $Style_GuiExtended[23][2] ; now

2 added styles are :

[0x00000300, "$WS_EX_OVERLAPPEDWINDOW"]
[0x00100000, "$GUI_WS_EX_PARENTDRAG"]

* $WS_EX_OVERLAPPEDWINDOW : to be suppressed, it combines WS_EX_CLIENTEDGE (0x00000200) and WS_EX_WINDOWEDGE (0x00000100)

* $GUI_WS_EX_PARENTDRAG : to be placed in a new array. It's an AutoIt special extended style that allows a label or pic control to be used as the title bar to drag the whole parent window. Leaving it in the $Style_GuiExtended array creates a duplicate with [0x00100000, 'WS_EX_NOINHERITLAYOUT']

I don't know who decided one day to suppress $WS_EX_NOINHERITLAYOUT from the help file and to replace it with $GUI_WS_EX_PARENTDRAG. Gladly I was lucky enough to find $WS_EX_NOINHERITLAYOUT on MSDN and it gave a great result in the script found in this link.

Following your array names, this new array could be named $Style_LabelExtended (the same way you did with $Style_ListView and $Style_ListViewExtended) and could correspond to a Case "ExStatic" (the same way you did with Case "SysListView32" and Case "ExSysListView32")

Also this new array should contain only 1 element [0x00100000, "$GUI_WS_EX_PARENTDRAG"]
As Pic and Label controls both have the Static Class, then it should be ok (all this needs further tests).

Two thoughts come to my mind :

1st thought: If a "link" existed between all array names and control class names, then it could avoid the numerous Case found in the _GetCtrlStyleString() function. Here is a script that shows this behavior :

#include <Array.au3>

Global Const $Style_Edit[3][2] = _
[[0x0080, "$ES_AUTOHSCROLL"], _
[0x0040, "$ES_AUTOVSCROLL"], _
[0x0001, "$ES_CENTER"]] ; Edit styles (cropped, just for test)

Global Const $Style_SysTabControl32[2][2] = _
[[0x0001, "$TCS_SCROLLOPPOSITE"], _
[0x0002, "$TCS_BOTTOM"]] ; Tab styles (cropped, just for test)

$sClass = "Edit"
$Data = Eval("Style_" & $sClass)
_ArrayDisplay($Data)

$sClass = "SysTabControl32"
$Data = Eval("Style_" & $sClass)
_ArrayDisplay($Data)

#cs
It seems to work, then, instead of 16 Case (15 + 1 for "ExStatic") in the following function :

Func _GetCtrlStyleString(ByRef $iStyle, ByRef $Text, $sClass)
    Switch $sClass  ; $Input[16]
        Case "Button"
            $Data = $Style_Button
        Case "ComboBox"
            $Data = $Style_Combo
        Case "ListBox"
            $Data = $Style_ListBox
        Case "Edit"
            $Data = $Style_Edit
        Case "msctls_progress32"
            $Data = $Style_Progress
        Case ...
    EndSwitch

It could be scripted with 1 line only :

Func _GetCtrlStyleString(ByRef $iStyle, ByRef $Text, $sClass)
    $Data = Eval("Style_" & $sClass)

#ce


2nd thought: maybe _GetCtrlStyleString() should be called only at the very end of Func _GetStyleString(), within the final test :

If $iStyle Then
    ; Call _GetCtrlStyleString() only now, because style value is still <> 0
    ; When it returns, if $iStyle is still <> 0 then apply the following original line.
    $Text = '0x' & Hex($iStyle, 8) & ', ' & $Text
EndIf

By the way, a first (quick) test on the styles of an Input control gives me bad results :

0x00000080, WS_CHILD, WS_GROUP, WS_TABSTOP, WS_VISIBLE ; Yashied's (ok)
$ES_AUTOHSCROLL, $WS_MAXIMIZEBOX, $WS_MINIMIZEBOX, $WS_VISIBLE, $WS_CHILD ; now

This is probably because 6 styles were added to Yashied's list :

Global Const $Style[31][2]      ; Yashied's
Global Const $Style_Gui[37][2]  ; now

[0x00010000, "$WS_MAXIMIZEBOX"]     ; duplicates the already existing $WS_TABSTOP
[0x00020000, "$WS_MINIMIZEBOX"]     ; duplicates the already existing $WS_GROUP
[0x00000000, "$WS_OVERLAPPED"]      ; 0 value (should be ignored)
[0x00CF0000, "$WS_OVERLAPPEDWINDOW"]; sums other styles (help file)
[0x80880000, "$WS_POPUPWINDOW"]     ; sums other styles (help file)
[0x00040000, "$WS_THICKFRAME"]      ; duplicates the already existing $WS_SIZEBOX

Ok dinner time and the fridge is empty, how great !
By the way, in your precedent post, I like your "Edited: fixed an oops" , I'll sure use it when I Edit my posts :)

Link to comment
Share on other sites

5 hours ago, pixelsearch said:

notice you added Windows styles & extended styles to Yashied's original list, probably because they are in the web page we worked on

yes, I pulled the data:

Spoiler
#include <File.au3>
#include <Debug.au3>

main()
Func main()
    Local $aTemp, $aFile, $StyleName = "", $iCount = 0
    _FileReadToArray("GUIStyles.htm.txt", $aFile) ; https://www.autoitscript.com/autoit3/docs/appendix/GUIStyles.htm
;~  _DebugArrayDisplay($aFile)
    For $n = 1 To $aFile[0]
        $aFile[$n] = StringStripWS($aFile[$n], 3)
        If StringInStr($aFile[$n], '<th class="c1">') Then
            ConsoleWrite(@TAB & $iCount & @CRLF)
            $aTemp = StringSplit($aFile[$n], '"')
            $StyleName = "gui"
            For $m = 1 To $aTemp[0]
                If $aTemp[$m] = '><a id=' Then $StyleName = $aTemp[$m + 1]
            Next
            $iCount = 0
            ConsoleWrite($StyleName & @CRLF)
            ContinueLoop
        EndIf
        If StringInStr($aFile[$n], '<td>$') And StringInStr($aFile[$n + 1], '<td>0x') Then
            $iCount += 1
            ConsoleWrite('[' & deHtmlEd($aFile[$n + 1]) & ', "' & deHtmlEd($aFile[$n]) & '"], _' & @CRLF)
        EndIf
    Next
    ConsoleWrite(@TAB & $iCount & @CRLF)
EndFunc

Func deHtmlEd($sStr)
    $sStr = StringReplace($sStr, '<td>', '')
    $sStr = StringReplace($sStr, '</td>', '')
    Return StringStripWS($sStr, 8)
EndFunc

 

from the web page and Arrayfy it the way Yashied did. Then added those entries Yashied have and the page don't have.

5 hours ago, pixelsearch said:

Following your array names, this new array could be named $Style_LabelExtended (the same way you did with $Style_ListView....

Had to give'em a name so I used those from the webpage, tho, yes, renaming would make shorter code possible.

5 hours ago, pixelsearch said:

By the way, a first (quick) test on the styles of an Input control gives me bad results

You are much more proficient with all this GUI stuff than me. The modifications are simple to find and change. You know what you have in mind and are familiar with the challenges. I say you give me the code to include/patch and I'll post it. It'll be easier than back and forth ideas, and I trust your coding ideas. So its been decided, all in favor say yey ( yey ):gathering:  motion passes for you to supply a working patch :)

5 hours ago, pixelsearch said:

I like your "Edited: fixed an oops"

lol, me too :D 

Follow the link to my code contribution ( and other things too ).
FAQ - Please Read Before Posting.
autoit_scripter_blue_userbar.png

Link to comment
Share on other sites

  • 2 weeks later...
  • 3 weeks later...

@argumentum : here is the working patch to display the control styles and ex_styles names corresponding to MS classes.
To make it easier for you, I'll indicate the line numbers (from bottom to top) to change in your file CV.au3, version 0.2020.3.13 dated March 14, 2020

* Line 2963 :
_SetData($Input[8], _GetStyleString($Data, 1, 1))

to be replaced with :

_SetData($Input[8], _GetStyleString($Data, 1)) ; GUI extended styles names


* Line 2954 :
_SetData($Input[6], _GetStyleString($Data))

to be replaced with :

_SetData($Input[6], _GetStyleString($Data, 0)) ; GUI styles names


* Line 2879 :
_SetData($Input[24], _GetStyleString($Data, 0, 1))

to be replaced with :

Local $Data2 = 0
If GUICtrlRead($Input[16]) = "SysListView32" Then $Data2 = _GUICtrlListView_GetExtendedListViewStyle($hWnd)
_SetData($Input[24], _GetCtrlStyleString($Data, 1, "Ex_" & GUICtrlRead($Input[16]), $Data2)) ; Control extended styles names


* Line 2870 :
_SetData($Input[22], _GetStyleString($Data, 0, 0))

to be replaced with :

_SetData($Input[22], _GetCtrlStyleString($Data, 0, GUICtrlRead($Input[16]))) ; Control styles names

 

* Lines 1747 -> 1768
Func _GetStyleString($iStyle, $fDialog = 1, $fExStyle = 0)

to be replaced with 3 functions (code in 1st spoiler below)

Func _GetStyleString($iStyle, $fExStyle)
Func _GetCtrlStyleString($iStyle, $fExStyle, $sClass, $iLVExStyle = 0)
Func _GetCtrlStyleString2(ByRef $iStyle, ByRef $Text, $sClass, $iLVExStyle = 0)
Spoiler
;=====================================================================
Func _GetStyleString($iStyle, $fExStyle)

    Local $Text = '', $Data = $fExStyle ? $Style_GuiExtended : $Style_Gui

    For $i = 0 To UBound($Data) - 1
        If BitAND($iStyle, $Data[$i][0]) = $Data[$i][0] Then
            $iStyle = BitAND($iStyle, BitNOT($Data[$i][0]))
            If StringLeft($Data[$i][1], 1) <> "!" Then
                $Text &= $Data[$i][1] & ', '
            Else
                ; ex. '! WS_MINIMIZEBOX ! WS_GROUP'  =>  'WS_MINIMIZEBOX, '
                $Text &= StringMid($Data[$i][1], 3, StringInStr($Data[$i][1], "!", 2, 2) -4) & ', '
            EndIf
        EndIf
    Next

    If $iStyle Then $Text = '0x' & Hex($iStyle, 8) & ', ' & $Text

    Return StringRegExpReplace($Text, ',\s\z', '')
EndFunc   ;==>_GetStyleString

;=====================================================================
Func _GetCtrlStyleString($iStyle, $fExStyle, $sClass, $iLVExStyle = 0)

    If $sClass = "AutoIt v3 GUI" Or $sClass = "#32770" Or $sClass = "MDIClient" Then ; control = child GUI, dialog box (msgbox) etc...
        Return _GetStyleString($iStyle, 0)
    EndIf

    If StringLeft($sClass, 8) = "RichEdit" Then $sClass = "RichEdit" ; RichEdit, RichEdit20A, RichEdit20W, RichEdit50A, RichEdit50W

    Local $Text = ''

    _GetCtrlStyleString2($iStyle, $Text, $sClass, $iLVExStyle) ; 4th param. in case $sClass = "Ex_SysListView32" (special treatment)

    If $sClass = "ReBarWindow32" Or $sClass = "ToolbarWindow32" Or $sClass = "msctls_statusbar32" Then
        $sClass = "Common" ; "for rebar controls, toolbar controls, and status windows" (msdn)
        _GetCtrlStyleString2($iStyle, $Text, $sClass)
    ElseIf $sClass = "RichEdit" Then
        $sClass = "Edit" ; "Richedit controls also support many edit control styles (not all)" (msdn)
        _GetCtrlStyleString2($iStyle, $Text, $sClass)
    EndIf

    Local $Data = $fExStyle ? $Style_GuiExtended : $Style_Gui

    For $i = 0 To UBound($Data) - 1
        If BitAND($iStyle, $Data[$i][0]) = $Data[$i][0] Then
            If (Not BitAND($Data[$i][0], 0xFFFF)) Or ($fExStyle) Then
                $iStyle = BitAND($iStyle, BitNOT($Data[$i][0]))
                If StringLeft($Data[$i][1], 1) <> "!" Then
                    $Text &= $Data[$i][1] & ', '
                Else
                    ; ex. '! WS_MINIMIZEBOX ! WS_GROUP'  =>  'WS_GROUP, '
                    $Text &= StringMid($Data[$i][1], StringInStr($Data[$i][1], "!", 2, 2) + 2) & ', '
                EndIf
            EndIf
        EndIf
    Next

    If $iStyle Then $Text = '0x' & Hex($iStyle, 8) & ', ' & $Text

    Return StringRegExpReplace($Text, ',\s\z', '')
EndFunc   ;==>_GetCtrlStyleString

;=====================================================================
Func _GetCtrlStyleString2(ByRef $iStyle, ByRef $Text, $sClass, $iLVExStyle = 0)

    Local $Data

    Switch $sClass  ; $Input[16]
        Case "Button"
            $Data = $Style_Button
        Case "ComboBox", "ComboBoxEx32"
            $Data = $Style_Combo
        Case "Common"
            $Data = $Style_Common ; "for rebar controls, toolbar controls, and status windows (msdn)"
        Case "Edit"
            $Data = $Style_Edit
        Case "ListBox"
            $Data = $Style_ListBox
        Case "msctls_progress32"
            $Data = $Style_Progress
        Case "msctls_statusbar32"
            $Data = $Style_StatusBar
        Case "msctls_trackbar32"
            $Data = $Style_Slider
        Case "msctls_updown32"
            $Data = $Style_UpDown
        Case "ReBarWindow32"
            $Data = $Style_Rebar
        Case "RichEdit"
            $Data = $Style_RichEdit
        Case "Scrollbar"
            $Data = $Style_Scrollbar
        Case "Static"
            $Data = $Style_Static
        Case "SysAnimate32"
            $Data = $Style_Avi
        Case "SysDateTimePick32"
            $Data = $Style_DateTime
        Case "SysHeader32"
            $Data = $Style_Header
        Case "SysListView32"
            $Data = $Style_ListView
        Case "Ex_SysListView32" ; special treatment below
            $Data = $Style_ListViewExtended
        Case "SysMonthCal32"
            $Data = $Style_MonthCal
        Case "SysPager"
            $Data = $Style_Pager
        Case "SysTabControl32", "SciTeTabCtrl"
            $Data = $Style_Tab
        Case "SysTreeView32"
            $Data = $Style_TreeView
        Case "ToolbarWindow32"
            $Data = $Style_Toolbar
        Case Else
            Return
    EndSwitch

    If $sClass <> "Ex_SysListView32" Then
        For $i = 0 To UBound($Data) - 1
            If BitAND($iStyle, $Data[$i][0]) = $Data[$i][0] Then
                $iStyle = BitAND($iStyle, BitNOT($Data[$i][0]))
                $Text = $Data[$i][1] & ', ' & $Text
            EndIf
        Next
    Else
        For $i = 0 To UBound($Data) - 1
            If BitAND($iLVExStyle, $Data[$i][0]) = $Data[$i][0] Then
                $iLVExStyle = BitAND($iLVExStyle, BitNOT($Data[$i][0]))
                $Text = $Data[$i][1] & ', ' & $Text
                If BitAND($iStyle, $Data[$i][0]) = $Data[$i][0] Then
                    $iStyle = BitAND($iStyle, BitNOT($Data[$i][0]))
                EndIf
            EndIf
        Next
        If $iLVExStyle Then $Text = 'LVex: 0x' & Hex($iLVExStyle, 8) & ', ' & $Text
        ; next test bc LVS_EX_FULLROWSELECT (default AutoIt LV ext style) and WS_EX_TRANSPARENT got both same value 0x20 (hard to solve in some cases)
        If BitAND($iStyle, $WS_EX_TRANSPARENT) = $WS_EX_TRANSPARENT Then ; note that $WS_EX_TRANSPARENT has nothing to do with listview
            $iStyle = BitAND($iStyle, BitNOT($WS_EX_TRANSPARENT))
        EndIf
    EndIf
EndFunc   ;==>_GetCtrlStyleString2

 

 

* Lines 217 -> 271 : to be suppressed
Global Const $Style[31][2] = _    ...
Global Const $ExStyle[21][2] = _  ...


* Line 194 : to be added
#include <UDFs\GUIStyles.inc.au3>


* Content of preceding include file in 2nd spoiler below :

Spoiler
#include-once

Global Const $Style_Gui[32][2] = _
   [[0x80000000, 'WS_POPUP'], _
    [0x40000000, 'WS_CHILD'], _
    [0x20000000, 'WS_MINIMIZE'], _
    [0x10000000, 'WS_VISIBLE'], _
    [0x08000000, 'WS_DISABLED'], _
    [0x04000000, 'WS_CLIPSIBLINGS'], _
    [0x02000000, 'WS_CLIPCHILDREN'], _
    [0x01000000, 'WS_MAXIMIZE'], _
    [0x00CF0000, 'WS_OVERLAPPEDWINDOW'], _ ; (WS_CAPTION | WS_SYSMENU | WS_SIZEBOX | WS_MINIMIZEBOX | WS_MAXIMIZEBOX) aka 'WS_TILEDWINDOW'
    [0x00C00000, 'WS_CAPTION'], _          ; (WS_BORDER | WS_DLGFRAME)
    [0x00800000, 'WS_BORDER'], _
    [0x00400000, 'WS_DLGFRAME'], _
    [0x00200000, 'WS_VSCROLL'], _
    [0x00100000, 'WS_HSCROLL'], _
    [0x00080000, 'WS_SYSMENU'], _
    [0x00040000, 'WS_SIZEBOX'], _
    [0x00020000, '! WS_MINIMIZEBOX ! WS_GROUP'], _   ; ! GUI ! Control
    [0x00010000, '! WS_MAXIMIZEBOX ! WS_TABSTOP'], _ ; ! GUI ! Control
    [0x00002000, 'DS_CONTEXTHELP'], _
    [0x00001000, 'DS_CENTERMOUSE'], _
    [0x00000800, 'DS_CENTER'], _
    [0x00000400, 'DS_CONTROL'], _
    [0x00000200, 'DS_SETFOREGROUND'], _
    [0x00000100, 'DS_NOIDLEMSG'], _
    [0x00000080, 'DS_MODALFRAME'], _
    [0x00000040, 'DS_SETFONT'], _
    [0x00000020, 'DS_LOCALEDIT'], _
    [0x00000010, 'DS_NOFAILCREATE'], _
    [0x00000008, 'DS_FIXEDSYS'], _
    [0x00000004, 'DS_3DLOOK'], _
    [0x00000002, 'DS_SYSMODAL'], _
    [0x00000001, 'DS_ABSALIGN']]
    ;
    ; [0x80880000, 'WS_POPUPWINDOW']
    ; [0x20000000, 'WS_ICONIC']
    ; [0x00040000, 'WS_THICKFRAME']
    ;
    ; [0x00000000, 'WS_OVERLAPPED'] ; also named 'WS_TILED'


Global Const $Style_GuiExtended[21][2] = _
   [[0x08000000, 'WS_EX_NOACTIVATE'], _
    [0x02000000, 'WS_EX_COMPOSITED'], _
    [0x00400000, 'WS_EX_LAYOUTRTL'], _
    [0x00100000, '! WS_EX_NOINHERITLAYOUT ! GUI_WS_EX_PARENTDRAG'], _ ; ! GUI ! Control (label or pic, AutoIt "draggable" feature on 2 controls)
    [0x00080000, 'WS_EX_LAYERED'], _
    [0x00040000, 'WS_EX_APPWINDOW'], _
    [0x00020000, 'WS_EX_STATICEDGE'], _
    [0x00010000, 'WS_EX_CONTROLPARENT'], _ ; AutoIt adds a "draggable" feature to this GUI extended style behavior
    [0x00004000, 'WS_EX_LEFTSCROLLBAR'], _
    [0x00002000, 'WS_EX_RTLREADING'], _
    [0x00001000, 'WS_EX_RIGHT'], _
    [0x00000400, 'WS_EX_CONTEXTHELP'], _
    [0x00000200, 'WS_EX_CLIENTEDGE'], _
    [0x00000100, 'WS_EX_WINDOWEDGE'], _
    [0x00000080, 'WS_EX_TOOLWINDOW'], _
    [0x00000040, 'WS_EX_MDICHILD'], _
    [0x00000020, 'WS_EX_TRANSPARENT'], _
    [0x00000010, 'WS_EX_ACCEPTFILES'], _
    [0x00000008, 'WS_EX_TOPMOST'], _
    [0x00000004, 'WS_EX_NOPARENTNOTIFY'], _
    [0x00000001, 'WS_EX_DLGMODALFRAME']]
    ;
    ; [0x00000300, 'WS_EX_OVERLAPPEDWINDOW']
    ; [0x00000188, 'WS_EX_PALETTEWINDOW']
    ;
    ; [0x00000000, 'WS_EX_LEFT']
    ; [0x00000000, 'WS_EX_LTRREADING']
    ; [0x00000000, 'WS_EX_RIGHTSCROLLBAR']


Global Const $Style_Avi[5][2] = _
   [[0x0010, 'ACS_NONTRANSPARENT'], _
    [0x0008, 'ACS_TIMER'], _
    [0x0004, 'ACS_AUTOPLAY'], _
    [0x0002, 'ACS_TRANSPARENT'], _
    [0x0001, 'ACS_CENTER']]


Global Const $Style_Button[20][2] = _
   [[0x8000, 'BS_FLAT'], _
    [0x4000, 'BS_NOTIFY'], _
    [0x2000, 'BS_MULTILINE'], _
    [0x1000, 'BS_PUSHLIKE'], _
    [0x0C00, 'BS_VCENTER'], _
    [0x0800, 'BS_BOTTOM'], _
    [0x0400, 'BS_TOP'], _
    [0x0300, 'BS_CENTER'], _
    [0x0200, 'BS_RIGHT'], _
    [0x0100, 'BS_LEFT'], _
    [0x0080, 'BS_BITMAP'], _
    [0x0040, 'BS_ICON'], _
    [0x0020, 'BS_RIGHTBUTTON'], _
    [0x0009, 'BS_AUTORADIOBUTTON'] , _
    [0x0007, 'BS_GROUPBOX'], _
    [0x0006, 'BS_AUTO3STATE'], _
    [0x0005, 'BS_3STATE'], _
    [0x0003, 'BS_AUTOCHECKBOX'], _
    [0x0002, 'BS_CHECKBOX'], _
    [0x0001, 'BS_DEFPUSHBUTTON']]


Global Const $Style_Combo[13][2] = _
   [[0x4000, 'CBS_LOWERCASE'], _
    [0x2000, 'CBS_UPPERCASE'], _
    [0x0800, 'CBS_DISABLENOSCROLL'], _
    [0x0400, 'CBS_NOINTEGRALHEIGHT'], _
    [0x0200, 'CBS_HASSTRINGS'], _
    [0x0100, 'CBS_SORT'], _
    [0x0080, 'CBS_OEMCONVERT'], _
    [0x0040, 'CBS_AUTOHSCROLL'], _
    [0x0020, 'CBS_OWNERDRAWVARIABLE'], _
    [0x0010, 'CBS_OWNERDRAWFIXED'], _
    [0x0003, 'CBS_DROPDOWNLIST'], _
    [0x0002, 'CBS_DROPDOWN'], _
    [0x0001, 'CBS_SIMPLE']]


Global Const $Style_Common[12][2] = _ ; "for rebar controls, toolbar controls, and status windows (msdn)"
   [[0x0083, 'CCS_RIGHT'], _
    [0x0082, 'CCS_NOMOVEX'], _
    [0x0081, 'CCS_LEFT'], _
    [0x0080, 'CCS_VERT'], _
    [0x0040, 'CCS_NODIVIDER'], _
    [0x0020, 'CCS_ADJUSTABLE'], _
    [0x0010, 'CCS_NOHILITE'], _
    [0x0008, 'CCS_NOPARENTALIGN'], _
    [0x0004, 'CCS_NORESIZE'], _
    [0x0003, 'CCS_BOTTOM'], _
    [0x0002, 'CCS_NOMOVEY'], _
    [0x0001, 'CCS_TOP']]


Global Const $Style_DateTime[7][2] = _
   [[0x0020, 'DTS_RIGHTALIGN'], _
    [0x0010, 'DTS_APPCANPARSE'], _
    [0x000C, 'DTS_SHORTDATECENTURYFORMAT'], _
    [0x0009, 'DTS_TIMEFORMAT'], _
    [0x0004, 'DTS_LONGDATEFORMAT'], _
    [0x0002, 'DTS_SHOWNONE'], _
    [0x0001, 'DTS_UPDOWN']]
    ;
    ; [0x0000, 'DTS_SHORTDATEFORMAT']


Global Const $Style_Edit[13][2] = _
   [[0x2000, 'ES_NUMBER'], _
    [0x1000, 'ES_WANTRETURN'], _
    [0x0800, 'ES_READONLY'], _
    [0x0400, 'ES_OEMCONVERT'], _
    [0x0100, 'ES_NOHIDESEL'], _
    [0x0080, 'ES_AUTOHSCROLL'], _
    [0x0040, 'ES_AUTOVSCROLL'], _
    [0x0020, 'ES_PASSWORD'], _
    [0x0010, 'ES_LOWERCASE'], _
    [0x0008, 'ES_UPPERCASE'], _
    [0x0004, 'ES_MULTILINE'], _
    [0x0002, 'ES_RIGHT'], _
    [0x0001, 'ES_CENTER']]


Global Const $Style_Header[10][2] = _
   [[0x1000, 'HDS_OVERFLOW'], _
    [0x0800, 'HDS_NOSIZING'], _
    [0x0400, 'HDS_CHECKBOXES'], _
    [0x0200, 'HDS_FLAT'], _
    [0x0100, 'HDS_FILTERBAR'], _
    [0x0080, 'HDS_FULLDRAG'], _
    [0x0040, 'HDS_DRAGDROP'], _
    [0x0008, 'HDS_HIDDEN'], _
    [0x0004, 'HDS_HOTTRACK'], _
    [0x0002, 'HDS_BUTTONS']]
    ;
    ; [0x0000, '$HDS_HORZ']


Global Const $Style_ListBox[16][2] = _
   [[0x8000, 'LBS_COMBOBOX'], _
    [0x4000, 'LBS_NOSEL'], _
    [0x2000, 'LBS_NODATA'], _
    [0x1000, 'LBS_DISABLENOSCROLL'], _
    [0x0800, 'LBS_EXTENDEDSEL'], _
    [0x0400, 'LBS_WANTKEYBOARDINPUT'], _
    [0x0200, 'LBS_MULTICOLUMN'], _
    [0x0100, 'LBS_NOINTEGRALHEIGHT'], _
    [0x0080, 'LBS_USETABSTOPS'], _
    [0x0040, 'LBS_HASSTRINGS'], _
    [0x0020, 'LBS_OWNERDRAWVARIABLE'], _
    [0x0010, 'LBS_OWNERDRAWFIXED'], _
    [0x0008, 'LBS_MULTIPLESEL'], _
    [0x0004, 'LBS_NOREDRAW'], _
    [0x0002, 'LBS_SORT'], _
    [0x0001, 'LBS_NOTIFY']]
    ;
    ; [0xA00003, 'LBS_STANDARD'] ; i.e. (LBS_NOTIFY | LBS_SORT | WS_VSCROLL | WS_BORDER) help file correct, ListBoxConstants.au3 incorrect


Global Const $Style_ListView[17][2] = _
   [[0x8000, 'LVS_NOSORTHEADER'], _
    [0x4000, 'LVS_NOCOLUMNHEADER'], _
    [0x2000, 'LVS_NOSCROLL'], _
    [0x1000, 'LVS_OWNERDATA'], _
    [0x0800, 'LVS_ALIGNLEFT'], _
    [0x0400, 'LVS_OWNERDRAWFIXED'], _
    [0x0200, 'LVS_EDITLABELS'], _
    [0x0100, 'LVS_AUTOARRANGE'], _
    [0x0080, 'LVS_NOLABELWRAP'], _
    [0x0040, 'LVS_SHAREIMAGELISTS'], _
    [0x0020, 'LVS_SORTDESCENDING'], _
    [0x0010, 'LVS_SORTASCENDING'], _
    [0x0008, 'LVS_SHOWSELALWAYS'], _
    [0x0004, 'LVS_SINGLESEL'], _
    [0x0003, 'LVS_LIST'], _
    [0x0002, 'LVS_SMALLICON'], _
    [0x0001, 'LVS_REPORT']]
    ;
    ; [0x0000, 'LVS_ICON']
    ; [0x0000, 'LVS_ALIGNTOP']


Global Const $Style_ListViewExtended[20][2] = _
   [[0x00100000, 'LVS_EX_SIMPLESELECT'], _
    [0x00080000, 'LVS_EX_SNAPTOGRID'], _
    [0x00020000, 'LVS_EX_HIDELABELS'], _
    [0x00010000, 'LVS_EX_DOUBLEBUFFER'], _
    [0x00008000, 'LVS_EX_BORDERSELECT'], _
    [0x00004000, 'LVS_EX_LABELTIP'], _
    [0x00002000, 'LVS_EX_MULTIWORKAREAS'], _
    [0x00001000, 'LVS_EX_UNDERLINECOLD'], _
    [0x00000800, 'LVS_EX_UNDERLINEHOT'], _
    [0x00000400, 'LVS_EX_INFOTIP'], _
    [0x00000200, 'LVS_EX_REGIONAL'], _
    [0x00000100, 'LVS_EX_FLATSB'], _
    [0x00000080, 'LVS_EX_TWOCLICKACTIVATE'], _
    [0x00000040, 'LVS_EX_ONECLICKACTIVATE'], _
    [0x00000020, 'LVS_EX_FULLROWSELECT'], _
    [0x00000010, 'LVS_EX_HEADERDRAGDROP'], _
    [0x00000008, 'LVS_EX_TRACKSELECT'], _
    [0x00000004, 'LVS_EX_CHECKBOXES'], _
    [0x00000002, 'LVS_EX_SUBITEMIMAGES'], _
    [0x00000001, 'LVS_EX_GRIDLINES']]


Global Const $Style_MonthCal[8][2] = _
   [[0x0100, 'MCS_NOSELCHANGEONNAV'], _
    [0x0080, 'MCS_SHORTDAYSOFWEEK'], _
    [0x0040, 'MCS_NOTRAILINGDATES'], _
    [0x0010, 'MCS_NOTODAY'], _
    [0x0008, 'MCS_NOTODAYCIRCLE'], _
    [0x0004, 'MCS_WEEKNUMBERS'], _
    [0x0002, 'MCS_MULTISELECT'], _
    [0x0001, 'MCS_DAYSTATE']]


Global Const $Style_Pager[3][2] = _
   [[0x0004, 'PGS_DRAGNDROP'], _
    [0x0002, 'PGS_AUTOSCROLL'], _
    [0x0001, 'PGS_HORZ']]
    ;
    ; [0x0000, 'PGS_VERT']


Global Const $Style_Progress[4][2] = _
   [[0x0010, 'PBS_SMOOTHREVERSE'], _
    [0x0008, 'PBS_MARQUEE'], _
    [0x0004, 'PBS_VERTICAL'], _
    [0x0001, 'PBS_SMOOTH']]


Global Const $Style_Rebar[8][2] = _
   [[0x8000, 'RBS_DBLCLKTOGGLE'], _
    [0x4000, 'RBS_VERTICALGRIPPER'], _
    [0x2000, 'RBS_AUTOSIZE'], _
    [0x1000, 'RBS_REGISTERDROP'], _
    [0x0800, 'RBS_FIXEDORDER'], _
    [0x0400, 'RBS_BANDBORDERS'], _
    [0x0200, 'RBS_VARHEIGHT'], _
    [0x0100, 'RBS_TOOLTIPS']]


Global Const $Style_RichEdit[8][2] = _      ; will also use plenty (not all) of Edit styles
   [[0x01000000, 'ES_SELECTIONBAR'], _
    [0x00400000, 'ES_VERTICAL'], _          ; Asian-language support only (msdn)
    [0x00080000, 'ES_NOIME'], _             ; ditto
    [0x00040000, 'ES_SELFIME'], _           ; ditto
    [0x00008000, 'ES_SAVESEL'], _
    [0x00004000, 'ES_SUNKEN'], _
    [0x00002000, 'ES_DISABLENOSCROLL'], _   ; same value as 'ES_NUMBER' => issue ?
    [0x00000008, 'ES_NOOLEDRAGDROP']]       ; same value as 'ES_UPPERCASE' but RichRdit controls do not support 'ES_UPPERCASE' style (msdn)


Global Const $Style_Scrollbar[5][2] = _
   [[0x0010, 'SBS_SIZEGRIP'], _
    [0x0008, 'SBS_SIZEBOX'], _
    [0x0004, 'SBS_RIGHTALIGN or SBS_BOTTOMALIGN'], _ ; i.e. use SBS_RIGHTALIGN with SBS_VERT, use SBS_BOTTOMALIGN with SBS_HORZ (msdn)
    [0x0002, 'SBS_LEFTALIGN or SBS_TOPALIGN'], _     ; i.e. use SBS_LEFTALIGN  with SBS_VERT, use SBS_TOPALIGN    with SBS_HORZ (msdn)
    [0x0001, 'SBS_VERT']]
    ;
    ; [0x0000, 'SBS_HORZ']


Global Const $Style_Slider[13][2] = _ ; i.e. trackbar
   [[0x1000, 'TBS_TRANSPARENTBKGND'], _
    [0x0800, 'TBS_NOTIFYBEFOREMOVE'], _
    [0x0400, 'TBS_DOWNISLEFT'], _
    [0x0200, 'TBS_REVERSED'], _
    [0x0100, 'TBS_TOOLTIPS'], _
    [0x0080, 'TBS_NOTHUMB'], _
    [0x0040, 'TBS_FIXEDLENGTH'], _
    [0x0020, 'TBS_ENABLESELRANGE'], _
    [0x0010, 'TBS_NOTICKS'], _
    [0x0008, 'TBS_BOTH'], _
    [0x0004, 'TBS_LEFT or TBS_TOP'], _ ; i.e. TBS_LEFT tick marks when vertical slider, or TBS_TOP tick marks when horizontal slider
    [0x0002, 'TBS_VERT'], _
    [0x0001, 'TBS_AUTOTICKS']]
    ;
    ; [0x0000, 'TBS_RIGHT']
    ; [0x0000, 'TBS_BOTTOM']
    ; [0x0000, 'TBS_HORZ']


Global Const $Style_Static[18][2] = _
   [[0x1000, 'SS_SUNKEN'], _
    [0x0400, 'SS_RIGHTJUST'], _
    [0x0200, 'SS_CENTERIMAGE'], _
    [0x0100, 'SS_NOTIFY'], _
    [0x0080, 'SS_NOPREFIX'], _
    [0x0012, 'SS_ETCHEDFRAME'], _
    [0x0011, 'SS_ETCHEDVERT'], _
    [0x0010, 'SS_ETCHEDHORZ'], _
    [0x000C, 'SS_LEFTNOWORDWRAP'], _
    [0x000B, 'SS_SIMPLE'], _
    [0x0009, 'SS_WHITEFRAME'], _
    [0x0008, 'SS_GRAYFRAME'], _
    [0x0007, 'SS_BLACKFRAME'], _
    [0x0006, 'SS_WHITERECT'], _
    [0x0005, 'SS_GRAYRECT'], _
    [0x0004, 'SS_BLACKRECT'], _
    [0x0002, 'SS_RIGHT'], _
    [0x0001, 'SS_CENTER']]
    ;
    ; [0x0000, 'SS_LEFT']


Global Const $Style_StatusBar[2][2] = _
   [[0x0800, 'SBARS_TOOLTIPS'], _
    [0x0100, 'SBARS_SIZEGRIP']]
    ;
    ; [0x0800, 'SBT_TOOLTIPS']


Global Const $Style_Tab[17][2] = _
   [[0x8000, 'TCS_FOCUSNEVER'], _
    [0x4000, 'TCS_TOOLTIPS'], _
    [0x2000, 'TCS_OWNERDRAWFIXED'], _
    [0x1000, 'TCS_FOCUSONBUTTONDOWN'], _
    [0x0800, 'TCS_RAGGEDRIGHT'], _
    [0x0400, 'TCS_FIXEDWIDTH'], _
    [0x0200, 'TCS_MULTILINE'], _
    [0x0100, 'TCS_BUTTONS'], _
    [0x0080, 'TCS_VERTICAL'], _
    [0x0040, 'TCS_HOTTRACK'], _
    [0x0020, 'TCS_FORCELABELLEFT'], _
    [0x0010, 'TCS_FORCEICONLEFT'], _
    [0x0008, 'TCS_FLATBUTTONS'], _
    [0x0004, 'TCS_MULTISELECT'], _
    [0x0002, 'TCS_RIGHT'], _
    [0x0002, 'TCS_BOTTOM'], _
    [0x0001, 'TCS_SCROLLOPPOSITE']]
    ;
    ; [0x0000, 'TCS_TABS']
    ; [0x0000, 'TCS_SINGLELINE']
    ; [0x0000, 'TCS_RIGHTJUSTIFY']


Global Const $Style_Toolbar[8][2] = _
   [[0x8000, 'TBSTYLE_TRANSPARENT'], _
    [0x4000, 'TBSTYLE_REGISTERDROP'], _
    [0x2000, 'TBSTYLE_CUSTOMERASE'], _
    [0x1000, 'TBSTYLE_LIST'], _
    [0x0800, 'TBSTYLE_FLAT'], _
    [0x0400, 'TBSTYLE_ALTDRAG'], _
    [0x0200, 'TBSTYLE_WRAPABLE'], _
    [0x0100, 'TBSTYLE_TOOLTIPS']]


Global Const $Style_TreeView[16][2] = _
   [[0x8000, 'TVS_NOHSCROLL'], _
    [0x4000, 'TVS_NONEVENHEIGHT'], _
    [0x2000, 'TVS_NOSCROLL'], _
    [0x1000, 'TVS_FULLROWSELECT'], _
    [0x0800, 'TVS_INFOTIP'], _
    [0x0400, 'TVS_SINGLEEXPAND'], _
    [0x0200, 'TVS_TRACKSELECT'], _
    [0x0100, 'TVS_CHECKBOXES'], _
    [0x0080, 'TVS_NOTOOLTIPS'], _
    [0x0040, 'TVS_RTLREADING'], _
    [0x0020, 'TVS_SHOWSELALWAYS'], _
    [0x0010, 'TVS_DISABLEDRAGDROP'], _
    [0x0008, 'TVS_EDITLABELS'], _
    [0x0004, 'TVS_LINESATROOT'], _
    [0x0002, 'TVS_HASLINES'], _
    [0x0001, 'TVS_HASBUTTONS']]


Global Const $Style_UpDown[9][2] = _
   [[0x0100, 'UDS_HOTTRACK'], _
    [0x0080, 'UDS_NOTHOUSANDS'], _
    [0x0040, 'UDS_HORZ'], _
    [0x0020, 'UDS_ARROWKEYS'], _
    [0x0010, 'UDS_AUTOBUDDY'], _
    [0x0008, 'UDS_ALIGNLEFT'], _
    [0x0004, 'UDS_ALIGNRIGHT'], _
    [0x0002, 'UDS_SETBUDDYINT'], _
    [0x0001, 'UDS_WRAP']]

 

Please let me know if everything went correctly

Link to comment
Share on other sites

What's New in Version 0.2021.02.28
fixed: GUI styles constants by @pixelsearch.
compiled script on 3.3.15.3-beta

Files download are in the files section.

Edited by argumentum
=P

Follow the link to my code contribution ( and other things too ).
FAQ - Please Read Before Posting.
autoit_scripter_blue_userbar.png

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...