It's a fun toy, but I eventually want to use it to locate stuff. Let me know what you think. Refactoring/criticism/comments welcome.
Note: Using the font I suggest here (on my machine at least), the colon (:) contains 2 pixels and the comma (,) contains 3, so I have switched them. However, depending on your font, you may get a better picture if you switch them in the code below ("%scan_current_line%:" and "%scan_current_line%," respectively).
^!e:: CoordMode, Pixel, Screen CoordMode, Mouse, Screen MouseGetPos, scan_x_end, scan_y_end scan_current_y=%scan_y_start% scan_current_x=%scan_x_start% scan_current_line= Loop { scan_current_x := scan_current_x + 1 if scan_current_x > %scan_x_end% { scan_current_line =%scan_current_line%`r`n scan_current_y := scan_current_y + 1 if scan_current_y > %scan_y_end% break scan_current_x = %scan_x_start% continue } PixelGetColor, found_color, %scan_current_x%, %scan_current_y% StringMid, scan_rgb_r, found_color, 3, 2 StringMid, scan_rgb_g, found_color, 5, 2 StringMid, scan_rgb_b, found_color, 7, 2 scan_rgb_r=0x%scan_rgb_r% scan_rgb_g=0x%scan_rgb_g% scan_rgb_b=0x%scan_rgb_b% SetFormat, integer, hex scan_rgb_sum:=scan_rgb_r + scan_rgb_g + scan_rgb_b if scan_rgb_sum > 0x280 { scan_current_line =%scan_current_line%. } else if scan_rgb_sum > 0x200 { scan_current_line =%scan_current_line%: } else if scan_rgb_sum > 0x180 { scan_current_line =%scan_current_line%, } else if scan_rgb_sum > 0x100 { scan_current_line =%scan_current_line%+ } else if scan_rgb_sum > 0x80 { scan_current_line =%scan_current_line%8 } else { scan_current_line =%scan_current_line%# } } Clipboard=%scan_current_line% MsgBox, Scan Complete return ^!b:: CoordMode, Mouse, Screen MouseGetPos, scan_x_start, scan_y_start return
(edited to make instructions more clear and remove extra code tag)
(edited again to add note)
(edited again due to OCD and that 3 is better replaced by +)