CalcNotepad是我开发的一款具有计算功能的记事本工具。其界面由如下4部分构成:
- 菜单栏
- 文本区
- 结果区
- 状态栏
首先介绍一下菜单系统
【文件菜单】里面的命令与Windows内置记事本的命令相似,但是当另存为为文件时,可以选择编码。
【编辑菜单】
其中,查找和替换支持正则表达式。
【格式菜单】可以设置字体格式和文本区的背景格式,这些设置保存于注册表中,下次启动会记忆。
【计算菜单】用于设置语言,本工具支持VBScript和JavaScript语法。
在文本区中选择一部分代码,然后按下【F8】可以把表达式的值计算出来,并且显示在左下角。
注意:F8只把选择了的文本作为计算根据,和它周围的文字无关。但是F5是以全部文本作为计算根据的。
例如,书写一个不带参数的Function,函数名称可以任意起。按下【F5】,会计算所有代码,弹出对话框中显示变量c的值。
然后左下角会给出该函数的返回值Test,应该是36
如果计算菜单中勾选的是JavaScript,就需要书写JS代码了。
如下计算100除以7的余数,左下角显示结果。
同样,也可以从一个不带参数的function开始运行。
下面的程序Area是带参数函数,ABC是不带参数的,因此首先调用ABC函数。计算结果为90。
【帮助菜单】可以设置txt扩展名的默认程序,如果设置为本工具,那么双击TXT文件,会默认以本工具打开。
【状态栏】分为3部分,分别显示的是当前文件的编码、文件的完整路径、光标所处的位置。
如图所示,光标显示处于“战斗”两个字之间,因此是12行5列。并且斗字是整个文件的第202个字,一共选中了28个字。
多国语言版
英文
2020/05/04 更新
从各方面考虑,把已有的VBScript、JavaScript计算功能去掉了,现在换成了脚本调用功能。可以调用任何exe文件及其对应的脚本。
基本用法:
解压缩后,会看到CalcNotepad.exe这个主文件。其余文件都是示例代码文件,作为学习参考用。
点击【调用】、【设置】
打开设置对话框。该对话框包括4项设置:
当前工作目录:需要输入一个文件夹的路径,设置了此项后,在命令行参数中就可以使用相对路径。
例如"Sample_BAT.bat"就等价于"E:aidu playerSample_BAT.bat"
可执行文件:此项是必须输入。
命令行参数:可选。
标准输入参数:可选。
Sample_BAT.bat脚本用于计算5个数字之和,内容如下:
@echo off set /p c=c: echo; set /p d=d: echo; set /p e=e: echo; set /a result=%1+%2+%c%+%d%+%e% echo %result% exit
设置完毕后,按下ESC关闭设置对话框,在CalcNotepad界面中按下【F5】,即可在底部看到计算结果是15。
调用cmd.exe时,要求命令行参数中必须有 /c
例如:
我用十来种语言编写了5个数字之和的示例代码,其中变量a、b来自于命令行参数,变量c、d、e来自于标准输入。
VBS版
Sample_VBS.vbs代码如下
Main Sub Main() Dim a,b,c,d,e a=WScript.Arguments(0) b=WScript.Arguments(1) c=WScript.StdIn.ReadLine WScript.StdOut.WriteLine c d=WScript.StdIn.ReadLine WScript.StdOut.WriteLine d e=WScript.StdIn.ReadLine WScript.StdOut.WriteLine e WScript.StdOut.WriteLine CInt(a)+CInt(b)+CInt(c)+CInt(d)+CInt(e) End Sub
VBS脚本使用系统文件夹的cscript.exe来解释执行,设置画面为:
PowerShell版
Sample_Powershell.ps1代码如下:
$a=$args[0] $b=$args[1] $c=Read-Host("c") $d=Read-Host("d") $e=Read-Host("e") Write-Host $a,$b,$c,$d,$e,`n Write-Host $([System.Int32]$a+[System.Int32]$b+[System.Int32]$c+[System.Int32]$d+[System.Int32]$e)
Powershell的参数较多。命令行参数的内容为
-NoLogo -ExecutionPolicy RemoteSigned -File Sample_Powershell.ps1 1 2
另外,也支持调用PowerShell的单行命令。例如:
注意是 -Command,而不是 -File。
运行结果为:
如果参数中有错误,或者运行出错,本工具会输出为StandardError。
假设不小心写成了GetProcess
是不是有点爱上了PS呢。
Python版
Sample_Python.py内容如下
import sys a = sys.argv[1] b = sys.argv[2] c=input("c: ") d=input("d: ") e=input("e: ") print(a,b,c,d,e) print(int(a)+int(b)+int(c)+int(d)+int(e))
设置画面为:
打印结果同样是15。
如果你想自己做一个支持命令行参数和标准输入的可执行文件,可以试一下C#或VB.NET,示例代码如下。
C#
using System; static class Module1 { public static void Main(string[] args) { var a, b, c, d, e; a = args[0]; b = args[1]; c = Console.ReadLine(); d = Console.ReadLine(); e = Console.ReadLine(); Console.WriteLine(System.Convert.ToInt32(a) + System.Convert.ToInt32(b) + System.Convert.ToInt32(c) + System.Convert.ToInt32(d) + System.Convert.ToInt32(e)); } }
VB.NET
Module Module1 Sub Main(args As String()) Dim a, b, c, d, e a = args(0) b = args(1) c = Console.ReadLine() d = Console.ReadLine() e = Console.ReadLine() Console.WriteLine(CInt(a) + CInt(b) + CInt(c) + CInt(d) + CInt(e)) End Sub End Module
最后,本工具还支持XML、带有VBScript和JavaScript的HTML网页的预览功能。
首先在工具中打开Sample_JavaScript.html这个示例文件,然后点击菜单“WebBrowser”
弹出的浏览器中,可以看到网页上的两个按钮。
关闭浏览器,在CalcNotepad中继续编辑网页或Script,再次启动浏览器,这样就可以调试了。
XML也是这样的做法,大家自己试一下。
其他重要提示
- 文本区按下{Tab}输入制表位
- 文本区中双击鼠标可以选中整行
- 查找到最后一处弹出的MsgBox对话框,3秒后自动消失
- 支持文件拖放,可以从文件夹中拖放一个TXT文件到文本区,快速打开
- 左手按住Ctrl,右手滚动鼠标滚轮,可以改变字体大小