funkey Posted March 25, 2013 Share Posted March 25, 2013 I made this function 4 years ago: I know, it could be done better now. BTW: Open Watcom C - C++ Compiler has a nice Spy onboard showing all sytles and more. And it's is freeware. expandcollapse popup#include <Constants.au3> #include <WindowsConstants.au3> Global $sActiveWindow = WinGetTitle("") Global $aStyle = _WinGetStyle(WinGetHandle($sActiveWindow)) MsgBox(0, $sActiveWindow & " - Styles", _WinStyle2Text($aStyle[0])) MsgBox(0, $sActiveWindow & " - ExStyles", _WinExStyle2Text($aStyle[1])) Func _WinStyle2Text($iStyle) ; funkey Local $sReturn Local $aStyles[27][2] = [['$WS_OVERLAPPEDWINDOW', BitOR($WS_OVERLAPPED, $WS_CAPTION, $WS_SYSMENU, $WS_THICKFRAME, $WS_MINIMIZEBOX, $WS_MAXIMIZEBOX)], _ ['$WS_POPUPWINDOW' , BitOR($WS_POPUP, $WS_BORDER, $WS_SYSMENU)], _ ['$WS_POPUP' , 0x80000000], _ ['$WS_CHILD' , 0x40000000], _ ['$WS_MINIMIZE' , 0x20000000], _ ['$WS_VISIBLE' , 0x10000000], _ ['$WS_DISABLED' , 0x08000000], _ ['$WS_CLIPSIBLINGS', 0x04000000], _ ['$WS_CLIPCHILDREN', 0x02000000], _ ['$WS_MAXIMIZE' , 0x01000000], _ ['$WS_CAPTION' , 0x00C00000], _ ['$WS_BORDER' , 0x00800000], _ ['$WS_DLGFRAME' , 0x00400000], _ ['$WS_VSCROLL' , 0x00200000], _ ['$WS_HSCROLL' , 0x00100000], _ ['$WS_SYSMENU' , 0x00080000], _ ['$WS_THICKFRAME' , 0x00040000], _ ['$WS_GROUP' , 0x00020000], _ ['$WS_TABSTOP' , 0x00010000], _ ['$WS_MINIMIZEBOX' , 0x00020000], _ ['$WS_MAXIMIZEBOX' , 0x00010000]] ;~ ['$WS_TILED' , $WS_OVERLAPPED], _ ;~ ['$WS_ICONIC' , $WS_MINIMIZE], _ ;~ ['$WS_SIZEBOX' , $WS_THICKFRAME], _ ;~ ['$WS_CHILDWINDOW' , $WS_CHILD], _ ;~ ['$WS_TILEDWINDOW' , $WS_OVERLAPPEDWINDOW]] ;~ ['$WS_OVERLAPPED' , 0x00000000], _ For $i = 0 To UBound($aStyles, 1) - 1 If BitAND($iStyle, $aStyles[$i][1]) = $aStyles[$i][1] Then $sReturn &= $aStyles[$i][0] & @CRLF $iStyle = BitXOR($iStyle, $aStyles[$i][1]) EndIf Next Return $sReturn & @CRLF & 'Unknown: 0x'& Hex($iStyle, 8) EndFunc ;==>_WinStyle2Text Func _WinExStyle2Text($iExStyle) ; funkey Local $sReturn Local $aExStyles[27][2] = [['$WS_EX_OVERLAPPEDWINDOW', BitOR($WS_EX_WINDOWEDGE,$WS_EX_CLIENTEDGE)], _ ['$WS_EX_PALETTEWINDOW' , BitOR($WS_EX_WINDOWEDGE, $WS_EX_TOOLWINDOW, $WS_EX_TOPMOST)], _ ['$WS_EX_DLGMODALFRAME' , 0x00000001], _ ['$WS_EX_DRAGDETECT' , 0x00000002], _ ['$WS_EX_NOPARENTNOTIFY' , 0x00000004], _ ['$WS_EX_TOPMOST' , 0x00000008], _ ['$WS_EX_ACCEPTFILES' , 0x00000010], _ ['$WS_EX_TRANSPARENT' , 0x00000020], _ ['$WS_EX_MDICHILD' , 0x00000040], _ ['$WS_EX_TOOLWINDOW' , 0x00000080], _ ['$WS_EX_WINDOWEDGE' , 0x00000100], _ ['$WS_EX_CLIENTEDGE' , 0x00000200], _ ['$WS_EX_CONTEXTHELP' , 0x00000400], _ ['$WS_EX_RIGHT' , 0x00001000], _ ['$WS_EX_LEFT' , 0x00000000], _ ['$WS_EX_RTLREADING' , 0x00002000], _ ['$WS_EX_LTRREADING' , 0x00000000], _ ['$WS_EX_LEFTSCROLLBAR' , 0x00004000], _ ['$WS_EX_RIGHTSCROLLBAR' , 0x00000000], _ ['$WS_EX_CONTROLPARENT' , 0x00010000], _ ['$WS_EX_STATICEDGE' , 0x00020000], _ ['$WS_EX_APPWINDOW' , 0x00040000], _ ['$WS_EX_LAYERED' , 0x00080000], _ ['$WS_EX_NOINHERITLAYOUT', 0x00100000], _ ['$WS_EX_LAYOUTRTL' , 0x00400000], _ ['$WS_EX_COMPOSITED' , 0x02000000], _ ['$WS_EX_NOACTIVATE' , 0x08000000]] For $i = 0 To UBound($aExStyles, 1) - 1 If BitAND($iExStyle, $aExStyles[$i][1]) = $aExStyles[$i][1] Then $sReturn &= $aExStyles[$i][0] & @CRLF $iExStyle = BitXOR($iExStyle, $aExStyles[$i][1]) EndIf Next Return $sReturn & @CRLF & 'Unknown: 0x'& Hex($iExStyle, 8) EndFunc ;==>_WinExStyle2Text Func _WinGetStyle($WinTitle, $WinText = "") ; modified by funkey Local $RetValue[2], $Temp, $h_window $h_window = $WinTitle If Not IsHWnd($h_window) Then $h_window = WinGetHandle($WinTitle, $WinText) If @error Then Return SetError(1, 0, "") EndIf ; read Windowstyle $Temp = DllCall("user32.dll", "long", "GetWindowLong", "hwnd", $h_window, "long", $GWL_STYLE) If @error Then SetError(2, 0, "") $RetValue[0] = '0x' & StringFormat('%008s', Hex($Temp[0])) ; read extended Windowstyle $Temp = DllCall("user32.dll", "long", "GetWindowLong", "hwnd", $h_window, "long", $GWL_EXSTYLE) If @error Then SetError(3, 0, "") $RetValue[1] = '0x' & StringFormat('%008s', Hex($Temp[0])) Return $RetValue EndFunc ;==>_WinGetStyle Programming today is a race between software engineers striving tobuild bigger and better idiot-proof programs, and the Universetrying to produce bigger and better idiots.So far, the Universe is winning. Link to comment Share on other sites More sharing options...
Sven Posted March 31, 2013 Author Share Posted March 31, 2013 Looks like I have to learn BitAnd & BitOr for real this time, something I tried to avoid whenever possible. Thanks everybody for your help, it's greatly appreciated. Happy Easter! Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now