AutoHotkey Homepage AutoHotkey Community
Let's help each other out
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Simple run box replacement

 
Post new topic   Reply to topic    AutoHotkey Community Forum Index -> Scripts & Functions
View previous topic :: View next topic  
Author Message
Tasman



Joined: 20 May 2006
Posts: 21

PostPosted: Sat May 20, 2006 8:18 pm    Post subject: Simple run box replacement Reply with quote

This is a simple run box replacement mostly interesting for use with an alternative shell that does not provide this functionality.
This is part of a minimalist shell I am writing in AHK.
Certainly not an enhancement of the original, just a basic copy.
But as you have the source, it's easily expanded, I might add an aliases function in the future, when I have time.
Feel free to change/optimize/enhance/use it as you see fit, would be nice if you could post your code here as well though so we can all benefit.

Features:
*History of entered commands (default 10 but can be changed easily by editing the ini).
*If a path or drive is entered (eq. c:\ or c:\windows) it will open the folder in explorer
* File selector
* Entering "clear" (without quotes) clears the history.

The history is saved in an inifile in the script directory using the script name as its base and created if not already in existance when the script is first run.

Note! this script will keep on running in the tray untill closed from the tray menu


Code:

#SingleInstance force
dbase := getscriptname() ; get the base name of this program without the extension
ini = %A_ScriptDir%\%dbase%.ini ; and make a ini file based on the script name and path
IfNotExist, %ini% ; if there is no ini file yet make one
   makeini(ini)
GoSub dorun
return

DoRun:
   IniRead, CommandHistory, %ini%, history, CommandHistory
   IniRead, maxhistory, %ini%, history, maxhistory, 10, ; set the default to 10
   if CommandHistory = ERROR
      CommandHistory =
   StringReplace, CommandHistory, CommandHistory, || , |, A
   StringRight, TT, CommandHistory, 1
   if TT = |
      StringTrimRight, CommandHistory, CommandHistory, 1
   OrgHistory = %CommandHistory%
   sort, CommandHistory, D|
   count = 0
   Gui, Add, ComboBox, W260 vCommand, %CommandHistory%
   Gui, Add, Button,ys , ....
   Gui, Add, Button,ys default, Run
   Gui, Show, W360 , Run Box
return
Button....:
   FileSelectFile, Command
   if Command =
      return
   GoSub ButtonRun
return
ButtonRun:
   if Command = ; if the routine was not called from the file select do a submit
      Gui, Submit
   if Command = ; if nothing was entered then just forget it
      return
   check =
   StringMid, check, Command, 2, 2
   if check = :\ ; if command contains :\ and no dot it must be a path so let explorer handle it
      IfNotInString, Command, .
         expl = explorer.exe /n,/e,
   if Command <> clear
      Run, %expl%%Command%, ,UseErrorLevel
   if ErrorLevel = ERROR
   {
      MsgBox, "%Command%" could not be found or executed
      Gui, destroy
      return
   }
   CommandHistory =
   IfNotInString, OrgHistory, %Command%
   {
      loop, parse, OrgHistory, |
      {
         _this = %A_LoopField%
         if _this =
            continue
         CommandHistory = %CommandHistory%|%A_LoopField%
         count += 1
         if count = %maxhistory%
            break
      }
      CommandHistory = %Command%|%CommandHistory%|
      if Command = clear
         CommandHistory = ""
      IniWrite, %CommandHistory%, %ini%, history, CommandHistory
   }
   ; do some cleaning up
   CommandHistory =
   _this =
   OrgHistory =
   Command =
   expl =
   Gui, Destroy
return
makeini(ini){ ; make an inifile
   IniWrite, 10, %ini%, history, maxhistory ; set the default to 10 items in the history
   IniWrite, "", %ini%, history, CommandHistory ; just an empty string to start of with
}
GetScriptName(){  ; thanks for the tip Goyyah
           SplitPath, A_ScriptFullPath,,,,Name,
            Return Name
}
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    AutoHotkey Community Forum Index -> Scripts & Functions All times are GMT
Page 1 of 1

 
Jump to:  
You can post new topics in this forum
You can reply to topics in this forum


Powered by phpBB © 2001, 2005 phpBB Group