It's a mouse clicker via numpad, with graphical grid drawn on screen to see where your going. Toy around and you'll see what I mean.
Press F2 to restart it.
Requires Gdip.ahk and 1024x768 resolution ( hey, its a prototype )
( Maybe someone can make use of the 45 minutes used to make it ) =D
; gdi+ ahk tutorial 1 written by tic (Tariq Porter) ; Requires Gdip.ahk either in your Lib folder as standard library or using #Include ; ; Tutorial to draw a single ellipse and rectangle to the screen #SingleInstance, Force #NoEnv SetBatchLines, -1 CurStep := 1 NewTop := 0 NewLeft := 0 ; Uncomment if Gdip.ahk is not in your standard library #Include, Gdip.ahk ; Start gdi+ If !pToken := Gdip_Startup() { MsgBox, 48, gdiplus error!, Gdiplus failed to start. Please ensure you have gdiplus on your system ExitApp } OnExit, Exit ; Set the width and height we want as our drawing area, to draw everything in. This will be the dimensions of our bitmap Width := 1024, Height := 768 ; Create a layered window (+E0x80000 : must be used for UpdateLayeredWindow to work!) that is always on top (+AlwaysOnTop), has no taskbar entry or caption Gui, 1: -Caption +E0x80000 +LastFound +AlwaysOnTop +ToolWindow +OwnDialogs ; Show the window Gui, 1: Show, NA ; Get a handle to this window we have created in order to update it later hwnd1 := WinExist() ; Create a gdi bitmap with width and height of what we are going to draw into it. This is the entire drawing area for everything hbm := CreateDIBSection(Width, Height) ; Get a device context compatible with the screen hdc := CreateCompatibleDC() ; Select the bitmap into the device context obm := SelectObject(hdc, hbm) ; Get a pointer to the graphics of the bitmap, for use with drawing functions G := Gdip_GraphicsFromHDC(hdc) ; Set the smoothing mode to antialias = 4 to make shapes appear smother (only used for vector drawing and filling) Gdip_SetSmoothingMode(G, 4) ; Create a fully opaque red brush (ARGB = Transparency, red, green, blue) to draw a circle pBrush := Gdip_BrushCreateSolid(0xffff0000) pPen := Gdip_CreatePen(0xff00ff00, 1) ; Fill the graphics of the bitmap with an ellipse using the brush created ; Filling from coordinates (100,50) an ellipse of 200x300 ;Gdip_FillEllipse(G, pBrush, 100, 50, 200, 300) Gdip_DrawLine(G, pPen, Floor(Width/3), 0, Floor(Width/3), 768) Gdip_DrawLine(G, pPen, Floor(Width/3*2), 0, Floor(Width/3*2), 768) Gdip_DrawLine(G, pPen, 0, Floor(Height/3), 1024, Floor(Height/3)) Gdip_DrawLine(G, pPen, 0, Floor(Height/3*2), 1024, Floor(Height/3*2)) ; Delete the brush as it is no longer needed and wastes memory ;Gdip_DeleteBrush(pBrush) ; Update the specified window we have created (hwnd1) with a handle to our bitmap (hdc), specifying the x,y,w,h we want it positioned on our screen ; So this will position our gui at (0,0) with the Width and Height specified earlier UpdateLayeredWindow(hwnd1, hdc, 0, 0, Width, Height) SelectObject(hdc, obm) DeleteObject(hbm) DeleteDC(hdc) Gdip_DeleteGraphics(G) Return ;####################################################################### Exit: ; gdi+ may now be shutdown on exiting the program Gdip_Shutdown(pToken) ExitApp Return f2::reload NumPad1::SelectWindow(1) NumPad2::SelectWindow(2) NumPad3::SelectWindow(3) NumPad4::SelectWindow(4) NumPad5::SelectWindow(5) NumPad6::SelectWindow(6) NumPad7::SelectWindow(7) NumPad8::SelectWindow(8) NumPad9::SelectWindow(9) esc::Gui, 1: hide f1::Gui, 1: show, +NoActivate SelectWindow(Window) { global If (CurStep == 1) { NewBoxWidth := 343 NewBoxHeight := 256 } else if (CurStep == 2) { NewBoxWidth := 114 NewBoxHeight := 86 } else if (CurStep == 3) { NewBoxWidth := 39 NewBoxHeight := 29 } else if (CurStep == 4) { NewBoxWidth := 12 NewBoxHeight := 9 } if (CurStep == 5) { ClickTheButton() CurStep := 1 Gui, 1: Destroy return } if (Window == 1) { NewTop := NewTop + (NewBoxHeight * 2) NewLeft := NewLeft } if (Window == 2) { NewTop := NewTop + (NewBoxHeight * 2) NewLeft := NewLeft + NewBoxWidth } if (Window == 3) { NewTop := NewTop + (NewBoxHeight * 2) NewLeft := NewLeft + (NewBoxWidth * 2) } if (Window == 4) { NewTop := NewTop + NewBoxHeight NewLeft := NewLeft } if (Window == 5) { NewTop := NewTop + NewBoxHeight NewLeft := NewLeft + NewBoxWidth } if (Window == 6) { NewTop := NewTop + NewBoxHeight NewLeft := NewLeft + (NewBoxWidth * 2) } if (Window == 7) { NewTop := NewTop NewLeft := NewLeft } if (Window == 8) { NewTop := NewTop NewLeft := NewLeft + (NewBoxWidth) } if (Window == 9) { NewTop := NewTop NewLeft := NewLeft + (NewBoxWidth * 2) } CurStep += 1 ;MsgBox % NewBoxWidth . " - " . NewBoxHeight . " - " . NewTop . " - " . NewLeft . " --- " . CurStep DrawNewBox() } DrawNewBox() { global Gui, 1: Destroy Gui, 1: -Caption +E0x80000 +LastFound +AlwaysOnTop +ToolWindow +OwnDialogs Gui, 1: Show, NA hwnd1 := WinExist() hbm := CreateDIBSection(Width, Height) hdc := CreateCompatibleDC() obm := SelectObject(hdc, hbm) G := Gdip_GraphicsFromHDC(hdc) Gdip_SetSmoothingMode(G, 4) ; Box Borders ; Top if (NewTop > 0) Gdip_DrawLine(G, pPen, NewLeft, NewTop, NewLeft + NewBoxWidth, NewTop) ; Left if (NewLeft > 0) Gdip_DrawLine(G, pPen, NewLeft, NewTop, NewLeft, NewTop + NewBoxHeight) ; Bottom if ( (NewTop + NewBoxHeight) <= 768 ) Gdip_DrawLine(G, pPen, NewLeft, NewTop + NewBoxHeight, NewLeft + NewBoxWidth, NewTop + NewBoxHeight) ; Right if ( (NewLeft + NewBoxWidth) <= 1024 ) Gdip_DrawLine(G, pPen, NewLeft + NewBoxWidth, NewTop, NewLeft + NewBoxWidth, NewTop + NewBoxHeight) ; Inside Box ; Horiz Gdip_DrawLine(G, pPen, NewLeft, NewTop + ( NewBoxHeight / 3 ), NewLeft + NewBoxWidth, NewTop + ( NewBoxHeight / 3 ) ) Gdip_DrawLine(G, pPen, NewLeft, NewTop + ( ( NewBoxHeight / 3 ) * 2 ), NewLeft + NewBoxWidth, NewTop + ( ( NewBoxHeight / 3 ) * 2) ) ; Vert Gdip_DrawLine(G, pPen, NewLeft + ( NewBoxWidth / 3 ), NewTop, NewLeft + ( NewBoxWidth / 3 ), NewTop + NewBoxHeight ) Gdip_DrawLine(G, pPen, NewLeft + ( ( NewBoxWidth / 3 ) * 2 ), NewTop, NewLeft + ( ( NewBoxWidth / 3 ) * 2 ), NewTop + NewBoxHeight ) UpdateLayeredWindow(hwnd1, hdc, 0, 0, Width, Height) SelectObject(hdc, obm) DeleteObject(hbm) DeleteDC(hdc) Gdip_DeleteGraphics(G) Gui, 1: Show, NA } ClickTheButton() { global ;MsgBox % NewLeft + 6 . " - " . NewTop + 4 MouseClick, Left, NewLeft, NewTop, 1, 0 }