-
Notifications
You must be signed in to change notification settings - Fork 0
/
Exo-CLI.js
78 lines (70 loc) · 2.08 KB
/
Exo-CLI.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
var CmdVersion = function(){/*
Exo-CLI.js by joedf
Revision Date: 2018-01-05 10:51:40 PM EST
Many thanks to Lexikos for StdOut/StdIn
Many thanks to Aurelain for [Exo](github.com/Aurelain/Exo)
*/}.toString().slice(15,-3);
Menu("Tray","NoIcon"); //Hide TrayIcon
var CmdTitle = "AutoHotkey v"+A_AhkVersion+" "+(A_IsUnicode?"Unicode":"ANSI")+" "+(A_PtrSize*8)+"-bit"+" with Exo";
var CmdPrompt = ">> ";
var hCmd = DllCall("AllocConsole");
var CmdPID = WinGet("PID","ahk_id "+GuiControlGet("Hwnd","wb"))
var StdOut = FileOpen("*", "w");
var StdIn = FileOpen("*", "r");
var StdErr = FileOpen("**", "w");
function print(t) {
StdOut.Write(t);
StdOut.__Handle; // Flush the buffer.
}
function System(t,lock) {
if (typeof(lock)==='undefined')
return RunWait(ComSpec+" /c "+t);
else
return Run(ComSpec+" /c "+t);
}
cmd = System; // alias
DllCall("SetConsoleTitle","Str",CmdTitle);
print(CmdTitle);
print("\nType 'Quit', 'Exit' or 'ExitApp()' to exit.");
print("\nEnd lines with ';' to evaluate.");
print("\n\n"+CmdPrompt);
System(""); // bug that enables Mouse Scroll?!
var CmdPrompter = CmdPrompt;
var CmdStack = "";
for(;;) {
var str = RTrim(StdIn.ReadLine(), "\r\n\t ");
if (str.length > 0) {
if ( (str.toLowerCase() == "quit") || (str.toLowerCase() == "exit") ) {
print("\nOk. Good bye!");
break;
} else if (str.toLowerCase() == "clear") {
System("cls");
} else if (str.toLowerCase() == "version") {
print("\n"+CmdVersion);
} else {
if (StringRight(str,1)==";") {
CmdPrompter = CmdPrompt;
str = CmdStack + str; CmdStack = "";
try {
eval(str); // Execute code
} catch( e ) {
if ( (e.name == "Error") && (StrLen(Trim(e.message))==0) )
StdErr.Write("AutoHotkeyError : "+e.What);
else
StdErr.Write(e.name+" : "+e.message);
StdErr.__Handle;
}
print("\n");
} else { // allow continuing sections
if (StringRight(str,1)=="\\")
CmdStack = CmdStack + StringTrimRight(str,1) + "\\n";
else
CmdStack = CmdStack + str + "\n";
CmdPrompter = Chr(192) + "> ";
}
}
}
print(CmdPrompter);
}
Sleep(1000);
ExitApp();