Phaser Posted March 5, 2023 Posted March 5, 2023 (edited) Hi Guys Long time since I have needed to ask for any help, great! I have a script I use to read a big file it has many elements, first I open the script, it reads the file and creates a dropdown list all fine on my old laptop and all fine on this new one with win 11, I select the title from this dropdown/list and hit go to get my result, it all works fine. On my old laptop I made another tool to select each item, hit go, wait for the result then select the next list title and hit go, wait for result, rinse and repeat as I wanted certain elements to be written to a file so I could peruse later, I used pixelchecksum to monitor an area and continue when change happens. Func goforit() Do If $i = 0 Then; just click start MouseMove(1400,68,10) Sleep(1000) MouseClick("left", 1400,68) Sleep(100) MouseMove(1400,105,10) EndIf $iCheckSum = PixelChecksum(1265, 118, 1300, 129) While $iCheckSum = PixelChecksum(1265, 118, 1300, 129);wait for change Sleep(100) WEnd MouseClick("left", 1125,66; select title box Sleep(100) Send("{DOWN}") Sleep(100) MouseClick("left", 1400,68); click start Sleep(100) $i = $i+1 Until $i = GUICtrlRead($titles)-1 ;self close MouseMove(1010,470,10) Sleep(100) MouseClick("left", 1012,470) EndFunc The tool clicks Go then waits ....... and waits, I see the change but it doesn't, any idea why? Thanks in advance as always. Sorry Mods, please move thread Edited March 5, 2023 by Phaser wrong forum category, sorry guys
Developers Jos Posted March 5, 2023 Developers Posted March 5, 2023 Moved to the appropriate AutoIt General Help and Support forum, as the Developer General Discussion forum very clearly states: Quote General development and scripting discussions. Do not create AutoIt-related topics here, use the AutoIt General Help and Support or AutoIt Technical Discussion forums. Moderation Team SciTE4AutoIt3 Full installer Download page - Beta files Read before posting How to post scriptsource Forum etiquette Forum Rules Live for the present, Dream of the future, Learn from the past.
Phaser Posted March 5, 2023 Author Posted March 5, 2023 Sorry Jos, just edited it after seeing my mistake
Nisteo Posted March 5, 2023 Posted March 5, 2023 59 minutes ago, Phaser said: any idea why? New laptop has different screen resolution?
Phaser Posted March 5, 2023 Author Posted March 5, 2023 Yeah did think that, however I use the window info tool, mouse click x&y are the same so are the pixelchecksum coordinates as the tool moves to the Go button and wait position, I am using the x64 tool should I use the x86 for checksum?
ioa747 Posted March 5, 2023 Posted March 5, 2023 run and move the mouse to the upper left corner to trigger the Pixel section to see if it works $iCheckSum = PixelChecksum(0, 0, 100, 100) While $iCheckSum = PixelChecksum(0, 0, 100, 100) ;wait for change Sleep(100) WEnd ConsoleWrite("$iCheckSum=" & $iCheckSum & @CRLF) I know that I know nothing
mistersquirrle Posted March 5, 2023 Posted March 5, 2023 Something that may change how it works or where it's searching is Windows Display Scaling, is your display scaling set to 100%, or something more (which could throw things off)? Check out the support page on it: https://support.microsoft.com/en-us/windows/view-display-settings-in-windows-37f0e05e-98a9-474c-317a-e85422daa8bb Otherwise, I'd recommend adding some logging and doing some tests like @ioa747 has set up. Test in 100x100 blocks or larger like that, and make sure that you're able to search/check across the whole screen, or if it starts jumping (because of scaling) or certain areas are unavailable (possibly some type of UAC/permissions level issue). Here's a basically automatic test I made (partially on accident): expandcollapse popup#include <WinAPI.au3> #include <WinAPIGdiDC.au3> #include <WinAPIGdi.au3> #include <WinAPIHObj.au3> #include <WindowsConstants.au3> #include <WinAPISysWin.au3> Global $iChecksum = PixelChecksum(0, 0, 100, 100) __cLog('Starting checksum = ' & $iChecksum) Global $iNewChecksum For $iY = 0 To @DesktopHeight Step 100 For $iX = 0 To @DesktopWidth Step 100 __cLog('Searching new location: ' & $iX & ', ' & $iY & ' --> ' & $iX + 100 & ', ' & $iY + 100) $iChecksum = PixelChecksum($iX, $iY, $iX + 100, $iY + 100) __cLog('New location checksum = ' & $iChecksum) Do ;~ _WinAPI_DrawRect($iX - 3, $iY - 3, $iX + 103, $iY + 103, 0x0000FF) ; This should allow mostly for manual testing _WinAPI_DrawRect($iX, $iY, $iX + 100, $iY + 100, 0x0000FF) ; This will trigger and automated test, since it'll change the checksum $iNewChecksum = PixelChecksum($iX, $iY, $iX + 100, $iY + 100) ; Search for change If $iNewChecksum = 0 Then __cLog('Error with PixelChecksum') EndIf Until $iChecksum <> $iNewChecksum Or Not _Sleep(15) __cLog(' Checksum changed = ' & $iNewChecksum) Next Next Func __cLog($sMsg) Local Static $sPrevMsg ; Used to prevent spamming the same message If $sMsg == $sPrevMsg Then Return False EndIf ConsoleWrite($sMsg & @CRLF) $sPrevMsg = $sMsg Return True EndFunc ;==>__cLog Func _Sleep($iMs) Return True EndFunc ;==>_Sleep Func _WinAPI_DrawRect($start_x, $start_y, $iWidth, $iHeight, $iColor) Local $hDC = _WinAPI_GetWindowDC(0) ; DC of entire screen (desktop) Local $tRect = DllStructCreate($tagRECT) DllStructSetData($tRect, 1, $start_x) DllStructSetData($tRect, 2, $start_y) DllStructSetData($tRect, 3, $iWidth) DllStructSetData($tRect, 4, $iHeight) Local $hBrush = _WinAPI_CreateSolidBrush($iColor) _WinAPI_FrameRect($hDC, DllStructGetPtr($tRect), $hBrush) ; clear resources _WinAPI_DeleteObject($hBrush) _WinAPI_ReleaseDC(0, $hDC) EndFunc ;==>_WinAPI_DrawRect We ought not to misbehave, but we should look as though we could.
Phaser Posted March 6, 2023 Author Posted March 6, 2023 Thanks guys, I setup a _ScreenCapture_Capture() to see where it was looking and then set the scaling to 100% all is fine now, although, I have a write to file line that does work but I have to close and then re-open the txt file to see the entries, old laptop I could just click off then back on to the editor window and it would show the lines written so far, so as you can guess I was thinking it wasn't writing for some time. Not a big issue. Thanks again.
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