Jump to content

Problems with WinGetHandle() and GUIGetStyle()


KemyKo
 Share

Recommended Posts

I want to create a program that resizes and changes style/exstyles of other windows. ^_^

The problem is that i don`t know why my script doesn`t work.:sweating:

Here is an example:

#RequireAdmin
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Global $setStyle, $getStyle, $outputString='', $getHandle, $setState

$getHandle = WinGetHandle("[CLASS:Notepad]")
$outputString &= $getHandle & @LF

$setState = GUISetState(@SW_SHOWNORMAL, $getHandle)
$outputString &= $setState & @LF

$getStyle = GUIGetStyle($getHandle)
If IsArray($getStyle) = 1 Then
    $outputString &= $getStyle[0]& ' ' &$getStyle[1]& @LF
Else
    $outputString &= "NOTHING" & @LF
EndIf

$setStyle = GUISetStyle($WS_POPUPWINDOW, -1, $getHandle)
$outputString &= $setStyle & @LF

MsgBox(0,"OUTPUT", $outputString)

It doesn`t work... At least not for me :blink:

I noticed that $getHandle is "0x0021023A" and AutoIt Window Info shows : "0x000000000021023A"

I don`t know if that`s a problem :(. If it is, idk how to fix it :sweating:

Link to comment
Share on other sites

#include <GUIConstants.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>



Global $hNotepad = WinGetHandle("[Class:Notepad]")
If (@error) Then Exit ConsoleWrite("Failed to get Notepad handle" & @LF)

Global $iStyle = _WinAPI_GetWindowLong($hNotepad, $GWL_STYLE)

ConsoleWrite("Current Style List: " & StyleVariablesFromStyle($iStyle) & @LF)

$iStyle = BitXOR($iStyle, $WS_SIZEBOX, $WS_MINIMIZEBOX, $WS_MAXIMIZEBOX)

ConsoleWrite("New Style List: " & StyleVariablesFromStyle($iStyle) & @LF)

_WinAPI_SetWindowLong($hNotepad, $GWL_STYLE, $iStyle)

Func StyleVariablesFromStyle(Const $iStyles)
    Local Static $aStyles[][] = [["$WS_BORDER", 0x00800000], _
            ["$WS_POPUP", 0x80000000], _
            ["$WS_CAPTION", 0x00C00000], _
            ["$WS_CLIPCHILDREN", 0x02000000], _
            ["$WS_CLIPSIBLINGS", 0x04000000], _
            ["$WS_DISABLED", 0x08000000], _
            ["$WS_DLGFRAME", 0x00400000], _
            ["$WS_HSCROLL", 0x00100000], _
            ["$WS_MAXIMIZE", 0x01000000], _
            ["$WS_MAXIMIZEBOX", 0x00010000], _
            ["$WS_MINIMIZE", 0x20000000], _
            ["$WS_MINIMIZEBOX", 0x00020000], _
            ["$WS_OVERLAPPED", 0x00000000], _
            ["$WS_OVERLAPPEDWINDOW", 0x00CF0000], _
            ["$WS_POPUPWINDOW", 0x80880000], _
            ["$WS_SIZEBOX", 0x00040000], _
            ["$WS_SYSMENU", 0x00080000], _
            ["$WS_THICKFRAME", 0x00040000], _
            ["$WS_VSCROLL", 0x00200000], _
            ["$WS_VISIBLE", 0x10000000], _
            ["$WS_CHILD", 0x40000000], _
            ["$WS_GROUP", 0x00020000], _
            ["$WS_TABSTOP", 0x00010000], _
            ["$DS_MODALFRAME", 0x00000080], _
            ["$DS_SETFOREGROUND", 0x00000200], _
            ["$DS_CONTEXTHELP", 0x00002000]]
    Local $sStyles = ""
    For $i = 0 To UBound($aStyles) - 1
        If (BitAND($iStyles, $aStyles[$i][1]) = $aStyles[$i][1]) Then $sStyles &= $aStyles[$i][0] & ", "
    Next
    Return StringTrimRight($sStyles, 2)
EndFunc   ;==>StyleVariablesFromStyle

 

Link to comment
Share on other sites

6 minutes ago, InunoTaishou said:
#include <GUIConstants.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>



Global $hNotepad = WinGetHandle("[Class:Notepad]")
If (@error) Then Exit ConsoleWrite("Failed to get Notepad handle" & @LF)

Global $iStyle = _WinAPI_GetWindowLong($hNotepad, $GWL_STYLE)

ConsoleWrite("Current Style List: " & StyleVariablesFromStyle($iStyle) & @LF)

$iStyle = BitXOR($iStyle, $WS_SIZEBOX, $WS_MINIMIZEBOX, $WS_MAXIMIZEBOX)

ConsoleWrite("New Style List: " & StyleVariablesFromStyle($iStyle) & @LF)

_WinAPI_SetWindowLong($hNotepad, $GWL_STYLE, $iStyle)

Func StyleVariablesFromStyle(Const $iStyles)
    Local Static $aStyles[][] = [["$WS_BORDER", 0x00800000], _
            ["$WS_POPUP", 0x80000000], _
            ["$WS_CAPTION", 0x00C00000], _
            ["$WS_CLIPCHILDREN", 0x02000000], _
            ["$WS_CLIPSIBLINGS", 0x04000000], _
            ["$WS_DISABLED", 0x08000000], _
            ["$WS_DLGFRAME", 0x00400000], _
            ["$WS_HSCROLL", 0x00100000], _
            ["$WS_MAXIMIZE", 0x01000000], _
            ["$WS_MAXIMIZEBOX", 0x00010000], _
            ["$WS_MINIMIZE", 0x20000000], _
            ["$WS_MINIMIZEBOX", 0x00020000], _
            ["$WS_OVERLAPPED", 0x00000000], _
            ["$WS_OVERLAPPEDWINDOW", 0x00CF0000], _
            ["$WS_POPUPWINDOW", 0x80880000], _
            ["$WS_SIZEBOX", 0x00040000], _
            ["$WS_SYSMENU", 0x00080000], _
            ["$WS_THICKFRAME", 0x00040000], _
            ["$WS_VSCROLL", 0x00200000], _
            ["$WS_VISIBLE", 0x10000000], _
            ["$WS_CHILD", 0x40000000], _
            ["$WS_GROUP", 0x00020000], _
            ["$WS_TABSTOP", 0x00010000], _
            ["$DS_MODALFRAME", 0x00000080], _
            ["$DS_SETFOREGROUND", 0x00000200], _
            ["$DS_CONTEXTHELP", 0x00002000]]
    Local $sStyles = ""
    For $i = 0 To UBound($aStyles) - 1
        If (BitAND($iStyles, $aStyles[$i][1]) = $aStyles[$i][1]) Then $sStyles &= $aStyles[$i][0] & ", "
    Next
    Return StringTrimRight($sStyles, 2)
EndFunc   ;==>StyleVariablesFromStyle

 

Thx a lot. This solved my problem :D

Edited by KemyKo
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

×
×
  • Create New...