Yeah, I'm using TED editor -- it's not good, lacks infinite undo. I've just switched to that HIEditor that everyone here seems to like.
lexiKos -- I haven't even thought of that, it seems so obvious. There are obviously pros and cons of course -- but I like the idea: nice and simple.
These scripts always get more and more elaborate, once you have a nice little way to use autohotkey, you can add onto it forever. This version lets you determine the border by drawing on the screen (if you don't pass it 4 arguments) so you can black out the background on the fly.
Next step: customizable colors, background images, music player, hamster animations (in that order)
Code:
#SingleInstance force
#NoEnv
CoordMode, mouse, screen
SCREEN_X = %A_ScreenWidth%
SCREEN_Y = %A_ScreenHeight%
if 0 = 4
{
TOP = %1%
BOT = %2%
LEFT = %3%
RIGHT = %4%
Gui, Color, Black
Gui +LastFound +AlwaysOnTop +ToolWindow -Caption
WinSet, Region, % "0-0 " . SCREEN_X . "-0 " . SCREEN_X . "-" . SCREEN_Y . " 0-" . SCREEN_Y . " 0-0 " . LEFT . "-" . TOP . " " . SCREEN_X-RIGHT . "-" . TOP . " " . SCREEN_X-RIGHT . "-" . SCREEN_Y-BOT . " " . LEFT . "-" . SCREEN_Y-BOT . " " . LEFT . "-" . TOP
Gui, show, % "W" . SCREEN_X . " H" . SCREEN_Y . " X0 Y0"
}
else
{
Gui, Color, Black
Gui +LastFound +AlwaysOnTop +ToolWindow -Caption
Winset, Transparent, 200
Gui, show, % "W" . SCREEN_X . " H" . SCREEN_Y . " X0 Y0"
Loop ;Wait for first mouse click
{
GetKeyState, MouseDown, LButton, P
if MouseDown = D
Break
MouseGetPos, AX, AY
Sleep 100
}
TOP := AY
LEFT := AX
Loop ;Wait for release
{
MouseGetPos, BX, BY
BOT := SCREEN_Y-BY
RIGHT := SCREEN_X-BX
WinSet, Region, % "0-0 " . SCREEN_X . "-0 " . SCREEN_X . "-" . SCREEN_Y . " 0-" . SCREEN_Y . " 0-0 " . LEFT . "-" . TOP . " " . SCREEN_X-RIGHT . "-" . TOP . " " . SCREEN_X-RIGHT . "-" . SCREEN_Y-BOT . " " . LEFT . "-" . SCREEN_Y-BOT . " " . LEFT . "-" . TOP
GetKeyState, MouseDown, LButton, P
if MouseDown != D
Break
Sleep 500
}
Winset, Transparent, 255
If (TOP + BOT > SCREEN_Y)
{
TOP := SCREEN_Y-BOT
BOT := SCREENY_Y-TOP
}
If (LEFT + RIGHT > SCREEN_X)
{
LEFT := SCREEN_Y-RIGHT
RIGHT := SCREENY_Y-LEFT
}
}
OnMessage(0x200, "WM_MOUSEMOVE")
Return
WM_MOUSEMOVE()
{
global SCREEN_X, SCREEN_Y, TOP, BOT, LEFT, RIGHT
GetKeyState, CtrlDwn, Ctrl
if CtrlDwn = D
ExitApp
Gui, hide
Loop
{
MouseGetPos, X, Y
if (X>LEFT && X<SCREEN_X-RIGHT && Y>TOP && Y<SCREEN_Y-BOT)
break
Sleep, 1000
}
Gui, show, NA
return
}