AutoHotkey Community

It is currently May 27th, 2012, 12:54 pm

All times are UTC [ DST ]




Post new topic Reply to topic  [ 31 posts ]  Go to page 1, 2, 3  Next
Author Message
PostPosted: August 26th, 2011, 12:27 am 
Offline
User avatar

Joined: November 2nd, 2008, 4:23 pm
Posts: 2906
Location: 127.0.0.1
ahkcmd 0.3.0.2a
          Download          Source

UPDATE: There's an AutoHotkey_L version now!
This is highly recommended if you don't have .NET 4.0 installed already. It will save you a large download. The main differences are it doesn't work as a calculator (yet) and doesn't have a plugin system (yet). It will however work anywhere AutoHotkey works.

I often use AutoHotkey for quick programs. Many of them I only run once. Instead of creating new files, or even using "scratch.ahk" type of files I wanted to use AutoHotkey on the command line.

AutoHotkey isn't built to work on the command line, but C-like languages are. The project uses C# and AutoHotkey.dll to launch dynamic code when you press {Enter}.

Here's a screenshot of some basic usage:
Image

I made a very quick page for it that I might (or might not) update later. I'll probably just put information on the GitHub wiki page.

For anyone that wants special 'exceptions' to AutoHotkey's rules, the project has a plug-in system. It just allows modification of the code after the user enters it, but before it's sent to AutoHotkey. Here's an example.
Code:
namespace AhkCmd.Components
{
    class ChangeDirectory: IComponent
    {
        public ChangeDirectory()
        {
            // Nothing to do here
        }

        public string Modify(string Code)
        {
            if (Code.ToLower().StartsWith("cd "))
            {
                // The SubString is everything after "cd "
                Code = "SetWorkingDir, " + Code.Substring(2);
            }
            return Code;
        }
    }
}

I'd like to eventually have a XML file with built-in commands and a Help component that gives you the parameters. It would also allow for printing the OutputVar or similar for each command after it's called (as it does with any expressions.)

The project is currently alpha. If anyone wants to submit a plug-in or packaged function to always be included, post it here. Tips on how to improve it or general feature requests are always welcome.

It's in an unstable and partially complete state, so some 'bugs' may just be things I didn't get to yet or completely finish. Feel free to file an issue on GitHub but please not here.

UPDATE: I'm not sure how practical a .NET program is for this. If the project is continued it will likely be with the AutoHotkey_L version, rather than the C# original. It just makes more sense!

_________________
aboutscriptappsscripts
Any code ⇈ above ⇈ requires AutoHotkey_L to run


Last edited by Frankie on September 3rd, 2011, 4:46 am, edited 2 times in total.

Report this post
Top
 Profile  
Reply with quote  
PostPosted: August 26th, 2011, 12:41 am 
Offline

Joined: October 17th, 2006, 4:15 pm
Posts: 7503
Location: Australia
Looks good, but it's a shame you didn't write it in AutoHotkey.
Frankie wrote:
AutoHotkey isn't built to work on the command line,
I guess you say that because it doesn't reuse the parent process' console window, since it's not a console application. Actually, I posted a script a while back to switch an executable (such as AutoHotkey.exe or AutoHotkeySC.bin) between the windows and console subsystems. Other than that, it can be fairly simple depending on what you want to do (but don't run it from SciTE):
Code:
DllCall("AllocConsole") ; In case this is not a console app.
FileAppend % "Prompt> ", CONOUT$ ; If this is a console app, you can probably use * (stdout) instead.
FileReadLine line, CONIN$, 1 ; The script won't respond while it's waiting for input.
MsgBox % line


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: August 26th, 2011, 1:13 am 
Offline
User avatar

Joined: November 2nd, 2008, 4:23 pm
Posts: 2906
Location: 127.0.0.1
Anything's possible with AutoHotkey (I've learned that by now.) I just dislike finding the hex values I'd need for changing the console color, getting and setting the cursor position etc.

_________________
aboutscriptappsscripts
Any code ⇈ above ⇈ requires AutoHotkey_L to run


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: August 26th, 2011, 4:22 am 
Offline

Joined: March 10th, 2011, 7:17 pm
Posts: 374
looks very neat, but ive used one ClickOnce installer application in the past and it was a huge pain in the ass, so i refuse to do it again


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: August 26th, 2011, 5:07 am 
Offline

