Jump to content
Sign in to follow this  
DeathRow

PixelSearch for masked or HIDDEN windows ? Possible ?

Recommended Posts

DeathRow

How can I search for a certain color in a background or masked window by other windows( no minimized ), and get the color's relative window's coordinates ;) ??

Is it possible ? I appreciate any help....

Edited by DeathRow

Share this post


Link to post
Share on other sites
DeathRow

It is better to simply look at the controls of the application.

You better didn't answer...

I don't want to click anything ! I want to know the position of a certain image while the window is masked by other windows or minimized.

Thanks for your high quality post

Share this post


Link to post
Share on other sites
somdcomputerguy

PixelSearch will not work on a program that is minimized or not visible.


- Bruce /*somdcomputerguy */  If you change the way you look at things, the things you look at change.

Share this post


Link to post
Share on other sites
DeathRow

PixelSearch will not work on a program that is minimized or not visible.

Yes,I observed, and even if is masked by other window it won't work.Pretty bad ;)

But is there any UDF for AutoIt that could do this ?

Or the API from MSDN ? I don't know how to search there...

Share this post


Link to post
Share on other sites
DeathRow

No, its a simple static window.

I can make the window to show up and make it transparent, so I could use that thing....to capture a bitmap of the window, and to search there for the specific pixel,no ?

Finded relating threads but I don't know how it works ;)

http://autoitscript.com/forum/topic/63318-get-or-read-pixel-from-memory-udf-pixelgetcolor-au3/

Share this post


Link to post
Share on other sites
Bert

If it is a simple static window then are there controls on the window? Second, is it a standard window or a custom type such as a java window?

what happens when you use the AutoIt Window info tool on the window in question?

Edited by Bellicus

Share this post


Link to post
Share on other sites
DeathRow

Well I need to find certain colors in an image and to get the coordinates of them. I don't need any controls or buttons... and is a standard image.

And when I use AWindow Tool its finding the color

Thankyou for replies ... and I was looking towards the method of capturing a bitmap of the window in memory and to search invisible on that bitmap the position of the pixel I want to find = > finding the pixel on a hidden window ;)

Edited by DeathRow

Share this post


Link to post
Share on other sites
Bert

Your not making sense. You say "I need to find certain colors in an image and to get the coordinates of them" and say at the same time it is a static window. If it is static then why do you need to search for certain colors? Static means the image doesn't change. You imply the image changes. Does the image change? Either way would you care to share a screenshot of the image you are dealing with? That would make it much easier to see what we are dealing with.

Share this post


Link to post
Share on other sites
DeathRow

Your not making sense. You say "I need to find certain colors in an image and to get the coordinates of them" and say at the same time it is a static window. If it is static then why do you need to search for certain colors? Static means the image doesn't change. You imply the image changes. Does the image change? Either way would you care to share a screenshot of the image you are dealing with? That would make it much easier to see what we are dealing with.

O sorry I didn't know the real difference ;) Its a webbrowser window and I want to download many photos while hidden to not interference with my usual activity like playing a game. But the images aren't moving, the browser's window is sometimes increasing or decreasing in dimention. So everytime I need to ckeck for a certain color and get the coordinates while hidden or minimized

Edited by DeathRow

Share this post


Link to post
Share on other sites
Bert

That makes more sense. There is a different approach that would work much better for you seeing how you are downloading pictires. If you look at IE.au3 you can get all the pictures using

_IEImgGetCollection

look in the help file and you can see an example of how to get a collection. It would be a simple matter of downloading the images once you get the collection. That way you don't need to worry about the IE window interfering with anything else you are doing.

Share this post


Link to post
Share on other sites
DeathRow

That makes more sense. There is a different approach that would work much better for you seeing how you are downloading pictires. If you look at IE.au3 you can get all the pictures using

_IEImgGetCollection

look in the help file and you can see an example of how to get a collection. It would be a simple matter of downloading the images once you get the collection. That way you don't need to worry about the IE window interfering with anything else you are doing.

I forgot to mention that I can't use IE or Google Chrome and can't install that plug-in for FireFox to work with the UDF because of good reasons ;) ( long story....but trust me I can't )

I can use only Firefox lol, so I need to adapt for it ...

Share this post


Link to post
Share on other sites
DeathRow

Why can't you use IE? It is built into windows. Does your location or who owns the machine block you?

Unfortunetly...yes..;)( Thats why I cant use it

But please I don't want to deviate from the subject, How can I search for a specific pixel color in a background hidden window ??

Share this post


Link to post
Share on other sites
DeathRow

Then we can't help you for we will not be a part of you trying to evade or bypass security. Either use it for legit reasons with the owner's blessing or don't do it at all. Your choice.

What do you mean by bypass security ? What security ??

You didn't understand what Im asking for, I want to know how can I find a pixel color in a background window, the same subject was posted in other threads too but I don't know how to apply it, I appreciate if anyone could help me.

Share this post


Link to post
Share on other sites
MrMitchell

You didn't understand what Im asking for, I want to know how can I find a pixel color in a background window, the same subject was posted in other threads too but I don't know how to apply it, I appreciate if anyone could help me.

Manadar's (and Greenseed's) example.au3 and _PixelGetColor.au3 provide working example of how to basically take a screenshot to memory then pixelsearch it. You've previously linked to it, here it is again. After reading about it then running it, seems to work fine for me. You need to temporarily bring up the window to search so you can get a screenshot, then hide the window, then you can search the screenshot later on in your script. For me I brought Firefox to the foreground-maximized, took the "screenshot", then hid the Firefox window again. I then searched the 10x10 pixel box in the top left corner (starting at 0,0) for the color 0xDCCEBF and found it at several locations: 0,3; 1,3; and 2,3.

