3 posts in this topic
We are trying to automate the installation testing before sending to end users, our product.
For Silent Installation, we have completed this part.
But for GUI, the default installation is completed by sending the keys based on the window.
But for GUI custom installation, we are struck.
How to enable or disable features in the below screen using GUI automation.?
When I set the busy cursor on the main gui, it returns to a normal cursor when hovering over any of the controls on the gui window. This behavior happens regardless of whether I set the 'override' parameter to 1 or to 0.
Here is my test code:
#AutoIt3Wrapper_UseUpx=n #AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 #AutoIt3Wrapper_UseX64=N Opt("GUICloseOnESC", 1) ; ESC closes GUI? (0 = no, 1 = yes) Opt("GUIOnEventMode", 1) ; Change to OnEvent mode Opt('MustDeclareVars', 1) OnAutoItExitRegister("Event_GUIClose") #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> Global $hMainWin, $statusID, $cnt = 0 _Main() Func _Main() Local $msg $hMainWin = GUICreate("cursor test", 250, 200, -1, -1) GUICtrlCreateListView("ABCdef", 10, 10, 100, 100) GUICtrlCreateButton("override = 1", 130, 10, 100, 25) GUICtrlSetOnEvent(-1, "handle_SetCur_1_btn") GUICtrlCreateButton("override = 0", 130, 50, 100, 25) GUICtrlSetOnEvent(-1, "handle_SetCur_0_btn") $statusID = GUICtrlCreateLabel("", 10, 120, 200, 20) GUICtrlSetBkColor(-1, 0xFFFF00) GUISetOnEvent($GUI_EVENT_CLOSE, 'Event_GUIClose') GUISetState() ; Make everything visible While (1) $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE Exit EndSelect Sleep(125) WEnd EndFunc ;==>_Main Func Event_GUIClose() Exit EndFunc ;==>Event_GUIClose Func handle_SetCur_1_btn() If (Mod($cnt, 2)) Then setIT(15, 1) Else setIT(2, 1) EndIf $cnt += 1 EndFunc ;==>handle_SetCur_1_btn Func handle_SetCur_0_btn() If (Mod($cnt, 2)) Then setIT(15, 0) Else setIT(2, 0) EndIf $cnt += 1 EndFunc ;==>handle_SetCur_0_btn Func setIT($cursorID, $override) Local $str GUISetCursor($cursorID, $override, $hMainWin) $str = "Set " & (($cursorID = 2) ? " normal" : " busy") & " cursor." $str &= " (override = " & $override & ")" ConsoleWrite("+++: " & $str & @CRLF) GUICtrlSetData($statusID, $str) EndFunc ;==>setIT
I have a GUI with a parent window that has a menu and shortcut buttons at the top, and a child window which displays a list which is scrolled vertically.
When the list is relatively small, like no more than 100 or so lines then it scrolls fine. As the list gets larger, scrolling begins to slow, and if you start mixing up the scroll method (mousewheel, left-clicking the scrollbar box, etc) then it begins to hang. When it hangs, dwm.exe CPU usage maxes out, and I can't even switch to another window. Each line in the list is 1000px wide X 30px tall, and the lines alternate between a gray background and a white background, in case that matters.
When a non-Aero theme is active, everything works fine. So, I could disable DWM every time someone fires it up, but changing a client's color scheme is not ideal.
I tried to utilize _WinAPI_DwmSetWindowAttribute($oGui_Parent, $DWMWA_NCRENDERING_POLICY, $DWMNCRP_DISABLED), and although it succeeds in disabling DWM for that window, it doesn't seem to make any difference as far as the scrolling lag is concerned.
The code is several thousand lines long and contains proprietary information, so I'm trying to avoid posting that, but these are the lines which are creating the GUIs. Is there anything that anyone can think of off the top of their heads, or is there anything jumping out at you from this snippet of code? Any help is appreciated!
$oGui_Parent = GUICreate("Data Viewer", 700, 500, Default, Default, BitOR($WS_CAPTION, $WS_MINIMIZEBOX, $WS_POPUPWINDOW)) WinSetTrans($oGui_Parent, "", 255) _WinAPI_DwmSetWindowAttribute($oGui_Parent, $DWMWA_NCRENDERING_POLICY, $DWMNCRP_DISABLED) GUISetFont(9, 500, 0, "Calibri") GUISetBkColor(0xFFFFFF) $oGui_Child = GUICreate("", 700, 400, 0, 100, $WS_POPUP, $WS_EX_MDICHILD, $oGui_Parent) WinSetTrans($oGui_Child, "", 255) _WinAPI_DwmSetWindowAttribute($oGui_Child, $DWMWA_NCRENDERING_POLICY, $DWMNCRP_DISABLED) GUISetFont(9, 500, 0, "Calibri") GUISetBkColor(0xFFFFFF)
I would like to create a window like the one shown below. The requirements are as below
1. The title bar should be opaque.
2. The parent window/Main screen will be below the side menu/child window
3. The left side of the side menu window should be opaque.
4. The right side should be semi-transparent.
Any idea to help?
I am having a little trouble with ‘GUICtrlSetResizing’ an hoping someone could push me in the direction of best practice.
I have a basic GUI created to a set size with the enabled abilities to resize it:
GUICreate("Test", 500, 450, -1, -1, BitOR($WS_SIZEBOX, $WS_MAXIMIZEBOX, $WS_MINIMIZEBOX))
Inside this I have an image and label:
GUICtrlCreateLabel($Image1StampInfo, 10, 395, 480, 20, $SS_CENTER) GUICtrlCreatePic($TheImage, 25, 25, 450, 350)
Case ($GUI_EVENT_MAXIMIZE or $GUI_EVENT_RESTORE or $GUI_EVENT_RESIZED)
GUICtrlSetResizing($TheImageBox, $GUI_DOCKAUTO) GUICtrlSetResizing($Image1Stamp, $GUI_DOCKAUTO)
This works fine with the image but not with the label – the label after a bit of resizing seems to get stuck in different places in the GUI as if the $GUI_DOCKAUTO has not worked properly.
So 2 questions if I may.
1) Have I used $GUI_DOCKAUTO incorrectly for use with lables?
2) I am happy to manually set new sizes dynamically but how? I can get the size of the window with ‘WinGetPos()’ but how do I set new size parameters for the ‘label’ and ‘image’?
Thank you in advance.