Joined: October 17th, 2006, 4:15 pm
Posts: 7503
Location: Australia
Frankie wrote:
I just dislike finding the hex values I'd need for changing the console color, getting and setting the cursor position etc.
There's a lib on the German forum that probably takes care of most of that.


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: August 26th, 2011, 5:14 am 
Offline

Joined: December 19th, 2010, 5:32 am
Posts: 235
Here's my take on this, requires AutoHotkey.dll.
Lightly tested, only thing not working is classes... I think.
Code:
#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
#Persistent
#SingleInstance, Force

SetBatchLines, -1
ListLines, Off
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
Onexit, Exit

AhkDll := A_ScriptDir . "\AutoHotkey.dll"
hModule := DllCall("LoadLibrary", "Str", AhkDll)
DllCall(AhkDll "\ahktextdll","Str","","Str","","Str","","Cdecl Uint")
DllCall("AllocConsole") ; In case this is not a console app.

stdin  := FileOpen(DllCall("GetStdHandle", "int", -10, "ptr"), "h `n")
stdout := FileOpen(DllCall("GetStdHandle", "int", -11, "ptr"), "h `n")

stdout.Write("AutoHotkey " . A_AhkVersion . "`n")

Loop
{
    stdout.Write(">>> ")
    stdout.Read(0) ; Flush the write buffer.
   
    line := RTrim(stdin.ReadLine(), "`n")
    tmpLine := line
   
    while (checkFunction(tmpLine))
    {
        stdout.Read(0) ; Flush the write buffer.
        tmpLine := RTrim(stdin.ReadLine(), "`n"), line .= "`n" . tmpLine

        if (!tmpLine) && checkFunction("null")
            break
       
    }

    DllCall(AhkDll "\ahkExec","Str",line,"Str","","Str","","Cdecl Uint") ; Run line
}

ExitApp

Exit:
    DllCall("FreeLibrary","UInt",hModule)
    Exitapp
return   