Edited by MrMitchell

Share this post


Link to post
Share on other sites
Bert

What do you mean by bypass security ? What security ??

You didn't understand what Im asking for, I want to know how can I find a pixel color in a background window, the same subject was posted in other threads too but I don't know how to apply it, I appreciate if anyone could help me.

You said yes to this question: "Does your location or who owns the machine block you?"

That means you are trying to get past a security measure.

Understand now?

Share this post


Link to post
Share on other sites
DeathRow

You said yes to this question: "Does your location or who owns the machine block you?"

That means you are trying to get past a security measure.

Understand now?

Yes I said that, and its true, but you understand me wrong, its my computer and my parents blocked my computer with limited user account( they are paranoid ) and they say to not use IE and uninstalled it ;) and with limited access I cant install it :) so I really need to do it on the default browser ff

Edited by DeathRow

Share this post


Link to post
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
Sign in to follow this  

  • Similar Content

    • rcmaehl
      By rcmaehl
      A UDF with Extended Functions for Window Management
       
      Notes:
      Fixes WinGetClassList's barbaric returning of a @LF separated string instead of an array.
       
      Potential Uses:
      Automating applications that change their controls' handles/classes on each launch (e.g. half of Cisco's programs)
       
      Functions:
      _WinGetClassList
      _WinGetClassNNList
      _WindowGetHandleList
      _WindowGetHandleListFromPos
       
      Download: 
      WindowEx.zip  (v0.4)
       
      Changelog:
      10/04/2016 (v0.4): _WinGetClassNNList Fixed : Not Returning an Index when using $2D_ARRAY _WinGetClassNNList Fixed : Not Properly returning $aArray[x][1] on Classes with instances > 9 when using $2D_ARRAY 10/03/2016 (v0.3): _WinGetClassList Added : Exactly the same as WinGetClassList but returns a more civilized Array _WinGetClassNNList Added : Returns Classes and their instances in either a 1D or 2D array depending on Flags _WindowGetHandleList Renamed: _WinGetHandleList SCRIPT BREAKING! _WindowGetHandleListFromPos Renamed: _WinGetHandleListFromPos SCRIPT BREAKING! 10/01/2016 (v0.2): WindowsExConstants.au3 Added : Flags in _WindowGetHandleListFromPos _WindowGetHandleListFromPos Removed: ConsoleWrite left in during debug _WindowGetHandleListFromPos Added : Flag for if part of a Control is at $X, $Y return it as well. 10/01/2016 (v0.1): _WindowGetHandleList Added : Retrieves the handles of classes from a window. _WindowGetHandleListFromPos Added : Retrieves the handles of classes at a specific position from a window. Known and Reported Bugs:
      None reported To Do:
      To Be Decided. Opinions welcome! Upcoming Changes:
      To Be Decided.
    • b9k
      By b9k
      Hi, I am stuck on a GUI problem and would like your help to solve it.
      I am trying to automate the SoundWire Server app to match my current system volume level while it is minimized to the notification area (so no clicking or stealing focus),
      I can already get the handle and alter the tracker position by sending a WM_SETPOS message, but somehow the actual volume is not changed: I think I need to do something else to trigger the event handler for the value change and propagate it correctly.
      This is the control summary from Au3 info:
      >>>> Window <<<< Title: SoundWire Server Class: #32770 Position: 441, 218 Size: 566, 429 Style: 0x94CA00C4 ExStyle: 0x00050101 Handle: 0x0000000000510E12 >>>> Control <<<< Class: msctls_trackbar32 Instance: 4 ClassnameNN: msctls_trackbar324 Name: Advanced (Class): [CLASS:msctls_trackbar32; INSTANCE:4] ID: 6002 Text: Position: 51, 222 Size: 47, 126 ControlClick Coords: 1, 101 Style: 0x5001000A ExStyle: 0x00000000 Handle: 0x00000000001234C8 >>>> Mouse <<<< Position: 496, 567 Cursor ID: 2 Color: 0xF0F0F0 >>>> StatusBar <<<< >>>> ToolsBar <<<< >>>> Visible Text <<<< Default multimedia device Tray on Start Static Server Address: 192.168.1.8 Status: Connected to B9K~OP3 Audio Output Audio Input Level Record to File Input Select: 44.1 kHz Minimize to Master Volume Mute >>>> Hidden Text <<<< Slider2 Mute OK Cancel Label Balance Slider1 Volume Front L/R Fr C/LFE Side L/R Back L/R
      I am attaching the program in question so you don't have to install it (i don't know if it is portable enough, tough): 

      SoundWire Server_files.zip

      Thanks in advance and I hope I didn't post in the wrong section
    • FrancescoDiMuro
      By FrancescoDiMuro
      Good morning everyone

      I was playing a little bit with "Screen Capture" UDF, and I was trying to make a "Window" capture, but, since I made a GUI which through I fire the event "Capture", my GUI is captured as well, and I don't want to
      This is the line of code that makes the capture:
       
      _ScreenCapture_CaptureWnd($strScreenCaptureFileName, $objActiveWindow, 0, 0, -1, -1, False) And these are the lines of code which select the "active" window:
       
      Local $objCurrentWindow = 9999 If _IsPressed("01") Then $objCurrentWindow = WinGetHandle("[ACTIVE]") If $objCurrentWindow <> $objMyGUI Then $objActiveWindow = $objCurrentWindow EndIf EndIf Sorry If I made stupid mistakes
      Thanks in advance.

      Francesco
    • Ambient
      By Ambient
      I have tried several way sto get this to work to no avail. Any help would be appreciated. #include <ListViewConstants.au3> #include <GuiListView.au3> #include "GuiListViewEx.au3" $idItem = GUICtrlCreateListViewItem($r & " | " & $c & $adoRs.Fields("TransactionAmount").value & " | " & $Timestamp & " | " & _StringProper($adoRs.Fields("Tillid").value) & @CRLF & @CRLF & "Card Number : " & $cardnum & " " , $idListView) ConsoleWrite( "IDITEM" & $idItem) If STRINGLEFT($adoRs.Fields("TransactionAmount").value,1)= "-" Then Consolewrite(" String is Negative" & @CRLF) ;Drops in Here as expected ;GUICtrlSetColor(-1, $COLOR_RED) ; Colour line if item is negative this didn' work $TxC= _GUICtrlListView_SetTextColor($hListView, $CLR_RED) ; I also tried $TxC= _GUICtrlListView_SetTextColor(-1, 0xFF0000) CONSOLEWRITE("TEXTCOLOUR RETURNED " & $TxC & @crlf) ; This is returning True ELSE Consolewrite(" String is NOT Negative" & @CRLF) EndIf  
    • AdamUL
      By AdamUL
      Here is a function that will return a 2D array of visible windows.  You will notice that windows "Start" and "Program Manager"  windows will always be in the array.  The array returns the title of the window, the window handle, the PID of the process associated with the window, the process name associated with the window, the window's position, and the window's dimension,  Please see comments in the code about the numbers returned about the window's position.
       
      #include <Array.au3> #include <Process.au3> ;Get a list of visable windows with titles. $aWindows = _GetVisibleWindows() _ArrayDisplay($aWindows) Func _GetVisibleWindows() ;Retrieve a list of windows. Local $aWinList = WinList() If Not IsArray($aWinList) Then Return SetError(0, 0, 0) ;Loop through the array deleting no title or invisable windows. Local $sDeleteRows = "" For $i = 1 To $aWinList[0][0] If $aWinList[$i][0] = "" Or Not BitAND(WinGetState($aWinList[$i][1]), $WIN_STATE_VISIBLE) Then $sDeleteRows &= $i & ";" EndIf Next $sDeleteRows = StringTrimRight($sDeleteRows, 1) ;Remove last ";". _ArrayDelete($aWinList, $sDeleteRows) $aWinList[0][0] = UBound($aWinList) - 1 ;Get Window's Processor ID (PID), and add to the array. _ArrayColInsert($aWinList, UBound($aWinList, 2)) For $i = 1 To $aWinList[0][0] $aWinList[$i][2] = WinGetProcess($aWinList[$i][1]) Next ;Get Window's Process Name from PID, and add to the array. _ArrayColInsert($aWinList, UBound($aWinList, 2)) For $i = 1 To $aWinList[0][0] $aWinList[$i][3] = _ProcessGetName($aWinList[$i][2]) Next ;Get Windows's Position and Size, and add it to the array. ;For Position, -3200,-3200 is minimized window, -8,-8 is maximized window on 1st display, and ;x,-8 is maximized windown on the nth display were x is the nth display width plus -8 (W + -8). _ArrayColInsert($aWinList, UBound($aWinList, 2)) ;Position (X,Y). _ArrayColInsert($aWinList, UBound($aWinList, 2)) ;Dimension (WxH). Local $aWinPosSize For $i = 1 To $aWinList[0][0] $aWinPosSize = WinGetPos($aWinList[$i][1]) $aWinList[$i][4] = $aWinPosSize[0] & "," & $aWinPosSize[1] $aWinList[$i][5] = $aWinPosSize[2] & "x" & $aWinPosSize[3] Next Return $aWinList EndFunc ;==>_GetVisibleWindows  
      Adam
       
×