topbanner_forum
  *

avatar image

Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
  • Thursday April 25, 2024, 5:40 pm
  • Proudly celebrating 15+ years online.
  • Donate now to become a lifetime supporting member of the site and get a non-expiring license key for all of our programs.
  • donate

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Onesimus Prime [ switch to compact view ]

Pages: [1]
1
Post New Requests Here / Re: "PazzPort Helper"
« on: May 23, 2010, 10:31 AM »
One of the things missing, of course, are the Fu;nction keys.  What common uses do those have in various apps?  In other words (in part), which do I most need to worry about including substitutions for?

F1 = help (personally, I rarely use this)
F2 = rename (can probably be gotten to by right-clicking)
F5 = run (PowerPoint, some programming environments)
F11 = super-full-screen (Windows Explorer, Internet Explorer, etc.)

Any other important/common ones to consider?

2
Post New Requests Here / Re: "PazzPort Helper"
« on: May 23, 2010, 03:27 AM »
Here's test version 7 (the last one I uploaded was version 5; at some point I'll restart the version numbering, using decimal places...)

#SingleInstance force
; test v7

;Alt+F4
; missing: Function keys, Win key, Tab, Shift, Home, End, PgUp, PgDown, Prnt Scrn,


Ctrl & Backspace::AltTabMenu
~Ctrl::RapidHotkey("{TAB}", 2, 0.2)
~a::RapidHotkey("!^a", 3, 0.2)
~q::RapidHotkey("!{F4}",2)
~e::RapidHotkey("#z""#r""#e",3, 0.2)
~Esc::RapidHotkey("SusScript""ReloadScript""exit", 3, 0.2, 1)

Ctrl & Esc::
CoordMode, ToolTip
Tooltip,Alt+Win,45,5,2
send {LAlt down}
send {LWin down}
sleep 4000
send {LWin up}
send {LAlt up}
Tooltip,,,,2
return

Alt & Esc::
CoordMode, ToolTip
GetKeyState, ShiftState, Shift
;MsgBox %ShiftState%
if ShiftState = D
   {
   ;MsgBox At least one Shift key is down.
   Tooltip,,5,5,1
   send {Shift up}
   }
if ShiftState = U
   {
   ;MsgBox Neither Shift key is down.
   Tooltip, Shift,5,5,1
   send {Shift down}
   }
return

SusScript:
Suspend on
sleep 3000
Suspend off
return

ReloadScript:
Reload
MsgBox,0,,Reloaded
return

Exit:
ExitApp


; --------- HotKeyIt's "RapidHotkey" function ---------
; http://www.autohotkey.com/forum/viewtopic.php?t=38795