checkFunction(Script) {
    static bracketCount, function
    if (Script = "null")
        return bracketCount + function
    Loop, Parse, Script, `n
    {
        if (bracketCount) || (function) ; Keep track of brackets
        {
            count++
            if (count = 1) && (function) && (!bracketCount) && (!InStr(A_loopField, "{"))
                bracketCount := 0
            else if (InStr(A_loopField, "{"))
                bracketCount++
            else if (InStr(A_loopField, "}"))
                bracketCount--
           
            if (!bracketCount)
                function := 0, count := 0
            Continue
        }
       
        else if Regexmatch(Trim(A_LoopField), "class .*") ; Filters out any functions located within a class
        {
            if (InStr(A_loopField, "{"))
                bracketCount++
            else
                function := 1
            Continue
        }
       
        else if (RegExMatch(Trim(A_loopField), "^[\w\d]*?\(.*\)")) or (Regexmatch(Trim(A_LoopField), "i)^if .*")) ; If the current line is a function or an if statement.
        {
            if (InStr(A_loopField, "{"))
                bracketCount++
            else
                function := 1
            Continue
        }
    }
    return (function || bracketCount) ? 1 : 0
}


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: August 26th, 2011, 2:43 pm 
Offline
User avatar

Joined: November 2nd, 2008, 4:23 pm
Posts: 2906
Location: 127.0.0.1
zzzooo10, that's nice and really clean. The only limitation I found was hotkeys and labels don't work. You can just count lines ending with : as an open hotkey/label and close them when a return is found.

Added a link to the first post.

_________________
aboutscriptappsscripts
Any code ⇈ above ⇈ requires AutoHotkey_L to run


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: August 27th, 2011, 8:00 am 
Offline

Joined: December 19th, 2010, 5:32 am
Posts: 235
Here is an updated version, it uses the lib that Lexikos pointed out.
It supports hotkeys, labels, error checking in the command prompt, and colors.
Type "reload" to start a new session.
The only thing that I could not get to work was classes.

To use a hotkey make sure its not on one line and it is followed by a return. Example:
Code:
^a::
msgbox hi
return

Code:
#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
#Persistent
#SingleInstance, Force
; #NoTrayIcon
#ErrorStdOut

SetBatchLines, -1
ListLines, Off
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.

Onexit, Exit

AhkDll := A_ScriptDir . "\AutoHotkey.dll" ; Path of AutoHotkey.dll
showErrors := 1 ; Change this to 0 to not show any errors in the command prompt.

errorColor := 4 ; Change the numbers for different colors
mainColor := 7

CMD := new CMD

hModule := DllCall("LoadLibrary", "Str", AhkDll)
DllCall(AhkDll "\ahktextdll","Str","","Str","","Str","/ErrorStdOut","Cdecl Uint")
CMD.CreateNew()

CMD.SetTitle("AHK Command-line interface")
CMD.SetWritingColor(2)

CMD.Write("AutoHotkey " . A_AhkVersion . "`n")
CMD.SetWritingColor(mainColor)

Loop
{
    CMD.Write(">>> ")
   
    line := CMD.Userinput()
    tmpLine := line
   
    while (checkFunction(tmpLine)) ; Check for function< if statements. and labels.
        tmpLine := CMD.Userinput(), line .= "`n" . tmpLine

    if (line != "Reload" && showErrors)
        error := getErrors(line, CMD, mainColor, errorColor)   
   
    if (line = "Reload") ; Reload starts a new script.
        DllCall(AhkDll "\ahkReload"), CMD.Clear(), CMD.SetWritingColor(2), CMD.Write("AutoHotkey " . A_AhkVersion . "`n"), CMD.SetWritingColor(7) 
    else if (labels)
        DllCall(AhkDll "\addScript","Str", line,"Uchar",0,"Cdecl UInt") ; add function or label to script and not run.
    Else if (!error)
        DllCall(AhkDll "\ahkExec","Str", line,"Str","","Str","","Cdecl Uint") ; Run line
   
    labels := 0, error := ""
}

ExitApp
return

Exit:
    DllCall("FreeLibrary","UInt",hModule)
    CMD.release()
    Exitapp
return

checkFunction(Script) {
    Global labels
    static bracketCount, function, labelCount

    Loop, Parse, Script, `n
    {
        currentLine := Trim(A_LoopField)
        if (bracketCount) || (function) ; Keep track of brackets
        {
            if (InStr(currentLine, "{"))
                bracketCount++
            else if (InStr(currentLine, "}"))
                bracketCount--
           
            if (!bracketCount)
                function := 0, count := 0
            Continue
        }
       
        else if (labelCount)
        {
            if (currentLine = "return")
                labelCount--
            Continue
        }
       
        else if Regexmatch(currentLine, "class .*") ; Filters out any functions located within a class
        {
            if (InStr(currentLine, "{"))
                bracketCount++
            else
                function := 1
            Continue
        }
       
        else if (RegExMatch(currentLine, "^[\w\d]*?\(.*\)")) or (Regexmatch(currentLine, "i)^(?:if|loop).*")) ; If the current line is a function or an if statement.
        {
            if (InStr(currentLine, "{"))
                bracketCount++
            else
                function := 1
            Continue
        }
       
        else if (Substr(currentLine, 0) = ":") ; If the current line is a hotkey or label.
        {
            labelCount++
            labels := 1
        }
    }
    return (function || bracketCount || labelCount) ? 1 : 0
}

getErrors(text, CMD, mainColor, errorColor) {
    Critical
   
    FileAppend, % "#NoTrayIcon`nExitApp`n" . text, % A_Temp . "\tmpFile.ahk"
    command = "%A_AhkPath%" /ErrorStdOut "%A_Temp%\tmpFile.ahk" 2> "%A_Temp%\SyntaxError.txt"
    RunWait, %ComSpec% /c "%command%",, Hide

    Filereadline, Errors, %A_Temp%\SyntaxError.txt, 1
    FileDelete % A_Temp . "\SyntaxError.txt"
    FileDelete % A_Temp . "\tmpFile.ahk"
   
    CMD.SetWritingColor(errorColor)
    RegExMatch(Errors, ".*?\((\d*)?\)\s: \=\=\> (.*)", Info)
    if (Info1 && Info2) ; if an error was found add it too error list.
        CMD.GetCusorPos(x, y), CMD.WriteToPos("Error: " info2, x, y), CMD.SetCusorPos(x, y + 1)     
    CMD.SetWritingColor(mainColor)
    Critical, Off
    return (info2)
}

class CMD
{

    CreateNew(){
       return DllCall("AllocConsole")
    }

    TakeExisting(pid=-1){
       DllCall("AttachConsole","uint",pid)
       return A_LastError
    }

    Userinput(){
       Ptr := (A_PtrSize) ? "uptr" : "uint"
       Suffix := (A_IsUnicode) ? "W" : "A"
       stdout := DllCall("GetStdHandle", "uint", -11, Ptr)
       stdin := DllCall("GetStdHandle", "uint", -10, Ptr)
       if ((hConsoleIn=0) || (hConsoleOut=0))
          return 0   
       VarSetCapacity(buffer, 1024)
       if ((!DllCall("ReadConsole" . Suffix, Ptr, stdin, Ptr, &buffer, "uint", 1024, Ptr "*", numreaded, Ptr, 0, "uint")) || (numreaded=0))
          return 0
       Loop, % numreaded
          msg .= Chr(NumGet(buffer, (A_Index-1) * ((A_IsUnicode) ? 2 : 1), (A_IsUnicode) ? "ushort" : "uchar"))
       StringSplit, msg, msg,`r`n
       return msg1
    }

    SetWritingColor(Color=15){
       hConsoleOut := DllCall("GetStdHandle", "uint", -11, Ptr)
       hConsoleIn := DllCall("GetStdHandle", "uint", -10, Ptr)
       if ((hConsoleIn=0) || (hConsoleOut=0))
          return 0   
       return DllCall("SetConsoleTextAttribute", "uint", hConsoleOut, "uchar", color)
    }

    Write(Write){
       hConsoleOut := DllCall("GetStdHandle", "uint", -11, Ptr)
       hConsoleIn := DllCall("GetStdHandle", "uint", -10, Ptr)
       if ((hConsoleIn=0) || (hConsoleOut=0))
          return 0   
       Suffix := (A_IsUnicode) ? "W" : "A"
       return DllCall("WriteConsole" . Suffix, "uint", hConsoleOut, "str", Write, "uint", strlen(Write), "uint*", Written, "uint", 0)
    }

    Release(){
       return DllCall("FreeConsole")
    }

    SetTitle(Title="Autohotkey Skript"){
       Suffix := (A_IsUnicode) ? "W" : "A"
       DllCall("SetConsoleTitle" . Suffix,"str",Title)
    }

    GetTitle(){
       VarSetCapacity(Title,1024)
       Suffix := (A_IsUnicode) ? "W" : "A"
       DllCall("GetConsoleTitle","str",Title,"uint",1024)
       return Title
    }

    ahkExec(){
       return DllCall("GetConsoleWindow")
    }

    SetFullscreen(Fullscreen=true){
       hConsoleOut := DllCall("GetStdHandle", "uint", -11, Ptr)
       hConsoleIn := DllCall("GetStdHandle", "uint", -10, Ptr)
       if ((hConsoleIn=0) || (hConsoleOut=0))
          return 0   
       VarSetCapacity(CoordStruct,32,0)
       Suffix := (A_IsUnicode) ? "W" : "A"
       if (Fullscreen)
          return DllCall("SetConsoleDisplayMode" . Suffix,"uint",hConsoleOut,"uint",1,"int",&CoordStruct)
       else if (!Fullscreen)
          return DllCall("SetConsoleDisplayMode" . Suffix,"uint",hConsoleOut,"uint",2,"int",&CoordStruct)
    }

    Clear(){
       hConsoleOut := DllCall("GetStdHandle", "uint", -11, Ptr)
       hConsoleIn := DllCall("GetStdHandle", "uint", -10, Ptr)
       if ((hConsoleIn=0) || (hConsoleOut=0))
          return 0   
       VarSetCapacity(CoordStruct,4,0)
       Numput(3,&CoordStruct,0,"short")
       Numput(3,&CoordStruct,2,"short")
       VarSetCapacity(CharsWritten,1024)
       Suffix := (A_IsUnicode) ? "W" : "A"
       prt := (A_PtrSize) ? "Ptr" : "uint"
       this.GetBufferSize(h,w)
       if (!DllCall("FillConsoleOutputCharacter" . Suffix,"uint",hConsoleOut,"Char",A_Space,"uint",w*h,"uint",CoordStruct,"uint",&CharsWritten))
          return 0
       if (!DllCall("FillConsoleOutputAttribute","uint",hConsoleOut,"Short",15,"uint",w*h,"uint",CoordStruct,"uint",&CharsWritten))
          return 0
       return DllCall("SetConsoleCursorPosition","uint",hConsoleOut,"uint",CoordStruct)
    }

    GetBufferSize(ByRef Width, ByRef Height){
       hConsoleOut := DllCall("GetStdHandle", "uint", -11, Ptr)
       hConsoleIn := DllCall("GetStdHandle", "uint", -10, Ptr)
       if ((hConsoleIn=0) || (hConsoleOut=0))
          return 0   
       VarSetCapacity(CONSOLE_SCREEN_BUFFER_INFO,44,0)
       dummy := DllCall("GetConsoleScreenBufferInfo","uint", hConsoleOut,"uint",&CONSOLE_SCREEN_BUFFER_INFO)
       Width := NumGet(&CONSOLE_SCREEN_BUFFER_INFO,0,"short")
       Height := NumGet(&CONSOLE_SCREEN_BUFFER_INFO,2,"short")
       return dummy
    }

    GetCusorPos(ByRef X,ByRef Y){
       hConsoleOut := DllCall("GetStdHandle", "uint", -11, Ptr)
       hConsoleIn := DllCall("GetStdHandle", "uint", -10, Ptr)
       if ((hConsoleIn=0) || (hConsoleOut=0))
          return 0   
       VarSetCapacity(CONSOLE_SCREEN_BUFFER_INFO,44,0)
       dummy := DllCall("GetConsoleScreenBufferInfo","uint", hConsoleOut,"uint",&CONSOLE_SCREEN_BUFFER_INFO)
       X := NumGet(&CONSOLE_SCREEN_BUFFER_INFO,4,"short")
       Y := NumGet(&CONSOLE_SCREEN_BUFFER_INFO,6,"short")
       return dummy
    }

    GetShownBuffer(ByRef X_upper_lef,ByRef Y_upper_lef,ByRef X_lower_right,ByRef Y_lower_right){
       hConsoleOut := DllCall("GetStdHandle", "uint", -11, Ptr)
       hConsoleIn := DllCall("GetStdHandle", "uint", -10, Ptr)
       if ((hConsoleIn=0) || (hConsoleOut=0))
          return 0   
       VarSetCapacity(CONSOLE_SCREEN_BUFFER_INFO,44,0)
       dummy := DllCall("GetConsoleScreenBufferInfo","uint", hConsoleOut,"uint",&CONSOLE_SCREEN_BUFFER_INFO)
       X_upper_lef := NumGet(&CONSOLE_SCREEN_BUFFER_INFO,10,"short")
       Y_upper_lef := NumGet(&CONSOLE_SCREEN_BUFFER_INFO,12,"short")
       X_lower_right := NumGet(&CONSOLE_SCREEN_BUFFER_INFO,14,"short")
       Y_lower_right := NumGet(&CONSOLE_SCREEN_BUFFER_INFO,16,"short")
       return dummy
    }

    GetOriginalTitle(){
       VarSetCapacity(Title,1024,0)
       DllCall("GetConsoleOriginalTitle","uint",&Title,"uint",1024)
       return title
    }

    SetCusorPos(X,Y){
       hConsoleOut := DllCall("GetStdHandle", "Int", -11)
       hConsoleIn := DllCall("GetStdHandle", "uint", -10, Ptr)
       Ptr := A_PtrSize ? "Ptr" : "UInt"
       COORD := (Y << 16) + X
       Return DllCall("SetConsoleCursorPosition", Ptr, hConsoleOut, "uint", COORD)
    }

    WriteToPos(Text,X=0,Y=0){
       d := this.GetCusorPos(X2,Y2)
       if (!d)
          return 0
       d := this.SetCusorPos(X,Y)
       if (!d)
          return 0
       d := this.Write(Text)
       if (!d)
          return 0
       d := this.SetCusorPos(X2,Y2)
       if (!d)
          return 0
       return 1
    }
}


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: September 3rd, 2011, 4:02 am 
Offline

Joined: November 23rd, 2009, 2:11 pm
Posts: 104
This does not work without an internet connection, which I find annoying sometimes...

Also, if I ever want to, how do I uninstall?

_________________
  /\ /\ This is Kitty
(>';'<) Cut, copy, and paste kitty onto your sig.
((")(")) Help Kitty gain World Domination.

(\__/) This is Bunny.
(='.'=) Cut, copy, and paste bunny onto your sig.
(")_(") Help Bunny gain World Domination.


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: September 3rd, 2011, 4:31 am 
Offline
User avatar

Joined: November 2nd, 2008, 4:23 pm
Posts: 2906
Location: 127.0.0.1
geekdude wrote:
This does not work without an internet connection, which I find annoying sometimes...
I must have activated that by accident... I'll see if I can fix it. I recommend the AutoHotkey_L version anyway. I'll make that clearer in the OP.

Update: I tried turning off my internet connection and running it. It worked fine. I checked my settings and it doesn't require an internet connection to run. If you have an internet connection it checks for updates. Otherwise it just runs normally (I guess).

geekdude wrote:
Also, if I ever want to, how do I uninstall?
Add & Remove Programs. You can get to it from the start menu where it says "Default Programs" or similar. After that it varies between Windows versions. In XP it should be in a collumn on the left (from memory, there are three options). In Windows 7 you navigate up one folder/level to programs and click "Uninstall a Program". If that didn't help, try google'ing your OS and "Add/Remove Programs". It takes two seconds to uninstall, if you're so inclined.

_________________
aboutscriptappsscripts
Any code ⇈ above ⇈ requires AutoHotkey_L to run


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: September 3rd, 2011, 5:05 am 
Offline

Joined: November 23rd, 2009, 2:11 pm
Posts: 104
Thanks for the reply! I would like to use the AHK_L version, but I do not have a .DLL to put the path to. Could you please explain how to find it?

_________________
  /\ /\ This is Kitty
(>';'<) Cut, copy, and paste kitty onto your sig.
((")(")) Help Kitty gain World Domination.

(\__/) This is Bunny.
(='.'=) Cut, copy, and paste bunny onto your sig.
(")_(") Help Bunny gain World Domination.


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: September 3rd, 2011, 3:07 pm 
Offline
User avatar

Joined: November 2nd, 2008, 4:23 pm
Posts: 2906
Location: 127.0.0.1
Here's a link to Autohotkey.dll: http://www.autohotkey.com/forum/viewtopic.php?t=43049

_________________
aboutscriptappsscripts
Any code ⇈ above ⇈ requires AutoHotkey_L to run


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: September 3rd, 2011, 3:10 pm 
Offline

Joined: November 23rd, 2009, 2:11 pm
Posts: 104
thanks
trying now

Edit: It seems to crash... alot... I'm using AHK_H, should I try AHK_N?

_________________
  /\ /\ This is Kitty
(>';'<) Cut, copy, and paste kitty onto your sig.
((")(")) Help Kitty gain World Domination.

(\__/) This is Bunny.
(='.'=) Cut, copy, and paste bunny onto your sig.
(")_(") Help Bunny gain World Domination.


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: September 3rd, 2011, 8:02 pm 
Offline

Joined: June 18th, 2008, 8:36 am
Posts: 4923
Location: AHK Forum
Use latest AHK_H or AHL_L.
Can you give an example for crash?

_________________
AHK_H (2alpha) AHF TT _Struct WatchDir Yaml _Input ObjTree RapidHotkey DynaRun :wink:


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: September 3rd, 2011, 8:14 pm 
Offline

Joined: November 23rd, 2009, 2:11 pm
Posts: 104
Just random stuff causes it, I'll upload a video of it.

edit:
http://www.youtube.com/watch?v=5tRZ4dck8NY

_________________
  /\ /\ This is Kitty
(>';'<) Cut, copy, and paste kitty onto your sig.
((")(")) Help Kitty gain World Domination.

(\__/) This is Bunny.
(='.'=) Cut, copy, and paste bunny onto your sig.
(")_(") Help Bunny gain World Domination.


Report this post
Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 31 posts ]  Go to page 1, 2, 3  Next

All times are UTC [ DST ]


Who is online

Users browsing this forum: bowen666 and 20 guests


You can post new topics in this forum
You can reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Powered by phpBB® Forum Software © phpBB Group