Finally, we have scores! (Note: scale is 1-7, and "Performance" was nulled out.)

3rd: jeeswg - 4.5

2nd: Micromegas - 5.1

1st: Helgef - 6.1

Congratulations, and thanks to everyone who participated! I did make some notes regarding each entry (not very nit-picky since there were few entries); if you'd like to read them, as well as your score breakdown, please PM me! I will be PM'ing the 3 winners with confirmation of accepting and choosing of game keys, or lack thereof.

Concerning future AHKathons
I'd like to gather a small group of judges for future AHKathons. Note that judges may not participate, or at the very least, may not be considered for any prizes. Alternatively, we could have an open (community) vote. Or both! In which case the judges would narrow down the entries, then the community would decide winners.. or vice-versa. Please voice your opinions on this, either here in the thread or you may PM me, including if you'd like to be a judge, I'd really appreciate it!

Finally, we have scores! :dance: (Note: scale is 1-7, and "Performance" was nulled out.)

[size=150][color=#CD7F32]3rd:[/color] jeeswg[/size] - 4.5

[size=150][color=#C0C0C0]2nd:[/color] Micromegas[/size] - 5.1

[size=150][color=#FFDF00]1st:[/color] Helgef[/size] - 6.1

Congratulations, and thanks to everyone who participated! I did make [i]some[/i] notes regarding each entry (not very nit-picky since there were few entries); if you'd like to read them, as well as your score breakdown, please PM me! :) I will be PM'ing the 3 winners with confirmation of accepting and choosing of game keys, or lack thereof.

[size=150][color=#FF0000]Concerning future AHKathons[/color][/size]I'd like to gather a small group of judges for future AHKathons. Note that judges may not participate, or at the very least, may not be considered for any prizes. Alternatively, we could have an open (community) vote. Or both! In which case the judges would narrow down the entries, then the community would decide winners.. or vice-versa. Please voice your opinions on this, either here in the thread or you may PM me, including if you'd like to be a judge, I'd really appreciate it!

By popular demand (n=1), I will make a brief comment on what I mean with injected mouse events. It simply means mouse events not generated by actual use of a mouse, specifically mouse events generated by windows function such as sendInput or mouse_event. Typical use cases would be when you run code from the help forum, protecting you against scripts that starts making clicks here and there. But potentally also could protect against malicious software, I guess that is pretty rare though.

Cheers.

By popular demand ([c]n=1[/c]), I will make a brief comment on what I mean with [i]injected mouse events[/i]. It simply means mouse events not generated by actual use of a mouse, specifically mouse events generated by windows function such as [c]sendInput[/c] or [c]mouse_event[/c]. Typical use cases would be when you run code from the help forum, protecting you against scripts that starts making clicks here and there. But potentally also could protect against malicious software, I guess that is pretty rare though.

[size=200][b]AntiClick[/b][/size][hr][/hr] This program protects against injected mouse events.

[size=140][b]How [/b]to[/size][hr][/hr]Select the events you want to block in the settings dialog, optionally, allow AHK generated events. Settings can be accessed via the tray menu. Script can be exited via [c]esc[/c] or tray menu.

Micromegas wrote:For my entry, I took the liberty to deviate quite a bit from the task. Instead of auto-click, for which I have not felt a need so far, I wrote CheeseCrumbs, a recorder that looks around the place where you click, records the bitmap, and creates code to insert that into any script you're writing. By "cheese crumbs", I mean the little bitmaps, which lead to the execution of the script you're writing like breadcrumbs were supposed to lead Hansel and Gretel out of the forest.

This is pretty neat.

[quote="Micromegas"]For my entry, I took the liberty to deviate quite a bit from the task. Instead of auto-click, for which I have not felt a need so far, I wrote CheeseCrumbs, a recorder that looks around the place where you click, records the bitmap, and creates code to insert that into any script you're writing. By "cheese crumbs", I mean the little bitmaps, which lead to the execution of the script you're writing like breadcrumbs were supposed to lead Hansel and Gretel out of the forest.[/quote]This is pretty neat.

For my entry, I took the liberty to deviate quite a bit from the task. Instead of auto-click, for which I have not felt a need so far, I wrote CheeseCrumbs, a recorder that looks around the place where you click, records the bitmap, and creates code to insert that into any script you're writing. By "cheese crumbs", I mean the little bitmaps, which lead to the execution of the script you're writing like breadcrumbs were supposed to lead Hansel and Gretel out of the forest.

For my entry, I took the liberty to deviate quite a bit from the task. Instead of auto-click, for which I have not felt a need so far, I wrote CheeseCrumbs, a recorder that looks around the place where you click, records the bitmap, and creates code to insert that into any script you're writing. By "cheese crumbs", I mean the little bitmaps, which lead to the execution of the script you're writing like breadcrumbs were supposed to lead Hansel and Gretel out of the forest.

[code]; ========================================; CheeseCrumbs; Bitmap recorder for AutoHotkey; created by Micromegas for the AHKathon ; December 2017; ========================================

Gui, Add, Text, , With Ctrl key pressed, select where you want the mouseclick recorded. `nYou can simply click to use the current size (initially %crumbwidth%*%crumbheight%) or drag the mouse to define a rectangle. `nInitially the search area is all screens. You can redefine that with Alt + mouse drag. `nNote that the area needs to be big enough to to contain the cheesecrumb size, even at its edges. `n ; I would like to add current values, but I don't know how to update that.Gui, Add, Text, , &Tolerance:Gui, Add, Edit, vshades x120 y+-12 w200, %shades%Gui, Add, Checkbox, vclicknow xm, E&xecute click right away Gui, Add, Button, default, Save to clipboard ; Run the label ButtonSaveToClipboard when button is pressed.Gui, Add, Button, x+20, Close

;Check bounds if (x0<SearchX0 or y0<SearchY0 or x0+crumbwidth>SearchX1 or y0+crumbheight>SearchY1) { MsgBox You clicked outside the search area. (You can redefine the search area with Alt + mouse drag.) Return }

; This function allows to enter just the clicks without having to worry about filenames. ; todo: Allow user to change the name to something friendly and also to reuse any existing files. GetNewFilename(suggestion) { local n:=suggestion local f:= FilenameFromNumber(n) While (FileExist(f)) { ; if it exists, simply add one to the number so it remains unique. n++ f:= FilenameFromNumber(n) } return f}

jeeswg wrote:Do either of you use Windows 10? Windows 10 seems to have problems with everything, particularly standard MS apps like Calculator. Try commenting out the lines that check the canvas size and specifying values of vWinX and vWinY approximately where the canvas begins.

W10 indeed! Your script is pretty neat and pretty much outclassed other scripts in the competition for a 2nd place (1st goes to Cap of course). You can somewhat support W10 by replacing

Do either of you use Windows 10? Windows 10 seems to have problems with everything, particularly standard MS apps like Calculator. Try commenting out the lines that check the canvas size and specifying values of vWinX and vWinY approximately where the canvas begins.

Do either of you use Windows 10? Windows 10 seems to have problems with everything, particularly standard MS apps like Calculator. Try commenting out the lines that check the canvas size and specifying values of vWinX and vWinY approximately where the canvas begins.

jeeswg wrote:- Could you report what the XYWH values are. Thanks.MsgBox, % Clipboard := Format("x{} y{} w{} h{}", vWinX, vWinY, vWinW, vWinH)
vWinW and vWinH don't really matter, but the script needs values for vWinX and vWinY.
- You could comment out the lines that check the canvas size and see if the script works. You could also increase the delay as a safety feature.
- Which OS do you use? I've already tried quite hard to make this work on Paint for Windows XP and 7, and to take into account a ClassNN that varies.

[quote="jeeswg"]- Could you report what the XYWH values are. Thanks.[c]MsgBox, % Clipboard := Format("x{} y{} w{} h{}", vWinX, vWinY, vWinW, vWinH)[/c]vWinW and vWinH don't really matter, but the script needs values for vWinX and vWinY.- You could comment out the lines that check the canvas size and see if the script works. You could also increase the delay as a safety feature.- Which OS do you use? I've already tried quite hard to make this work on Paint for Windows XP and 7, and to take into account a ClassNN that varies.[/quote]

- Could you report what the XYWH values are. Thanks.MsgBox, % Clipboard := Format("x{} y{} w{} h{}", vWinX, vWinY, vWinW, vWinH)
vWinW and vWinH don't really matter, but the script needs values for vWinX and vWinY.
- You could comment out the lines that check the canvas size and see if the script works. You could also increase the delay as a safety feature.
- Which OS do you use? I've already tried quite hard to make this work on Paint for Windows XP and 7, and to take into account a ClassNN that varies.

- Could you report what the XYWH values are. Thanks.[c]MsgBox, % Clipboard := Format("x{} y{} w{} h{}", vWinX, vWinY, vWinW, vWinH)[/c]vWinW and vWinH don't really matter, but the script needs values for vWinX and vWinY.- You could comment out the lines that check the canvas size and see if the script works. You could also increase the delay as a safety feature.- Which OS do you use? I've already tried quite hard to make this work on Paint for Windows XP and 7, and to take into account a ClassNN that varies.