Code: Select all
#Requires Autohotkey 2.0
#SingleInstance Force
; if WinExist("Untitled - Notepad")
if WinExist('ahk_class Notepad')
WinClose
; Innehåller supportinformation
aSupport := {}
aSupport.fName := "aaa"
aSupport.eName := "yyy"
aSupport.name := aSupport.fName " " aSupport.eName
aSupport.eMail := "bla@test.se"
aSupport.tfn := "070 - 1234567"
Run 'notepad.exe',,, &tstPID
; Sleep 1000
ColorCheck(40, 20, 'Ljusgrön', 'ahk_pid ' tstPID)
MsgBox "Done"
ExitApp
; ColorCheck('xPos', 'yPos', 'Color', 'WinName')
ColorCheck( xPos, yPos, cName, winName, wSec := 0, wide := 2, cDiff := 3 )
{ ; Ver 17 april 2024
; https://www.autohotkey.com/boards/viewtopic.php?f=82&t=127853 by boiler
;
; xPos - x-värdet - i det aktiva fönstret
; yPos - y-värdet - i det aktiva fönstret
; cName - Color namn i text på önskad färg (ex. Röd)
; WinName- Namn på fönstret som ska kontrolleras (ex. ahk_pid winPID)
; wSek - Max sekunder vänta på önskad färg, 0 sek = Avläs färg
; wide - Storleken på området som ska kontrolleras. ex. 2 => +/-2 (från angiven position)
; cDiff - Hur mycket angiven färg får skulja mot avläst färg.
;
; Funktionen .:
; Kontrollerar att önskat fönster är öppnat
; Öppnar fönstret inom utsatt tid (minst 3 sekunder)
; Eller den önskade tiden i funktionsanropet.
; Omvandlar ett färgnamn till HEX-color
;
;
Global aSupport
xPos1 := xPos - wide, xPos2 := xPos + wide
yPos1 := yPos - wide, yPos2 := yPos + wide
CoordMode 'Pixel', 'Window' ; Sök i aktivt fönster
cName := strLower(cName) ; Omvandla färgen till gemena bokstäver
; - - Översätt färgnamn till HEX-RGB - - -
; - - Färgnamnen MÅSTE alltid anges med gemena bokstäver
cValues := Map( '',
, 'vit' , 0xFFFFFF ; Vit
, 'svart' , 0x000000
, 'ljusgrön' , 0x87C5D2 ; Notepad logga
, 'röd' , 0xFF0000
, 'mörkröd' , 0x800000 ; Exempelfärg
)
Try
hexColor := Format('{:#x}', cValues[cName])
Catch
{ ; Error - Önskat färgnamn fanns inte definierat.
MsgBox '' .
'Angiven färg EJ definierad! `n`n' .
'Färgen .: ' cName '`n' .
'måste definieras innan körning! `n`n' .
'Detta program avslutas. `n' .
'Kontakta support .: ' aSupport.name ' - ' aSupport.tfn,
'Rad ' A_LineNumber ' -> ' A_ScriptName,
0x40010
MsgBox 'Programmet avslutas!',, 'T1'
ExitApp
}
/*
; Kolla innehållet i objektet
For key, value in cValues
res .= key`t' = `t' value '`n'
MsgBox res
*/
; Aktivera önskat programfönster, för att avläsa en tidigare specificerad färg.
; Minsta tid för att kunna akrivera fönstret är 3 sekunder.
; i annat fall gäller värdet för wSec.
actMin := 3 ; sekunder - Den minsta tid som gäller för att aktivera önskat fönster
If wSec > actMin
actMin := wSec
if !WinWaitActive(WinName,, actMin)
{ ; Error - Önskat fönster kunde inte aktiveras på utsatt tid.
; MsgBox "WinWaitActive timed out."
MsgBox '' .
'Time out - för lång tid! `n`n' .
'Fönstret aktiverades inte på utsatt tid.' .
'Aktiverings tid .: ' actMin .
'Detta program måste avslutas. `n' .
'Kontakta support .: ' aSupport.name ,
'Rad ' A_LineNumber ' -> ' A_ScriptName,
0x40010
MsgBox 'Programmet avslutas!',, 'T1'
ExitApp
}
; WinWaitActive winName ; Om programmet just öppnades
; MsgBox '`nwSec .: ' wSec , "Row " A_LineNumber " -> " A_ScriptName, 64
; Sleep 1000
if PixelSearch(&Px, &Py, xPos1, yPos1, xPos2, yPos2, hexColor, cDiff )
MsgBox "A color within 3 shades of variation was found at X" Px " Y" Py
else
MsgBox "That color was not found in the specified region."
PixelSearch( &Px, &Py, xPos1, yPos1, xPos2, yPos2, hexColor, cDiff )
MsgBox "hexColor .: " hexColor "`nPx .: " Px "`nPy .: " Py '`n`nxPos .: ' xPos '`nxPos1 .: ' xPos1 '`nxPos2 .: ' xPos2 '`n`nyPos .: ' yPos '`nyPos1 .: ' yPos1 '`nyPos2 .: ' yPos2, "Row " A_LineNumber " -> " A_ScriptName, 64
Color := PixelGetColor( xPos, yPos )
MsgBox Color, "Row " A_LineNumber " -> " A_ScriptName, 64
Return
}