RapidHotkey(keystroke, times="2", delay=0.2, IsLabel=0)
{
   Pattern := Morse(delay*1000)
   If (StrLen(Pattern) < 2 and Chr(Asc(times)) != "1")
      Return
   If (times = "" and InStr(keystroke, """"))
   {
      Loop, Parse, keystroke,""   
         If (StrLen(Pattern) = A_Index+1)
            continue := A_Index, times := StrLen(Pattern)
   }
   Else if (RegExMatch(times, "^\d+$") and InStr(keystroke, """"))
   {
      Loop, Parse, keystroke,""
         If (StrLen(Pattern) = A_Index+times-1)
            times := StrLen(Pattern), continue := A_Index
   }
   Else if InStr(times, """")
   {
      Loop, Parse, times,""
         If (StrLen(Pattern) = A_LoopField)
            continue := A_Index, times := A_LoopField
   }
   Else if (times = "")
      continue := 1, times := 2
   Else if (times = StrLen(Pattern))
      continue = 1
   If !continue
      Return
   Loop, Parse, keystroke,""
      If (continue = A_Index)
         keystr := A_LoopField
   Loop, Parse, IsLabel,""
      If (continue = A_Index)
         IsLabel := A_LoopField
   hotkey := RegExReplace(A_ThisHotkey, "[\*\~\$\#\+\!\^]")
   IfInString, hotkey, %A_Space%
      StringTrimLeft, hotkey,hotkey,% InStr(hotkey,A_Space,1,0)
ControlGetFocus,control,A
WinGetClass,class,A
If ((class!="CabinetWClass" and class!="ExploreWClass" and class!="IEFrame") or InStr(control,"Edit"))
   Loop % times
      backspace .= "{Backspace}"
   keywait = Ctrl|Alt|Shift|LWin|RWin
   Loop, Parse, keywait, |
      KeyWait, %A_LoopField%
   If ((!IsLabel or (IsLabel and IsLabel(keystr))) and InStr(A_ThisHotkey, "~") and !RegExMatch(A_ThisHotkey
   , "i)\^[^\!\d]|![^\d]|#|Control|Ctrl|LCtrl|RCtrl|Shift|RShift|LShift|RWin|LWin|Alt|LAlt|RAlt|Escape|BackSpace|F\d\d?|"
   . "Insert|Esc|Escape|BS|Delete|Home|End|PgDn|PgUp|Up|Down|Left|Right|ScrollLock|CapsLock|NumLock|AppsKey|"
   . "PrintScreen|CtrlDown|Pause|Break|Help|Sleep|Browser_Back|Browser_Forward|Browser_Refresh|Browser_Stop|"
   . "Browser_Search|Browser_Favorites|Browser_Home|Volume_Mute|Volume_Down|Volume_Up|MButton|RButton|LButton|"
   . "Media_Next|Media_Prev|Media_Stop|Media_Play_Pause|Launch_Mail|Launch_Media|Launch_App1|Launch_App2"))
      Send % backspace
   If (WinExist("AHK_class #32768") and hotkey = "RButton")
      WinClose, AHK_class #32768
   If !IsLabel
      Send % keystr
   else if IsLabel(keystr)
      Gosub, %keystr%
   Return
}   
Morse(timeout = 400) { ;by Laszo -> http://www.autohotkey.com/forum/viewtopic.php?t=16951 (Modified to return: KeyWait %key%, T%tout%)
   tout := timeout/1000
   key := RegExReplace(A_ThisHotKey,"[\*\~\$\#\+\!\^]")
   IfInString, key, %A_Space%
   StringTrimLeft, key, key,% InStr(key,A_Space,1,0)
   Loop {
      t := A_TickCount
      KeyWait %key%, T%tout%
     Pattern .= A_TickCount-t > timeout
     If(ErrorLevel)
      Return Pattern
     KeyWait %key%,DT%tout%
      If (ErrorLevel)
         Return Pattern
   }
}

Still some slight problems with the RapidHotkey function, but I think some new bugs are being introduced as old ones are taken out!  So this is probably the best to use, though it's not actually the newest.  Keys:

Ctrl+Esc = simulate holding down Alt+Win for 4 seconds; I can then hit just one alphanumeric key to use one of my app-launching hotkeys in Executor
Alt+Esc = toggles Shift on and off (with a tooltip notification on the top left of the screen)
Ctrl + Backspace - call the AltTabMenu, which can then be navigated using the arrow keys (or touchpad), Enter to accept, Esc to cancel
"Ctrl" 2x (3 times) = Tab
"a" 3x = Ctrl+Alt+A (shortcut key for Keepass' autofill feature)
"e" - 3x = Executor, 4x = Windows' Run dialogue, 5x = My Computer
"q" - 2x = quit focused application (Alt+F4)
Esc - 3x = suspend this AHK script for 3 seconds, 4x = reload this script, 5x = exit this script

I'm pretty convinced by now that the mouse gestures program StrokeIt, or something similar, will be an important part of an iPazzPort solution (TPFC entry linked, not program's homepage).  Attached to this post is the "Actions" folder (zipped) that I'm using with a few additions that I find helpful (up-stroke for PgUp, down for PgDn, down-left for home, down-right for end, up-left to go back a tab in IE, up-right to go forward a tab, S to start a slideshow in PowerPoint, reverse-S to start from current slide, N to make a new folder in Windows Explorer, maybe more to come?)  Just replace the "Actions" folder that comes with the program (not Default\Actions though!)  I haven't asked StrokeIt's developer about redistribution or anything, so that's why I'm attaching only the Actions folder.  Sorry to make the process harder on anyone wanting to test!

As mentioned above, I also use Executor as a portable launcher (it go off either hotkeys or text autocompletion, kinda like in the Vista menu), but I figure that's more personalized, and everyone may need to configure that for their own needs, if they even choose to use it.

Hope this project is helpful to others, and that I'll be able to get some good feedback toward improving this stuff!  Thanks!

3
Post New Requests Here / Re: "PazzPort Helper"
« on: May 19, 2010, 09:05 AM »
Found a small bug in the RapidHotkeys function; new version of my script coming soon...

"perhaps the only way you can improve any of this is to make it easy to remember how to use. or make it very intuitive. not sure...if it's necessary."  It probably is; a person can only conveniently remember so many key combinations!  Simplicity/intuitiveness (perhaps with expanded functionality) is part of what I'm hoping someone else has a brainstorm about!

4
Post New Requests Here / Re: "PazzPort Helper"
« on: May 18, 2010, 03:14 PM »
Thanks, I'll look into all that...

Here's the current version of the above script (yep, still playing with that too):

#SingleInstance force

;Alt+F4
; missing: Function keys, Win key, Tab, Shift, Home, End, PgUp, PgDown, Prnt Scrn,


Ctrl & Backspace::AltTabMenu
~Ctrl::RapidHotkey("{TAB}", 2, 0.2)
~a::RapidHotkey("!^a", 3, 0.2)
~q::RapidHotkey("!{F4}",2)
~e::RapidHotkey("#z""#r""#e",3, 0.2)
~Esc::RapidHotkey("SusScript""ReloadScript""exit", 3, 0.2, 1)

Ctrl & Esc::
CoordMode, ToolTip
Tooltip,Alt+Win,45,5,2
send {LAlt down}
send {LWin down}
sleep 3000
send {LWin up}
send {LAlt up}
Tooltip,,,,2
return

Alt & Esc::
CoordMode, ToolTip
GetKeyState, ShiftState, Shift
;MsgBox %ShiftState%
if ShiftState = D
   {
   ;MsgBox At least one Shift key is down.
   Tooltip,,5,5,1
   send {Shift up}
   }
if ShiftState = U
   {
   ;MsgBox Neither Shift key is down.
   Tooltip, Shift,5,5,1
   send {Shift down}
   }
return

SusScript:
Suspend on
sleep 3000
Suspend off
return

ReloadScript:
Reload
MsgBox,0,,Reloaded
return

Exit:
ExitApp


; --------- HotKeyIt's "RapidHotkey" function ---------
; http://www.autohotkey.com/forum/viewtopic.php?t=38795

RapidHotkey(keystroke, times="", delay=0.15, IsLabel=0)
{
   Pattern := Morse(delay*1000)
   If (StrLen(Pattern) < 2 and Chr(Asc(times)) != "1")
      Return
   If (times = "" and InStr(keystroke, """"))
   {
      Loop, Parse, keystroke,""   
         If (StrLen(Pattern) = A_Index+1)
            continue := A_Index, times := StrLen(Pattern)
   }
   Else if (RegExMatch(times, "^\d+$") and InStr(keystroke, """"))
   {
      Loop, Parse, keystroke,""
         If (StrLen(Pattern) = A_Index+times-1)
            times := StrLen(Pattern), continue := A_Index
   }
   Else if InStr(times, """")
   {
      Loop, Parse, times,""
         If (StrLen(Pattern) = A_LoopField)
            continue := A_Index, times := A_LoopField
   }
   Else if (times = "")
      continue = 1, times = 1
   Else if (times = StrLen(Pattern))
      continue = 1
   If !continue
      Return
   Loop, Parse, keystroke,""
      If (continue = A_Index)
         keystr := A_LoopField
   Loop, Parse, IsLabel,""
      If (continue = A_Index)
         IsLabel := A_LoopField
   hotkey := RegExReplace(A_ThisHotkey, "[\*\~\$\#\+\!\^]")
   Loop % times
      backspace .= "{Backspace}"
   keywait = Ctrl|Alt|Shift|LWin|RWin
   Loop, Parse, keywait, |
      KeyWait, %A_LoopField%
   If ((!IsLabel or (IsLabel and IsLabel(keystr))) and InStr(A_ThisHotkey, "~") and !RegExMatch(A_ThisHotkey
   , "i)\^[^\!\d]|![^\d]|#|Control|Ctrl|LCtrl|RCtrl|Shift|RShift|LShift|RWin|LWin|Escape|BackSpace|F\d\d?|"
   . "Insert|Esc|Escape|BS|Delete|Home|End|PgDn|PgUp|Up|Down|Left|Right|ScrollLock|CapsLock|NumLock|AppsKey|"
   . "PrintScreen|CtrlDown|Pause|Break|Help|Sleep|Browser_Back|Browser_Forward|Browser_Refresh|Browser_Stop|"
   . "Browser_Search|Browser_Favorites|Browser_Home|Volume_Mute|Volume_Down|Volume_Up|MButton|RButton|LButton|"
   . "Media_Next|Media_Prev|Media_Stop|Media_Play_Pause|Launch_Mail|Launch_Media|Launch_App1|Launch_App2"))
      Send % backspace
   If (WinExist("AHK_class #32768") and hotkey = "RButton")
      WinClose, AHK_class #32768
   If !IsLabel
      Send % keystr
   else if IsLabel(keystr)
      Gosub, %keystr%
   Return
}   
Morse(timeout = 400) { ;by Laszo -> http://www.autohotkey.com/forum/viewtopic.php?t=16951 (Modified to return: KeyWait %key%, T%tout%)
   static lastkey
   tout := timeout/1000
   key := RegExReplace(A_ThisHotKey,"[\*\~\$\#\+\!\^]")
   Loop {
      t := A_TickCount
      KeyWait %key%, T%tout%
     Pattern .= A_TickCount-t > timeout
     If(ErrorLevel)
      Return Pattern
     KeyWait %key%,DT%tout%
      If (ErrorLevel)
         Return Pattern
   }
}

5
Post New Requests Here / Re: "PazzPort Helper"
« on: May 17, 2010, 05:52 PM »
Well, it's interesting, as is OkayKeybees (linked to from mouser's page).  But
1) TapTap only seems to accept single- or double-tap, not as configurable as HotKeyIt's RapidHotkey function;
2) I think the temporary holding-down of certain hotkeys might be an important part of flexibility in this.  Maybe even some sort of Shift lock/toggle thing, where I click one place in a document, toggle Shift-lock on, click another place to highlight everything in between, toggle Shift-lock off. 

And part of my underlying question is, is this whole approach too complex?  Is there some out-of-the-box thinker who can say "Wait, what about this way that's easier to both implement for the developer and remember for the end-user?"  And I'd say, "Huh, never thought of that!"

6
Post New Requests Here / Re: "PazzPort Helper"
« on: May 17, 2010, 03:52 AM »
I guess one "missing piece" from the description of my "solution" above is a fairly extensively configured instance of Executor, also portable.  I have lots of Alt+Win+___ hotkeys defined, plus I can always type the first few letters of something and rely on autocomplete.  So Alt+Win is one of the combos I'm trying to reclaim here...

A description of what the script does so far (which is not that much) might be helpful:
Ctrl+Esc = simulate holding down Alt+Win for 3 seconds; I can then hit just one alphanumeric key to use one of my hotkeys mentioned above
Alt+Esc = simulate holding Shift down for 3 seconds
Ctrl + Backspace - call the AltTabMenu, which can then be navigated using the arrow keys, Enter to accept, Esc to cancel
"t" 3x (3 times) = Tab
"a" 3x = Ctrl+Alt+A (shortcut key for Keepass' autofill feature)
"e" - 2x = Executor, 3x = Windows' Run dialogue, 4x = My Computer
"q" - 2x = launch Q-Dir via Executor, 3x = quit focused application (Alt+F4)
Esc - 3x = suspend this AHK script, 4x = reload this script, 5x = exit this script

7
Post New Requests Here / "PazzPort Helper"
« on: May 17, 2010, 02:27 AM »


So I recently bought a little gadget called an iPazzPort (among other aliases) and am getting another as a present for someone.  Basically, this thing is a tiny wireless QWERTY keyboard and touchpad (picture here, review here).  I'm generally enjoying it; wouldn't want to do extensive typing on it at all, though.  But--I'm finding out just how spoiled I usually am in terms of navigation on a laptop.  This thing doesn't have a scroll region on the touchpad, and it's missing several important (to me) keys: Function keys, Win key, Tab, Shift, Home, End, PgUp, PgDown, Prnt Scrn, etc.  You can see the keyboard layout in the above picture.  Yep, no Alt+F4, no Alt+Tab, no Win+E, no Ctrl+Shift+End, etc. - all the shortcut keys that I normally use so often.

Especially since I'll be "gifting" one of these shortly, I'm trying to figure out a way to fill the void as far as navigation goes.  I've been messing around with a combination of the portable mouse gestures program StrokeIt and an AutoHotkey script.  My goal is to have something as simple, yet functional, as possible.  Here's what I was thinking so far, but if anyone has better ideas I don't mind scrapping this.  This has a lot of re-mapping to remember, which can just get confusing.  I'm a newbie at AHK and the below took me an embarrassing number of hours, so if someone else wants to start from scratch, I wouldn't mind that either...

#SingleInstance force

;Alt+F4
; missing: Function keys, Win key, Tab, Shift, Home, End, PgUp, PgDown, Prnt Scrn,


; `::Tab
Ctrl & Backspace::AltTabMenu
~t::RapidHotkey("{TAB}",3, 0.2)
~a::RapidHotkey("!^a", 3, 0.2)
~q::RapidHotkey("#zqdir{Enter}""!{F4}",2)
~e::RapidHotkey("#z""#r""#e",3, 0.2)
~Esc::RapidHotkey("SusScript""ReloadScript""exit", 3, 0.2, 1) ;Press Esc 5 times rapidly to exit this script

Ctrl & Esc::
send {LAlt down}
send {LWin down}
sleep 1500
send {LWin up}
send {LAlt up}
return

Alt & Esc::
send {Shift down}
sleep 3000
send {Shift up}
return

SusScript:
Suspend on
sleep 3000
Suspend off
return

ReloadScript:
Reload
MsgBox,0,,Reloaded
return

Exit:
ExitApp


; ------- HotKeyIt's "RapidHotkey" function --------

RapidHotkey(keystroke, times="", delay=0.15, IsLabel=0)
{
   Pattern := Morse(delay*1000)
   If (StrLen(Pattern) < 2 and Chr(Asc(times)) != "1")
      Return
   If (times = "" and InStr(keystroke, """"))
   {
      Loop, Parse, keystroke,""   
         If (StrLen(Pattern) = A_Index+1)
            continue := A_Index, times := StrLen(Pattern)
   }
   Else if (RegExMatch(times, "^\d+$") and InStr(keystroke, """"))
   {
      Loop, Parse, keystroke,""
         If (StrLen(Pattern) = A_Index+times-1)
            times := StrLen(Pattern), continue := A_Index
   }
   Else if InStr(times, """")
   {
      Loop, Parse, times,""
         If (StrLen(Pattern) = A_LoopField)
            continue := A_Index, times := A_LoopField
   }
   Else if (times = "")
      continue = 1, times = 1
   Else if (times = StrLen(Pattern))
      continue = 1
   If !continue
      Return
   Loop, Parse, keystroke,""
      If (continue = A_Index)
         keystr := A_LoopField
   Loop, Parse, IsLabel,""
      If (continue = A_Index)
         IsLabel := A_LoopField
   hotkey := RegExReplace(A_ThisHotkey, "[\*\~\$\#\+\!\^]")
   Loop % times
      backspace .= "{Backspace}"
   keywait = Ctrl|Alt|Shift|LWin|RWin
   Loop, Parse, keywait, |
      KeyWait, %A_LoopField%
   If ((!IsLabel or (IsLabel and IsLabel(keystr))) and InStr(A_ThisHotkey, "~") and !RegExMatch(A_ThisHotkey
   , "i)\^[^\!\d]|![^\d]|#|Control|Ctrl|LCtrl|RCtrl|Shift|RShift|LShift|RWin|LWin|Escape|BackSpace|F\d\d?|"
   . "Insert|Esc|Escape|BS|Delete|Home|End|PgDn|PgUp|Up|Down|Left|Right|ScrollLock|CapsLock|NumLock|AppsKey|"
   . "PrintScreen|CtrlDown|Pause|Break|Help|Sleep|Browser_Back|Browser_Forward|Browser_Refresh|Browser_Stop|"
   . "Browser_Search|Browser_Favorites|Browser_Home|Volume_Mute|Volume_Down|Volume_Up|MButton|RButton|LButton|"
   . "Media_Next|Media_Prev|Media_Stop|Media_Play_Pause|Launch_Mail|Launch_Media|Launch_App1|Launch_App2"))
      Send % backspace
   If (WinExist("AHK_class #32768") and hotkey = "RButton")
      WinClose, AHK_class #32768
   If !IsLabel
      Send % keystr
   else if IsLabel(keystr)
      Gosub, %keystr%
   Return
}   
Morse(timeout = 400) { ;by Laszo -> http://www.autohotkey.com/forum/viewtopic.php?t=16951 (Modified to return: KeyWait %key%, T%tout%)
   static lastkey
   tout := timeout/1000
   key := RegExReplace(A_ThisHotKey,"[\*\~\$\#\+\!\^]")
   Loop {
      t := A_TickCount
      KeyWait %key%, T%tout%
     Pattern .= A_TickCount-t > timeout
     If(ErrorLevel)
      Return Pattern
     KeyWait %key%,DT%tout%
      If (ErrorLevel)
         Return Pattern
   }
}

So far my "strategy" has been to use not-likely-used key combinations (e.g. Ctrl+Esc), or multiple key presses with the RapidHotkey function.  But there are only so many unused key combinations, and I don't know that they might do something horrible in some programs.  And RapidHotkey uses backspace to clear the triggering text entry, which of course causes something else entirely in an Explorer or Internet Explorer window.  Plus it's hard to remember, potentially unreliable if the iPazzPort/my fingers are finicky, etc.  One of the other things I was doing is to send "down" messages for certain unavailable modifier keys, sleep for a few seconds to give me time for key combinations, then send the "up" messages.  Again, there are probably better, more efficient, more easily remembered ways of doing that? 

Help!    :)

8
Finished Programs / Re: ReplaceAbsolutePaths (RAP)
« on: March 17, 2010, 07:20 PM »
Sorry!  I had thought the Coding Snacks section was only for things requested by others.  Guess I shoulda asked before posting... :redface:

For future reference, what's the difference between posting in Coding Snacks or the "Other programs" section?

9
Finished Programs / ReplaceAbsolutePaths (RAP)
« on: March 15, 2010, 08:42 PM »
ReplaceAbsolutePaths (RAP) - a small app for the portable-software-lovers out there, to maybe make their lives just a little easier... 

From the (admittedly long) readme:
"I was testing a program for portability recently and discovered that, although it could be portable, the process required a fair amount of manual editing of text-based settings files, converting absolute paths to relative ones.  This is also the case in many program launchers such as Executor, SlickRun, or Launchy, as well as other software like MetaPath or QuickWayToFolders."
"Sometimes if a file is 'buried' in enough levels of folders and subfolders, it can get confusing how many '..\' to use."
"Basically, this program [RAP] has two general functions: calculating a relative path when given two absolute ones, and offering to replace any instances of an absolute path with the newly calculated relative one within a particular text-based settings file."

RAP should probably be considered still in beta...  The first attachment at the bottom of this post is version 0.8.9, complete with a Readme.  The second is an older 0.8.2 version, .exe only.  This program makes a .ini file in its own folder, hence it is also portable.

If you use the text-replace function,
1) Please first double-check what changes it will do to which file!
2) When doing its text-replace, RAP should make a backup of the original file with the added extension .rbak, so if something goes wrong, you can erase the changed one and rename the *.rbak file to its original filename (simply erase ".rbak").

Alright, hope this is helpful to y'all!

10
Heh - I'm making my own snax!  :lol:

You define which keypresses to send to which program in the .ini file (generated on first run).  You can copy & rename the .exe or script, have a matching-named .ini file (also automagically generated), and therefore run multiple unique instances at the same time.

There are 3 ways to set the countdown timer 'til when the above-mentioned keypresses are sent.  In order of precedence:
1) command-line parameter (I use this script through Executor); 2) user input via initial input box; 3) the 'ctimer' field in the .ini file.

Enjoy!
*edit* I hope to have an actual icon for this, maybe by sometime next week...

applicationname=WaitAndSend

versionnumber=0.5.4

; by Onesimus Prime
; 2010
; For now, right-click on the tray icon to exit...

; Countdown timer code (which is the majority of what's below) from https://www.donationcoder.com/forum/index.php?topic=14895.0
; Some .ini-related code from Skrommel's templates

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
#persistent

; gets current script name and 'ditches' the file extension so that each script instance can have its own .ini file...
CurrentScriptNm=%A_ScriptName%
stringGetPos, WhereExtension, CurrentScriptNm, ., R
stringLeft, CurrentScriptNm, CurrentScriptNm, WhereExtension
; Msgbox %CurrentScriptNm% ;error-checking

IfNotExist,%CurrentScriptNm%.ini
{
  ini=[Settings]
  ini=%ini%`n
  ini=%ini%`nfloatingtimer=1
  ini=%ini%`n  `; 0 is false (no), 1 is true (yes).
  ini=%ini%`n  `; Even without a floating timer, you can mouse over the tray icon to get the current countdown.
  ini=%ini%`n
  ini=%ini%`nctimer=20
  ini=%ini%`n  `; This sets the countdown timer (in minutes), unless it is over-ridden by launching the script with a numeric parameter or by entering a number into the program's initial input box.
  ini=%ini%`n  `; Therefore the order of precedence is 1) command-line parameter; 2) user input via initial input box; 3) the above 'ctimer' field in this .ini file.
  ini=%ini%`n  `; It is measured in minutes (and decimals are valid).
  ini=%ini%`n
  ini=%ini%`ntargetprogram=ahk_class mp3DCWndClass
  ini=%ini%`n  `; This is the Title or Class of the window of the target program, the program that you wish to send the below keystrokes to.  
  ini=%ini%`n  `; By default, this line includes "ahk_class mp3DCWndClass", summoning a window with the class matching mp3DirectCut (mp3DC).
  ini=%ini%`n  `; Another option would be "ahk_class REAPERwnd", summoning a window with the class matching the REAPER recording program.
  ini=%ini%`n
  ini=%ini%`nkeypresses={Space}
  ini=%ini%`n  `; The keystrokes here will be sent to the program listed above.  Your options, and the various formatting restrictions, are viewable at http://www.autohotkey.com/docs/commands/Send.htm
  ini=%ini%`n  `; By default, this line simulates a press of the Spacebar(using {Space}),  which (by mp3DC's and Reaper's defaults) toggles "play" and "stop" (and thus can be used to stop recording!)
  ini=%ini%`n  `; You could also use r{Space} to send r, then Space, which should (hopefully) start recording in mp3DC;
  ini=%ini%`n  `; or {CTRLDOWN}r{CTRLUP} to send Ctrl+R, Reaper's default key combo to START recording.
  ini=%ini%`n
  ini=%ini%`nendmsg=0
  ini=%ini%`n  `; This determines whether to show a message box after sending the keypresses, or simply to exit quietly.
  ini=%ini%`n  `; 0 is false (no MsgBox), 1 is true (yes).
  FileAppend,%ini%,%CurrentScriptNm%.ini
  ini=
}

IniRead, floatingtimer, %CurrentScriptNm%.ini, Settings, floatingtimer

IniRead, ctimer, %CurrentScriptNm%.ini, Settings, ctimer

IniRead, targetprogram, %CurrentScriptNm%.ini, Settings, targetprogram
IniRead, keypresses, %CurrentScriptNm%.ini, Settings, keypresses
IniRead, endmsg, %CurrentScriptNm%.ini, Settings, endmsg



CoordMode, ToolTip, Screen
tt = %1%

if not tt
{
 InputBox, InputMin, Enter timer length, `nPlease enter below how many minutes the timer `nshould be set for. (Decimals are okay.) `nIf this is left blank`, the value set via the .ini file `n(currently %ctimer% minutes) will be used.,,,185
 if InputMin is number
 {
    tt = %InputMin%
 }
}

if not tt
   tt = %ctimer%
;tt = 120
time := Convert_Milliseconds(tt)
Sec := (tt * 60)

SetTimer, nMessage, %time%
countdown(Sec)
return

nMessage:
SetTimer, nMessage, Off

WinActivate %targetprogram%
WinWaitActive %targetprogram%
send %keypresses%
sleep 1000
ifequal, endmsg, 1, MsgBox Your keypresses have been sent to the requested program.
;Gui, +MinimizeBox
;GUi, -sysmenu
;gui, +toolwindow
;Gui, Add, Button, w130, DONE - hit 'O' for OK
;Gui, Show, x1 y1, %CurrentScriptNm% %versionnumber%

;KeyWait, o, D
;Tooltip ,, 2, 980
;Gui Destroy

exitapp


Convert_MilliSeconds(time,MS = 1000,M = 60)
{
   return MS*M*time
}

countdown(p_count="") {
   countdown_time:=p_count
   countdown_date=16010101
   countdown_date+=%countdown_time%, s
   Loop {
      If (countdown_date >= 16010101010000){
        FormatTime, mmss, %countdown_date%, hh:mm:ss
     }else{
      FormatTime, mmss, %countdown_date%, mm:ss
      }
      ;msgbox %countdown_date%`n%hhmmss%
     ;//SB_SetText(mmss, 2)
      global floatingtimer
      ifequal, floatingtimer, 1, Tooltip, %mmss%, 2000,14
      Menu,Tray,Tip,Time Remaining: %mmss%
      Sleep, 1000
      countdown_date+=-1, s
      ;//IfLess, countdown_date, 16010101, break
      if (A_Index>countdown_time) {
         break
      }
   }
}


11
Okay, in the last section I'm trying to make the floating tooltip that continuously counts down optional.
countdown(p_count="") {
   countdown_time:=p_count
   countdown_date=16010101
   countdown_date+=%countdown_time%, s
   Loop {
      If (countdown_date >= 16010101010000){
        FormatTime, mmss, %countdown_date%, hh:mm:ss
     }else{
      FormatTime, mmss, %countdown_date%, mm:ss
      }
      ;msgbox %countdown_date%`n%hhmmss%
     ;//SB_SetText(mmss, 2)
   global floatingtimer
      ifequal, %floatingtimer%, 1, Tooltip, %mmss%, 2000,14
      Menu,Tray,Tip,Time Remaining: %mmss%
      Sleep, 1000
      countdown_date+=-1, s
      ;//IfLess, countdown_date, 16010101, break
      if (A_Index>countdown_time) {
         break
      }
   }
}

If I read the variable with
      IniRead, floatingtimer, %applicationname%.ini, Settings, floatingtimer

then why doesn't
      global floatingtimer
      ifequal, %floatingtimer%, 1, Tooltip, %mmss%, 2000,14
seem to have any effect?  The variable has the right value, but the timer tooltip still isn't showing up...

*yet another edit*
Okay, I think I got it - not because I necessarily understand what's going on, but because I looked at the .chm a bit more and kept on trying things until something worked!
applicationname=WaitAndSend
versionnumber=0.6

; by Onesimus Prime
; 2009
; For now, right-click on the tray icon to exit...

; Countdown timer code (which is the majority of what's below) from https://www.donationcoder.com/forum/index.php?topic=14895.0
; Some .ini-related code from Skrommel's templates

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
#persistent

IfNotExist,%applicationname%.ini
{
  ini=[Settings]
  ini=%ini%`n
  ini=%ini%`nfloatingtimer=0
  ini=%ini%`n  `; 0 is false (no), 1 is true (yes).
  ini=%ini%`n  `; Even without a floating timer, you can mouse over the tray icon to get the current countdown.
  ini=%ini%`n
  ini=%ini%`nctimer=20
  ini=%ini%`n  `; This sets the countdown, unless it is over-ridden by launching the script with a numeric parameter.
  ini=%ini%`n  `; It is measured in minutes (and decimals are valid).
  ini=%ini%`n
  ini=%ini%`ntargetprogram=ahk_class REAPERwnd
  ini=%ini%`n  `; this is the Title or Class of the window of the target program, the program that you wish to send the below keystrokes to. 
  ini=%ini%`n  `; By default, this line includes "ahk_class REAPERwnd", summoning a window with the class matching the REAPER recording program.
  ini=%ini%`n
  ini=%ini%`nkeypresses={Space}
  ini=%ini%`n  `;the keystrokes here will be sent to the program listed above.  Your options, and the various formatting restrictions, are viewable at http://www.autohotkey.com/docs/commands/Send.htm
  ini=%ini%`n  `; By default, this line simulates a press of the Spacebar(using {Space}),  which (by Reaper's defaults) toggles "play" and "stop" (and thus can be used to stop recording!)
  ini=%ini%`n  `; You could also use {CTRLDOWN}r{CTRLUP} to send Ctrl+R, Reaper's default key combo to START recording.
  ini=%ini%`n
  ini=%ini%`nendmsg=0
  ini=%ini%`n  `; This determines whether to show a message box after sending the keypresses, or simply to exit quietly.
  ini=%ini%`n  `; 0 is false (no MsgBox), 1 is true (yes).
  FileAppend,%ini%,%applicationname%.ini
  ini=
}

IniRead, floatingtimer, %applicationname%.ini, Settings, floatingtimer

IniRead, ctimer, %applicationname%.ini, Settings, ctimer

IniRead, targetprogram, %applicationname%.ini, Settings, targetprogram
IniRead, keypresses, %applicationname%.ini, Settings, keypresses
IniRead, endmsg, %applicationname%.ini, Settings, endmsg

CoordMode, ToolTip, Screen
tt = %1%
if not tt
   tt = %ctimer%
;tt = 120
time := Convert_Milliseconds(tt)
Sec := (tt * 60)

SetTimer, nMessage, %time%
countdown(Sec)
return

nMessage:
SetTimer, nMessage, Off

WinActivate %targetprogram%
WinWaitActive %targetprogram%
send %keypresses%
sleep 1000
ifequal, endmsg, 1, MsgBox Your keypresses have been sent to the requested program.
;Gui, +MinimizeBox
;GUi, -sysmenu
;gui, +toolwindow
;Gui, Add, Button, w130, DONE - hit 'O' for OK
;Gui, Show, x1 y1, %applicationname% %versionnumber%

;KeyWait, o, D
;Tooltip ,, 2, 980
;Gui Destroy

exitapp


Convert_MilliSeconds(time,MS = 1000,M = 60)
{
   return MS*M*time
}

countdown(p_count="") {
   countdown_time:=p_count
   countdown_date=16010101
   countdown_date+=%countdown_time%, s
   Loop {
      If (countdown_date >= 16010101010000){
        FormatTime, mmss, %countdown_date%, hh:mm:ss
     }else{
      FormatTime, mmss, %countdown_date%, mm:ss
      }
      ;msgbox %countdown_date%`n%hhmmss%
     ;//SB_SetText(mmss, 2)
      global floatingtimer
      ifequal, floatingtimer, 1, Tooltip, %mmss%, 2000,14
      Menu,Tray,Tip,Time Remaining: %mmss%
      Sleep, 1000
      countdown_date+=-1, s
      ;//IfLess, countdown_date, 16010101, break
      if (A_Index>countdown_time) {
         break
      }
   }
}

12
I so should have been sleeping... *chagrined*
Okay, I first wrote a simple one like what you described, skwire--about 4 lines is all it takes, I didn't realize it'd be so simple!  But then I couldn't leave well enough alone...  I did a forum search, grabbing the countdown timer code from https://www.donation...ex.php?topic=14895.0 and integrating the use of an .ini file (thanks to Skrommel's stuff), and the below is the (seemingly working) monstrosity that resulted  ;D :
applicationname=WaitAndSend
versionnumber=0.5

; by Onesimus Prime
; 2009
; For now, right-click on the tray icon to exit...

; Countdown timer code (which is the majority of what's below) from

https://www.donationcoder.com/forum/index.php?topic=14895.0
; Some .ini-related code from Skrommel's templates

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey

releases.
SendMode Input  ; Recommended for new scripts due to its superior speed and

reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
#persistent

IfNotExist,%applicationname%.ini
{
  ini=[Settings]
  ini=%ini%`n
  ini=%ini%`nctimer=20
  ini=%ini%`n  `; This sets the countdown, unless it is over-ridden by

launching the script with a numeric parameter.
  ini=%ini%`n  `; It is measured in minutes (and decimals are valid).
  ini=%ini%`n
  ini=%ini%`ntargetprogram=ahk_class REAPERwnd
  ini=%ini%`n  `; this is the Title or Class of the window of the target

program, the program that you wish to send the below keystrokes to. 
  ini=%ini%`n  `; By default, this line includes "ahk_class REAPERwnd",

summoning a window with the class matching the REAPER recording program.
  ini=%ini%`n
  ini=%ini%`nkeypresses={Space}
  ini=%ini%`n  `;the keystrokes here will be sent to the program listed above.

 Your options, and the various formatting restrictions, are viewable at

http://www.autohotkey.com/docs/commands/Send.htm
  ini=%ini%`n  `; By default, this line simulates a press of the Spacebar

(using {Space}),  which (by Reaper's defaults) toggles "play" and "stop" (and

thus can be used to stop recording!)
  ini=%ini%`n  `; You could also use {CTRLDOWN}r{CTRLUP} to send Ctrl+R,

Reaper's default key combo to START recording.
  FileAppend,%ini%,%applicationname%.ini
  ini=
}

IniRead, ctimer, %applicationname%.ini, Settings, ctimer

IniRead, targetprogram, %applicationname%.ini, Settings, targetprogram
IniRead, keypresses, %applicationname%.ini, Settings, keypresses

CoordMode, ToolTip, Screen
tt = %1%
if not tt
   tt = %ctimer%
;tt = 120
time := Convert_Milliseconds(tt)
Sec := (tt * 60)

SetTimer, nMessage, %time%
countdown(Sec)
return

nMessage:
SetTimer, nMessage, Off

WinActivate %targetprogram%
WinWaitActive %targetprogram%
send %keypresses%
sleep 1000
; MsgBox Your keypresses have been sent to the requested program.
Gui, +MinimizeBox
GUi, -sysmenu
gui, +toolwindow
Gui, Add, Button, w130, DONE - hit 'O' for OK
Gui, Show, x1 y1, %applicationname% %versionnumber%

KeyWait, o, D
Tooltip ,, 2, 980
Gui Destroy
exitapp


Convert_MilliSeconds(time,MS = 1000,M = 60)
{
   return MS*M*time
}

countdown(p_count="") {
   countdown_time:=p_count
   countdown_date=16010101
   countdown_date+=%countdown_time%, s
   Loop {
      If (countdown_date >= 16010101010000){
        FormatTime, mmss, %countdown_date%, hh:mm:ss
     }else{
      FormatTime, mmss, %countdown_date%, mm:ss
      }
      ;msgbox %countdown_date%`n%hhmmss%
     ;//SB_SetText(mmss, 2)
      Tooltip, %mmss%, 2000,14
      Menu,Tray,Tip,Time Remaining: %mmss%
      Sleep, 1000
      countdown_date+=-1, s
      ;//IfLess, countdown_date, 16010101, break
      if (A_Index>countdown_time) {
         break
      }
   }
}

You were right about a "locked" computer--it seems to wait until the computer is unlocked before executing the after-timer stuff.  One workaround, I guess, might be to use KidSafe Portable to "lock" the computer instead.  "Windows + L can cut off some processes (e.g. it always pauses my virus scanner and media player, and turns off my Internet); KidSafe doesn’t do that" (according to a quote here).

13
I forgot about "WinActivate and WinWaitActive" - I'll look into those.  I think I've used the other commands before. Thanks!

Oh, I forgot--will this still work if the computer's "locked"?

14
What I was kind of hoping for/envisioning was a portable, cross-browser (or at least IE-compatible) version of the CopyAllUrls extension for FireFox.  That extension, which is fairly flexible, can save the URLs and titles of open webpages across multiple tabs and even going back through a tab's history!  The user also defines the format for the output.

I downloaded the source for Skrommel's UrlHistory and tweaked it a bit as a first step toward this.  Right now, it uses the hard-coded shortcut keys Ctrl+Shift+C to copy the current IE tab's URL and title, Ctrl+Shift+V to paste all of these that have been copied (and empty the 'database' or whatever), Ctrl+Shift+E to empty the 'database' without pasting, and Ctrl+Shift+Q to quit.

Let me say that I don't really know AHK, so any and all alterations may be somewhat hack-ish, there's probably some now-unnecessary code, etc.  And yes, I found the thread with a similar request, but 1) I'm posting code  :), and 2) more importantly, I think my goals for this program and my implementation are slightly different...
;UrlCopy.ahk
;version 1.0.3
; changes: no longer puts URLs in tray menu
; grabs webpage address and name from current IE tab
;Skrommel @ 2006
;modified by Onesimus Prime


#SingleInstance,Force
#Persistent

applicationname=UrlCopy

changed=0
Gosub,READINI
Gosub,TRAYMENU
Return

^+c::Send, {ALTDOWN}d{ALTUP}{CTRLDOWN}c{CTRLUP}
^+e::
  ; FileRecycle, %applicationname%.htm
  FileDelete, %applicationname%.htm
  FileAppend,,%applicationname%.htm
  Gosub,TRAYMENU
  Return
^+v::
  clipboard =   ;Empty the clipboard
  FileRead,clipboard,%applicationname%.htm
  Send,{CTRLDOWN}v{CTRLUP}
  clipboard =   ;Empty the clipboard
  FileDelete, %applicationname%.htm
  Return
^+q::
  FileDelete, %applicationname%.htm
  ExitApp
  Return

; IfWinActive,ahk_class IEFrame
OnClipboardChange:
If watch<>1
  Return
If A_EventInfo<>1
  Return
If changed=1
  Return
urls=
end=
Loop
{
  start=999999
  StringGetPos,pos1,clipboard,http,,%end%
  StringGetPos,pos2,clipboard,www,,%end%
  StringGetPos,pos3,clipboard,ftp,,%end%

  If (pos1>-1)
    start:=pos1
  If (pos2<start And pos2>-1)
    start:=pos2
  If (pos3<start And pos3>-1)
    start:=pos3
  If start=999999
    Break

  StringGetPos,pos4,clipboard,%A_Space%,,%start%
  StringGetPos,pos5,clipboard,%A_Tab%,,%start%
  StringGetPos,pos6,clipboard,`n,,%start%

  end:=start
  If (pos4>-1)
    end:=pos4
  If (pos5<end And pos5>-1)
    end:=pos5
  If (pos6<end And pos6>-1)
    end:=pos6
  If (end=start)
    StringLen,end,clipboard

  length:=end-start
  StringMid,url,clipboard,%start%,%length%
  If url<>
  {
    WinGetActiveTitle,title
    ; InputBox,title,%applicationname%,Please enter comment for`n%url%,,400,150,,,,,%title%
    ; If ErrorLevel=0
      StringReplace,TitleMinusIE,title, - Windows Internet Explorer
      AutoTrim Off
      urls=%A_Space%%A_Space%%A_Space%%urls%%url%  - %TitleMinusIE%`n
  }
}
If urls<>
{
  FileAppend,%urls%,%applicationname%.htm
}
GOSUB,TRAYMENU
Return



TRAYMENU:
Menu,Tray,DeleteAll
Menu,Tray,NoStandard
Menu,Tray,Add,%applicationname%,ADD
Menu,Tray,Default,%applicationname%
Menu,Tray,Add,
Menu,Tray,Add,&Add Url...,ADD
Menu,Tray,Add,&Edit Urls...,EDIT
Menu,Tray,Add,
Menu,Tray,Add,&Settings...,SETTINGS
Menu,Tray,Add,A&bout...,ABOUT
Menu,Tray,Add,E&xit,EXIT
Menu,Tray,Tip,%applicationname%
Return


EDIT:
RunWait,Notepad.exe %applicationname%.htm,,UseErrorLevel
Gosub,TRAYMENU
Return


ADD:
InputBox,url,%applicationname%,Please enter web address,,400,150,,,,,http://
If ErrorLevel<>0
  Return
InputBox,comment,%applicationname%,Please enter comment for`n%url%,,400,150
If ErrorLevel<>0
  Return
FileAppend,%url% - %comment%`n,%applicationname%.htm
Gosub,TRAYMENU
Return


OPEN:
StringSplit,url_,A_ThisMenuItem,%A_Space%-

If run=1
{
  IfNotInString,url_1,http
  IfNotInString,url_1,ftp
  url=http://%url_1%
  Run,%url_1%,,UseErrorLevel
}
If paste=1
{
  changed=1
  clipboard=%url_1%
}
Sleep,2000
changed=0
Return


SETTINGS:
Gosub,READINI
RunWait,Notepad.exe %applicationname%.ini
Gosub,READINI
Return


READINI:
IfNotExist,%applicationname%.ini
{
  ini=`;[Settings]
  ini=%ini%`n`;lines=20   `;number of lines to show in the tray menu
  ini=%ini%`n`;watch=1    `;1=yes 0=no  watch the clipboard for urls
  ini=%ini%`n`;run=1      `;1=yes 0=no  open the clicked url in the default browser
  ini=%ini%`n`;paste=1    `;1=yes 0=no  paste the clicked url to the clipboard
  ini=%ini%`n`;comment=1  `;1=yes 0=no  add a comment to the copied url
  ini=%ini%`n
  ini=%ini%`n[Settings]
  ini=%ini%`nlines=20
  ini=%ini%`nwatch=1
  ini=%ini%`nrun=1
  ini=%ini%`npaste=1
  ini=%ini%`ncomment=1
  FileAppend,%ini%,%applicationname%.ini
  ini=
}
IniRead,lines,%applicationname%.ini,Settings,lines
IniRead,watch,%applicationname%.ini,Settings,watch
IniRead,run,%applicationname%.ini,Settings,run
IniRead,paste,%applicationname%.ini,Settings,paste
IniRead,comment,%applicationname%.ini,Settings,comment
Return


ABOUT:
Gui,99:Destroy
Gui,99:Margin,20,20
Gui,99:Add,Picture,xm Icon1,%applicationname%.exe
Gui,99:Font,Bold
Gui,99:Add,Text,x+10 yp+10,%applicationname% v1.0.1
Gui,99:Font
Gui,99:Add,Text,y+10,Copies web page addresses and titles from Internet Explorer
; Gui,99:Add,Text,y+5,- Change settings using Settings in the tray menu
Gui,99:Add,Text,y+5,- Doubleclick the tray icon to add a url and comment manually

Gui,99:Add,Text,y+10,
Gui,99:Add,Picture,xm y+20 Icon5,%applicationname%.exe
Gui,99:Font,Bold
Gui,99:Add,Text,x+10 yp+10,1 Hour Software by Skrommel
Gui,99:Font
Gui,99:Add,Text,y+10,UrlCopy is based on Skrommel's UrlHistory, available at
Gui,99:Font,CBlue Underline
Gui,99:Add,Text,y+5 G1HOURSOFTWARE,www.1HourSoftware.com
Gui,99:Font

Gui,99:Add,Picture,xm y+20 Icon7,%applicationname%.exe
Gui,99:Font,Bold
Gui,99:Add,Text,x+10 yp+10,DonationCoder
Gui,99:Font
Gui,99:Add,Text,y+10,Please support the contributors at
Gui,99:Font,CBlue Underline
Gui,99:Add,Text,y+5 GDONATIONCODER,www.DonationCoder.com
Gui,99:Font

Gui,99:Add,Picture,xm y+20 Icon6,%applicationname%.exe
Gui,99:Font,Bold
Gui,99:Add,Text,x+10 yp+10,AutoHotkey
Gui,99:Font
Gui,99:Add,Text,y+10,This tool was made using the powerful
Gui,99:Font,CBlue Underline
Gui,99:Add,Text,y+5 GAUTOHOTKEY,www.AutoHotkey.com
Gui,99:Font

Gui,99:Show,,%applicationname% About
hCurs:=DllCall("LoadCursor","UInt",NULL,"Int",32649,"UInt") ;IDC_HAND
OnMessage(0x200,"WM_MOUSEMOVE")
Return

1HOURSOFTWARE:
  Run,http://www.1hoursoftware.com,,UseErrorLevel
Return

DONATIONCODER:
  Run,https://www.donationcoder.com,,UseErrorLevel
Return

AUTOHOTKEY:
  Run,http://www.autohotkey.com,,UseErrorLevel
Return

99GuiClose:
  Gui,99:Destroy
  OnMessage(0x200,"")
  DllCall("DestroyCursor","Uint",hCur)
Return

WM_MOUSEMOVE(wParam,lParam)
{
  Global hCurs
  MouseGetPos,,,,ctrl
  If ctrl in Static9,Static13,Static17
    DllCall("SetCursor","UInt",hCurs)
  Return
}
Return


EXIT:
ExitApp

Any ideas thus far?  Does anyone more knowledgeable and skilled (perhaps even Skrommel himself) want to "take this and run with it," bringing it closer to my original hopes of CopyAllUrls-like functionality?


*edit*
I did a lot of the modifications on this a while ago, before starting a "changelog."  But here's a relatively recent and very incomplete one:

0.1.3
Removed Skrommel's code that puts the URLs in the tray menu (below).  I hope this will fix the error message on extremely long URLs/titles, such as with Google Image results.
urls=
Loop,Read,%applicationname%.htm
{
  urls=%A_LoopReadLine%`n%urls%
  If (A_Index>lines)
    Break
}
Loop,Parse,urls,`n
{
  Menu,Tray,Add,%A_LoopField%,OPEN
}

0.1.2
Added a line to clear (erase) the HTML file of copied URLs when pasting!  Usually I was doing paste, clear - so why not combine the steps?  (Though this would be better as a user-defineable option, as would the shortcut keys...)


15
I may not know the depth of what I'm asking for, but here goes...

Would it be possible to have a program that, at a customizable system time or in 'x' mintes/seconds, makes sure that program 'y' is focused and sends it user-definable keystrokes?  And it'd be nice if this were "portable," not writing outside its own directory.

The situation prompting this request...
I'm recording a professor's lectures, and sometimes have to ditch class and leave the computer recording when he goes over-time.  After my next class, I come back and stop the recording--but this means that there's well over an hour of silence at the end of the recorded file!  And, even compressed, that takes up HD space, sometimes more than I have.  
So I was thinking it would be nice to have a program do something like, in my case, "in 10 minutes, switch to Reaper (going off of window titles?) and send key combination Ctrl+R (or whatever it is) to stop recording." (I guess by default, space is stop, but the possibility for key combinations--even a few combos in succession, maybe with "sleep" pauses in between, would maximize flexibility for other possible uses)

If anyone can help with this without too much trouble (or knows of something similar and portable), it'd be much appreciated!  Thanks!

*edit* - it's got a name now!

Pages: [1]