Update: Probably not require Chinese Input
Code:
#Persistent
#NoEnv
;
; AutoHotkey Version: 1.x
; Author: Sakurako <sakurakoyao@yahoo.ca>
;
; Script Function:
; Pick Color
;
Goto, ColumnRowSet
^LButton::
;~RButton::
If GenerateReport <= 0
GenerateReport := 0
MouseGetPos, ColorCheckX, ColorCheckY
WinGetActiveTitle, Window
ColorCheck:
WinActivate, %Window%
WinWaitActive, %Window%
Sleep, 100
CoordX := ColorCheckX - ColumnRangeSet
CoordY := ColorCheckY - RowRangeSet
Loop, %ColumnCheck%
{
CoordX += 1
If A_Index > 1
CoordY -= RowCheck
ColorPickX := A_Index
Loop, %RowCheck%
{
CoordY += 1
ColorPickY := A_Index
ColorPickGraph := SubStr("000" . ColorPickY, -3) SubStr("000" . ColorPickX, -3)
PixelGetColor, ColorPickGet, %CoordX%, %CoordY%
%ColorPickGraph% := ColorPickGet
Gui, Font, c%ColorPickGet%
GuiControl, Font, %ColorPickGraph%
%ColorPickGraph% := "(" CoordX ", " CoordY ") " %ColorPickGraph%
}
}
return
ColumnRowSet:
Gui, Destroy
Report0 :=
Gui +AlwaysOnTop ToolWindow
Gui, Font
Gui, Add, Edit, x10 w50
Gui, Add, UpDown, vColumnRangeSet Range0-400, 7
Gui, Add, Edit, xp+64 w50
Gui, Add, UpDown, vRowRangeSet Range0-300, 7
Gui, Add, Button, x10 gColorGraphSet, Done
Gui, Show,, Column&Row Range
WinWaitClose, Column&Row Range
ColumnCheck := ColumnRangeSet * 2 + 1
RowCheck := RowRangeSet * 2 + 1
GenerateReport := -1
Gui +AlwaysOnTop ToolWindow
Gui, Font, s10
Gui, Add, ComboBox, x12 vVariablePick gVariablePick w90
GuiControl,, VariablePick, Report0
Gui, Add, Button, xp+110 gCopy, Copy to Clipboard
Gui, Add, Text, x12 cFuchsia, Ctrl + Left Click to capture
Gui, Font, s10
Loop, %RowCheck%
{
If A_Index > 1
CoordY -= RowCheck
RowNum := A_Index
Loop, %ColumnCheck%
{
ColNum := A_Index
Report0 := Report0 "0000"
GuiCreate := SubStr("000" . RowNum, -3) SubStr("000" . ColNum, -3)
If GuiCreate = 00010001
Gui, Add, Text, x12 v11 gColorPick Center, █
Else if ColNum = 1
Gui, Add, Text, x12 yp+12 v%GuiCreate% gColorPick Center, █
Else if ColNum <> 1
Gui, Add, Text, xp+12 v%GuiCreate% gColorPick Center, █
}
}
ReportS := Report0
Gui, Font, s10
Gui, Add, Edit, x12 w36
Gui, Add, UpDown, vReportCheck gReportCheck Range-1-3000, 1
Gui, Add, Edit, xp+45 vGenerateColor ReadOnly, 0xFFFFFF
Gui, Add, Button, xp+90 gGenerateSet, Generate Color Report
;Gui, Add, Edit, x12 w50 ReadOnly
;Gui, Add, UpDown, vCoordX1 Range0-800
;Gui, Add, Edit, xp+55 w50 ReadOnly
;Gui, Add, UpDown, vCoordY1 Range0-600
;Gui, Add, Edit, xp+69 w50 ReadOnly
;Gui, Add, UpDown, vCoordX2 Range0-800
;Gui, Add, Edit, xp+55 w50 ReadOnly
;Gui, Add, UpDown, vCoordY2 Range0-600
Gui, Add, Text, x12 cBlue gColorCheck, R
Gui, Add, Text, xp+36 cFuchsia gColumnRowSet, Column && Row
Gui, Add, Text, xp+150 cGreen gExit, Exit
Gui, Show, x465 y465, Color Pick Utility (for AutoHotkey)
;Gui, Font,, Arial
;Gui, Font,, Times New Roman
return
ColorGraphSet:
Gui, Submit
Gui, Destroy
return
GenerateSet:
If GenerateReport = 2
Goto, GenerateReport
Else
{
GenerateReport := 1
MsgBox, 8256, Generate Report, Select the color to generate report
}
return
GenerateReport:
Report = GCR
Loop, %RowCheck%
{
RowNum := A_Index
Loop, %ColumnCheck%
{
ColNum := A_Index
GC_VarCheck := SubStr("000" . RowNum, -3) SubStr("000" . ColNum, -3)
GC_ColorCheck := SubStr(%GC_VarCheck%, InStr(%GC_VarCheck%, A_Space A_Space A_Space) + 3, 8)
If (GC_ColorCheck = GenerateColor)
{
Report := Report "1"
StringPos := 4 * ((RowNum - 1) * ColumnCheck + ColNum)
If StringPos > 4
Report0 := SubStr(ReportS SubStr(Report0, 1, StringPos - 4), 5 - StringPos) SubStr("000" . SubStr(Report0, StringPos - 3, 4) + 1, -3) SubStr(Report0, StringPos + 1)
Else if StringPos = 4
Report0 := SubStr("000" . SubStr(Report0, StringPos - 3, 4) + 1, -3) SubStr(Report0, StringPos + 1)
}
Else
Report := Report "0"
}
}
Loop, 36
{
If Report%A_Index%
continue
Else
{
Report%A_Index% := Report
GuiControl,, VariablePick, Report%A_Index%
break
}
}
return
ReportCheck:
Gui, Submit, NoHide
If ReportCheck = -1
{
GenerateReport := 0
MsgBox, 8240, Exit ReportGenerate mode, improper value
return
}
Loop, %RowCheck%
{
RowNum := A_Index
Loop, %ColumnCheck%
{
ColNum := A_Index
GC_VarCheck := SubStr("000" . RowNum, -3) SubStr("000" . ColNum, -3)
If % SubStr(Report0, 1 + ((RowNum - 1) * ColumnCheck + (ColNum - 1)) * 4, 4) = ReportCheck
{
Gui, Font, c%GenerateColor%
GuiControl, Font, %GC_VarCheck%
GuiControl,, %GC_VarCheck%, ▓
}
Else
{
Gui, Font, cSilver
GuiControl, Font, %GC_VarCheck%
GuiControl,, %GC_VarCheck%, █
}
}
}
return
ColorPick:
If GenerateReport = -1
{
MsgBox, 8256, Color Pick Utility, Press Ctrl + Left Click on center of a pixel region
return
}
Else if GenerateReport = 0
{
ColorPickGraph := A_GuiControl
ColorPickGet := %A_GuiControl%
MsgBox, 8256, Color Pick, %ColorPickGet%`nActivate the window and press Ctrl+G to get the color of the coordinate
return
}
Else if GenerateReport = 1
{
ColorPickGraph := %A_GuiControl%
GenerateColor := SubStr(ColorPickGraph, InStr(ColorPickGraph, A_Space A_Space A_Space) + 3, 8)
GuiControl,, GenerateColor, %GenerateColor%
GenerateReport := 2
Goto, GenerateReport
}
return
^G::
CoordX := SubStr(ColorPickGet, 2, InStr(SubStr(ColorPickGet, 2, 6), A_Space) - 2)
CoordY := SubStr(ColorPickGet, InStr(ColorPickGet, A_Space)+1, InStr(ColorPickGet, A_Space A_Space A_Space) - InStr(ColorPickGet, A_Space) - 2)
PixelGetColor, ColorPickGet, %CoordX%, %CoordY%
MsgBox, 8256, Color Check, (%CoordX%`, %CoordY%) %ColorPickGet%
return
F6::Reload
F7::Suspend
Copy:
Gui, Submit, NoHide
If VariablePick
clipboard := %VariablePick%
Else
MsgBox, 8256, Variable Information, Select variable
return
VariablePick:
Gui, Submit, NoHide
If VariablePick
If GenerateReport = 2
{
If VariablePick = Report0
Goto, ReportCheck
Loop, %RowCheck%
{
RowNum := A_Index
Loop, %ColumnCheck%
{
ColNum := A_Index
GC_VarCheck := SubStr("000" . RowNum, -3) SubStr("000" . ColNum, -3)
If % SubStr(%VariablePick%, (RowNum - 1) * ColumnCheck + ColNum + 3, 1) = 1
{
Gui, Font, c%GenerateColor%
GuiControl, Font, %GC_VarCheck%
}
Else
{
Gui, Font, cSilver
GuiControl, Font, %GC_VarCheck%
}
}
}
}
return
Exit:
ExitApp
return