Opened 2 years ago

Last modified 2 years ago

#3870 closed Bug

[Bug in Regexptitle & regexpclass] — at Version 3

Reported by: anonymous Owned by:
Milestone: Component: AutoIt
Version: 3.3.16.0 Severity: None
Keywords: Cc:

Description (last modified by mLipok)

in version v3.3.15.4(beta):->the script work fine
but,in version v3.3.16.0 -> script not work
below script:

#include <WinAPIGdi.au3>
#include <WinAPIIcons.au3>
#include <WinAPIRes.au3>
#include <WinAPISys.au3>
#include <WinAPISysWin.au3>
#include <WindowsConstants.au3>
#include <array.au3>
Global $g_bExit = False

_Example()
Func _Example()
    Local Const $sClass = 'WindowsForms10.Window.8.app.0.21373f6_r14_ad1'
    Local Const $sName = 'NCRE服务器设置'

    ; Get module handle for the current process
    Local $hInstance = _WinAPI_GetModuleHandle(0)

    ; Create a class cursor
    Local $hCursor = _WinAPI_LoadCursor(0, 32512) ; IDC_ARROW

    ; Create a class icons (large and small)
    Local $tIcons = DllStructCreate('ptr;ptr')
    _WinAPI_ExtractIconEx(@SystemDir & '\shell32.dll', 130, DllStructGetPtr($tIcons, 1), DllStructGetPtr($tIcons, 2), 1)
    Local $hIcon = DllStructGetData($tIcons, 1)
    Local $hIconSm = DllStructGetData($tIcons, 2)

    ; Create DLL callback function (window procedure)
    Local $hProc = DllCallbackRegister('_WndProc', 'lresult', 'hwnd;uint;wparam;lparam')

    ; Create and fill $tagWNDCLASSEX structure
    Local $tWCEX = DllStructCreate($tagWNDCLASSEX & ';wchar szClassName[' & (StringLen($sClass) + 1) & ']')
    DllStructSetData($tWCEX, 'Size', DllStructGetPtr($tWCEX, 'szClassName') - DllStructGetPtr($tWCEX))
    DllStructSetData($tWCEX, 'Style', 0)
    DllStructSetData($tWCEX, 'hWndProc', DllCallbackGetPtr($hProc))
    DllStructSetData($tWCEX, 'ClsExtra', 0)
    DllStructSetData($tWCEX, 'WndExtra', 0)
    DllStructSetData($tWCEX, 'hInstance', $hInstance)
    DllStructSetData($tWCEX, 'hIcon', $hIcon)
    DllStructSetData($tWCEX, 'hCursor', $hCursor)
    DllStructSetData($tWCEX, 'hBackground', _WinAPI_CreateSolidBrush(_WinAPI_GetSysColor($COLOR_3DFACE)))
    DllStructSetData($tWCEX, 'MenuName', 0)
    DllStructSetData($tWCEX, 'ClassName', DllStructGetPtr($tWCEX, 'szClassName'))
    DllStructSetData($tWCEX, 'hIconSm', $hIconSm)
    DllStructSetData($tWCEX, 'szClassName', $sClass)

    ; Register a window class
    _WinAPI_RegisterClassEx($tWCEX)

    ; Create a window
    _WinAPI_CreateWindowEx(0, $sClass, $sName, BitOR($WS_CAPTION, $WS_POPUPWINDOW, $WS_VISIBLE), (@DesktopWidth - 400) / 2, (@DesktopHeight - 400) / 2, 400, 400, 0)
    _ArrayDisplay(WinList("[TITLE:NCRE服务器设置]")) ; 1 window
    _ArrayDisplay(WinList("[REGEXPTITLE:NCRE服务器设置]")) ; 0 window, why ?
    _ArrayDisplay(WinList("[REGEXPTITLE:服务器设置]")) ; 1 window
    _ArrayDisplay(WinList("[REGEXPTITLE:NCRE]")) ; 0 windows, why ?


    _ArrayDisplay(WinList("[CLASS:WindowsForms10.Window.8.app.0.21373f6_r14_ad1]"))    ; 1 window
    _ArrayDisplay(WinList("[REGEXPCLASS:WindowsForms10.Window.8.app.0.21373f6_r14_ad1]")) ; 0 window, why ?
    _ArrayDisplay(WinList("[REGEXPCLASS:WindowsForms10]")) ; 0 window, why ?
    While 1
        Sleep(100)
        If $g_bExit Then
            ExitLoop
        EndIf
    WEnd

    ; Unregister window class and release unnecessary resources
    _WinAPI_UnregisterClass($sClass, $hInstance)
    _WinAPI_DestroyCursor($hCursor)
    _WinAPI_DestroyIcon($hIcon)
    _WinAPI_DestroyIcon($hIconSm)

    DllCallbackFree($hProc)

EndFunc   ;==>_Example

; Func _WinAPI_DefWindowProcW($hWnd, $iMsg, $wParam, $lParam)
; Local $aRet = DllCall('user32.dll', 'lresult', 'DefWindowProcW', 'hwnd', $hWnd, 'uint', $iMsg, 'wparam', $wParam, 'lparam', $lParam)

; If @error Then
; Return SetError(1, 0, 0)
; EndIf
; Return $aRet[0]
; EndFunc   ;==>_WinAPI_DefWindowProcW

Func _WndProc($hWnd, $iMsg, $wParam, $lParam)
    Switch $iMsg
        Case $WM_CLOSE
            $g_bExit = True
    EndSwitch
    Return _WinAPI_DefWindowProcW($hWnd, $iMsg, $wParam, $lParam)
EndFunc   ;==>_WndProc

Change History (3)

comment:1 Changed 2 years ago by Jpm

For me
the script works the same for 3.3.14.5, 3.3.15.4, 3.3.15.5, 3.3.16.0

Last edited 2 years ago by Jpm (previous) (diff)

comment:3 Changed 2 years ago by mLipok

  • Description modified (diff)
Note: See TracTickets for help on using tickets.