winXP下用VBS写的代码编辑器

2023-12-05 0 570

这几天不能访问的时候把硬盘上的东东复习了一遍,找出了这个东西出来,由于水平有限,而且对DHTML没有什么研究,所以做得很是粗糙,贴上来是为了抛砖引玉,希望有高人能帮忙修改或拿出更优秀的东东出来。 测试环境为windows XP 专业版 SP2,暂时发现代码着色方面有Bug,虽然已有解决方法,不过由于代码量的原因(用记事本写代码真的很恼火),暂时未纠正,另外预计将来加入自动完成等功能。 ps:利用VBS脚本+DHTML,主要功能由正则表达式+wmic来完成,代码需保存为HTA类型的文件,当然也可以更改为纯粹的VBS脚本,不过那样效率低多了,而且代码更复杂。 复制代码 代码如下: <HTML> <HEAD> <title>代码编辑器</title> <HTA:APPLICATION selection=\”no\” SCROLL=\”no\” contextMenu=\”no\” /> <SCRIPT LANGUAGE=\”VBSCRIPT\”> \’*******************************************************************\’ \’脚本开始 \’*******************************************************************\’ Set shell=CreateObject(\”WScript.Shell\”) Set fso=CreateObject(\”Scripting.FileSystemObject\”) \’*******************************************************************\’ \’遍历本地所有类型文件 \’*******************************************************************\’ Sub OptionAdd(fExt) str = \”<select size=\”\”1\”\” name=\”\”objOption\”\” onChange=\”\”TestSub\”\”>\” Set objDataFiles = GetObject(\”winmgmts:\” _ & \”{impersonationLevel=impersonate}!\\\\.\\root\\cimv2\”) Set colFiles = objDataFiles. _ ExecQuery(\”Select * from CIM_DataFile where extension = \’\” & fExt & \”\’\”) For Each objFile in colFiles str = str & \”<option value=\”\”\” & objFile.name & \”\”\”>\” & _ objFile.name & \”</option>\” next str = \”<label>本地脚本文件:</label>\” & str & \”</select>\” forOption.innerHTML = str end Sub \’*******************************************************************\’ \’颜色转换 \’*******************************************************************\’ Sub ChangeColor if cxs.value = \”vbs\” then WinMain.innerHTML = ChangeVBS(WinMain.innerText) else \’CMD脚本 WinMain.innerHTML = ChangeCMD(WinMain.innerText) end if end Sub \’*******************************************************************\’ \’VBS转换模块 \’*******************************************************************\’ Function ChangeVBS(sText) Set re=new RegExp re.IgnoreCase =true re.Global=true \’注释转换 re.Pattern = \”(\\\’.*)\\r\\n\” sText = re.Replace(sText,\”<font color=#339999>$1</font><p>\”) \’转换符号为[蓝色] re.Pattern = \”(\\(|\\)|\\&|\\+|\\-|\\*|\\%|\\:|\\;|\\.|\\\”\”\” & \”)\” sText = re.Replace(sText,\”<font color=#993333>$1</font>\”) sText = \”<table ><tr><td width=\’1024\’ \” & _ \”style=\’word-break:break-all\’><ol type=1>\” & _ \”<br /><li>\” & sText & \”</table>\” sText = Replace(sText,chr(13) & chr (10) ,\” </li><li> \”) \’转换保留字为[蓝色] re.Pattern=\”(\\bAnd\\b|\\bByRef\\b|\\bByVal\\b|\\bCall\\b\” & _ \”|\\bCase\\b|\\bClass\\b|\\bConst\\b|\\bDim\\b|\\bDo\\b\” & _ \”|\\bEach\\b|\\bElse\\b|\\bElseIf\\b|\\bEmpty\\b|\\bEnd\\b\” & _ \”|\\bEqv\\b|\\bErase\\b|\\bError\\b|\\bExit\\b|\\bExplicit\\b\” & _ \”|\\bFalse\\b|\\bFor\\b|\\bFunction\\b|\\bGet\\b|\\bIf\\b|\\bImp\\b\” & _ \”|\\bIn\\b|\\bIs\\b|\\bLet\\b|\\bLoop\\b|\\bMod\\b|\\bNext\\b|\\bNot\\b\” & _ \”|\\bNothing\\b|\\bNull\\b|\\bOn\\b|\\bOption\\b|\\bOr\\b|\\bPrivate\\b\” & _ \”|\\bProperty\\b|\\bPublic\\b|\\bRandomize\\b|\\bReDim\\b|\\bRem\\b\” & _ \”|\\bResume\\b|\\bSelect\\b|\\bSet\\b|\\bStep\\b|\\bSub\\b|\\bThen\\b\” & _ \”|\\bTo\\b|\\bTrue\\b|\\bUntil\\b|\\bWend\\b|\\bWhile\\b|\\bXor\\b|Vb[a-z]*)\” sText=re.Replace(sText,\”<font color=blue>$1</font>\”) \’转换函数和对象为[红色] re.Pattern=\”(\\bAnchor\\b|\\bArray\\b|\\bAsc\\b|\\bAtn\\b\” & _ \”|\\bCBool\\b|\\bCByte\\b|\\bCCur\\b|\\bCDate\\b|\\bCDbl\\b\” & _ \”|\\bChr\\b|\\bCInt\\b|\\bCLng\\b|\\bCos\\b|\\bCreateObject\\b\” & _ \”|\\bCSng\\b|\\bCStr\\b|\\bDate\\b|\\bDateAdd\\b|\\bDateDiff\\b\” & _ \”|\\bDatePart\\b|\\bDateSerial\\b|\\bDateValue\\b|\\bDay\\b\” & _ \”|\\bDictionary\\b|\\bDocument\\b|\\bElement\\b|\\bErr\\b|\\bExp\\b\” & _ \”|\\bFileSystemObject \\b|\\bFilter\\b|\\bFix\\b|\\bInt\\b|\\bForm\\b\” & _ \”|\\bFormatCurrency\\b|\\bFormatDateTime\\b|\\bFormatNumber\\b\” & _ \”|\\bFormatPercent\\b|\\bGetObject\\b|\\bHex\\b|\\bHistory\\b|\\bHour\\b\” & _ \”|\\bInputBox\\b|\\bInStr\\b|\\bInstrRev\\b|\\bIsArray\\b|\\bIsDate\\b\” & _ \”|\\bIsEmpty\\b|\\bIsNull\\b|\\bIsNumeric\\b|\\bIsObject\\b|\\bJoin\\b\” & _ \”|\\bLBound\\b|\\bLCase\\b|\\bLeft\\b|\\bLen\\b|\\bLink\\b|\\bLoadPicture\\b\” & _ \”|\\bLocation\\b|\\bLog\\b|\\bLTrim\\b|\\bRTrim\\b|\\bTrim\\b|\\bMid\\b\” & _ \”|\\bMinute\\b|\\bMonth\\b|\\bMonthName\\b|\\bMsgBox\\b|\\bNavigator\\b\” & _ \”|\\bNow\\b|\\bOct\\b|\\bReplace\\b|\\bRight\\b|\\bRnd\\b|\\bRound\\b\” & _ \”|\\bScriptEngine\\b|\\bScriptEngineBuildVersion\\b\” & _ \”|\\bScriptEngineMajorVersion\\b|\\bScriptEngineMinorVersion\\b\” & _ \”|\\bSecond\\b|\\bSgn\\b|\\bSin\\b|\\bSpace\\b|\\bSplit\\b|\\bSqr\\b\” & _ \”|\\bStrComp\\b|\\bString\\b|\\bStrReverse\\b|\\bTan\\b|\\bTime\\b\” & _ \”|\\bTextStream\\b|\\bTimeSerial\\b|\\bTimeValue\\b|\\bTypeName\\b\” & _ \”|\\bUBound\\b|\\bUCase\\b|\\bVarType\\b|\\bWeekday\\b|\\bWeekDayName\\b\” & _ \”|\\bWindow\\b|\\bYear\\b|\\bWscript\\b)\” sText=re.Replace(sText,\”<font color=red>$1</font>\”) ChangeVBS = sText end Function \’*******************************************************************\’ \’CMD转换模块 \’*******************************************************************\’ Function ChangeCMD(sText) Set re=new RegExp re.IgnoreCase =true re.Global=true \’等号转换 \’sText = Replace(sText,\”/\”,\”<font color=#FF0000>/</font>\”) re.Pattern = \”(\\%|\\=|\\/[a-z]*\\b|\\>|\\<|\\|)\” sText = re.Replace(sText,\”<font color=#FF8C00>$1</font>\”) \’注释转换 re.Pattern = \”(Rem\\b.*\\r\\n|\\bRem\\b.*)\” sText = re.Replace(sText,\”<font color=#20B2AA>$1</font>\”) \’改变符号的颜色 re.Pattern = \”(\\(|\\)|\\&|\\+|\\-|\\*|\\;|\\\”\”\” & \”)\” sText = re.Replace(sText,\”<font size=5 color=#9932CC>$1</font>\”) \’改变所有命令的颜色 re.Pattern = \”(\\bShare\\b|\\bSetver\\b|\\bNlsfunc\\b|\\bMem\\b|\\bLh\\b\” & _ \”|\\bLoadhigh\\b|\\bloadfix\\b|\\bGraphics\\b|\\bForcedos\\b\” & _ \”|\\bFastopen\\b|\\bExe2bin\\b|\\bEdlin\\b|\\bEdlin\\b|\\bEdit\\b\” & _ \”|\\bDebug\\b|\\bDebug\\b|\\bAppend\\b|\\bSwitches\\b|\\bStacks\\b\” & _ \”|\\bShell\\b|\\bNtcmdprompt\\b|\\bLastdrive\\b|\\bInstall\\b\” & _ \”|\\bFiles\\b|\\bFcbs\\b|\\bEchoconfig\\b|\\bDriveparm\\b|\\bDosonly\\b\” & _ \”|\\bDos\\b|\\bDevicehigh\\b|\\bDevice\\b|\\bCountry\\b|\\bBuffers\\b\” & _ \”|\\bXcopy\\b|\\bWMIC\\b|\\bWinnt32\\b|\\bWinnt\\b|\\bW32tm\\b\” & _ \”|\\bVssadmin\\b|\\bVol\\b|\\bVerify\\b|\\bVer\\b|\\bUnlodctr\\b\” & _ \”|\\bTypeperf\\b|\\bType\\b|\\bTree\\b|\\bTracert\\b|\\bTracerpt\\b\” & _ \”|\\bTitle\\b|\\bTime\\b|\\bTftp\\b|\\bTelnet\\b|\\bTcmsetup\\b\” & _ \”|\\bTasklist\\b|\\bTaskkill\\b|\\bSfc\\b|\\bSysteminfo\\b|\\bSubst\\b\” & _ \”|\\bStart\\b|\\bSort\\b|\\bShutdown\\b|\\bShift\\b|\\bSetlocal\\b|\\bSet\\b\” & _ \”|\\bSecedit\\b|\\bSchtasks\\b|\\bSc\\b|\\bRunas\\b|\\bRsm\\b|\\bRsh\\b\” & _ \”|\\bRoute\\b|\\bRmdir\\b|\\bRexec\\b|\\bReset\\b|\\bReplace\\b|\\bRename\\b\” & _ \”|\\bRelog\\b|\\bRegsvr32\\b|\\bReg\\b|\\bRecover\\b|\\bRcp\\b|\\bRasdial\\b\” & _ \”|\\bQuery\\b|\\bPushd\\b|\\bPrompt\\b|\\bPrnqctl\\b|\\bPrnport\\b\” & _ \”|\\bPrnmngr\\b|\\bPrnjobs\\b|\\bPrndrvr\\b|\\bPrncnfg\\b|\\bPrint\\b\” & _ \”|\\bPopd\\b|\\bPing\\b|\\bPerfmon\\b|\\bPentnt\\b|\\bPbadmin\\b|\\bPause\\b\” & _ \”|\\bPathping\\b|\\bPath\\b|\\bPagefileconfig\\b|\\bOpenfiles\\b|\\bNtsd\\b\” & _ \”|\\bNtcmdprompt\\b|\\bNtbackup\\b|\\bNslookup\\b|\\bNetstat\\b|\\bNetsh\\b\” & _ \”|\\bNet\\b|\\bNbtstat\\b|\\bMsinfo32\\b|\\bMsiexec\\b|\\bMove\\b\” & _ \”|\\bMountvol\\b|\\bMore\\b|\\bMode\\b|\\bMmc\\b|\\bMd\\b|\\bMkdir\\b\” & _ \”|\\bMacfile\\b|\\bLpr\\b|\\bLpq\\b|\\bLogman\\b|\\bLodctr\\b|\\bLabel\\b\” & _ \”|\\bIrftp\\b|\\bIpxroute\\b|\\bIpseccmd\\b|\\bIpconfig\\b|\\bIf\\b\” & _ \”|\\bHostname\\b|\\bHelpctr\\b|\\bHelp\\b|\\bGraftabl\\b|\\bGpupdate\\b\” & _ \”|\\bGpresult\\b|\\bGoto\\b|\\bGetmac\\b|\\bFtype\\b|\\bFtp\\b|\\bFsutil\\b\” & _ \”|\\bFormat\\b|\\bFor\\b|\\bFlattemp\\b|\\bFinger\\b|\\bFindstr\\b|\\bFind\\b\” & _ \”|\\bFc\\b|\\bExpand\\b|\\bExit\\b|\\bEvntcmd\\b|\\bEventtriggers\\b\” & _ \”|\\bEventquery\\b|\\bEventcreate\\b|\\bEndlocal\\b|\\bEcho\\b\” & _ \”|\\bDriverquery\\b|\\bDoskey\\b|\\bDiskPart\\b|\\bDiskcopy\\b\” & _ \”|\\bDiskcomp\\b|\\bDir\\b|\\bDel\\b|\\bDefrag\\b|\\bDate\\b|\\bCScript\\b\” & _ \”|\\bCprofile\\b|\\bCopy\\b|\\bConvert\\b|\\bCompact\\b|\\bComp\\b\” & _ \”|\\bCmstp\\b|\\bCmd\\b|\\bCls\\b|\\bCipher\\b|\\bChkntfs\\b|\\bChkdsk\\b\” & _ \”|\\bChdir\\b|\\bChcp\\b|\\bChange\\b|\\bCall\\b|\\bCacls\\b|\\bBreak\\b\” & _ \”|\\bBootcfg\\b|\\bAttrib\\b|\\bAtmadm\\b|\\bAt\\b|\\bAssoc\\b|\\bArp\\b)\” sText=re.Replace(sText,\”<font color=blue>$1</font>\”) sText = \”<table><td width=\”\”1024\”\” \” & _ \”style=\”\”word-break:break-all\”\”><ol type=1>\” & _ \”<br /><li>\” & sText & \”<tr></table>\” sText = Replace(sText,chr(13) & chr (10) ,\” </li><li> \”) ChangeCMD = sText end Function \’*******************************************************************\’ \’帮助窗口 \’*******************************************************************\’ set oPopup = window.createPopup sub HelpWindow if usehelp.checked then set oPopBody = oPopup.document.body oPopBody.style.backgroundColor = \”lightyellow\” oPopBody.style.border = \”solid black 1px\” oPopBody.innerHTML = \”帮助功能未完成,取消帮助见右下角\” oPopup.show WinMain.offsetleft, _ WinMain.offsettop + WinMain.offsetheight – 20, _ WinMain.offsetWidth, 20, document.body end if end sub \’*******************************************************************\’ \’运行代码 \’*******************************************************************\’ Sub RunCode if cxs.value = \”vbs\” then tmpfile = \”temp_script.vbs\” str = tmpfile else tmpfile = \”temp_script.bat\” str = \”cmd /k \” & tmpfile end if Set file = fso.OpenTextFile(tmpdir & tmpfile,2,True) file.Write WinMain.innerText file.Close shell.Run str End Sub \’*******************************************************************\’ \’保存文件 \’*******************************************************************\’ Sub SaveFile Set objDialog = CreateObject(\”SAFRCFileDlg.FileSave\”) objDialog.FileName = Cstr(date) if cxs.value = \”vbs\” then objDialog.FileType = \”.vbs\” else objDialog.FileType = \”.bat\” end if intReturn = objDialog.OpenFileSaveDlg If intReturn Then Set objFile = fso.CreateTextFile( _ objDialog.FileName & objDialog.FileType) objFile.WriteLine WinMain.innerText objFile.Close end if end Sub \’*******************************************************************\’ \’打开文件 \’*******************************************************************\’ Sub OpenFile Set objDialog = CreateObject(\”UserAccounts.CommonDialog\”) objDialog.Filter = \”bat文件|*.bat;*.cmd|vbs 文件|*.vbs|所有文件|*.*\” \’objDialog.MaxFileSize = 10000 \’objDialog.FilterIndex = 1 \’objDialog.InitialDir = \”\” objDialog.ShowOpen \’strLoadFile = objDialog.FileName If len(trim(objDialog.FileName)) = 0 Then Exit Sub Set objFile = fso.OpenTextFile(objDialog.FileName,1,True) WinMain.innerText = objFile.ReadAll end Sub \’*******************************************************************\’ \’启动时自动移动到屏幕中心 \’*******************************************************************\’ Sub Window_OnLoad() self.ResizeTo 1,1 self.MoveTo 300,300 \’显示一个窗口 Set objWindow = window.Open(\”about:blank\”,\”ProgressWindow\”,\”height=15,width=250,left=300,top=300,status=no,titlebar=no,toolbar=no,menubar=no,location=no,scrollbars=no\”) With objWindow .Focus() .ResizeTo 250,15 .document.body.style.fontFamily = \”Helvetica\” .document.body.style.fontSize = \”11pt\” .document.writeln \”<html><body>正在搜索本地文件….</body></html>\” .document.title = \”请稍侯…\” .document.body.style.backgroundColor = \”buttonface\” .document.body.style.borderStyle = \”none\” .document.body.style.marginTop = 15 end With \’如果系统并非XP,IE不为6.0版本则退出 strWindowsVer = shell.RegRead _ (\”HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\ProductName\”) strIeVer = shell.RegRead _ (\”HKLM\\SOFTWARE\\Microsoft\\Internet Explorer\\Version\”) if strWindowsVer <> \”Microsoft Windows XP\” or _ left(strIeVer,3) <> \”6.0\” then intFlag = msgbox(\”操作系统不是XP或者IE版本低于6.0,是否退出?\”,1) if intFlag = 1 then self.close else Began end if else Began end if objWindow.Close End Sub Sub Began OptionAdd \”bat\” intLeft = (document.parentwindow.screen.availwidth – 800) / 2 intTop = (document.parentwindow.screen.availheight – 600) / 2 window.resizeTo 800,650 window.moveTo intLeft, intTop end Sub \’*******************************************************************\’ \’搜索本地脚本 \’*******************************************************************\’ Sub TestSub Set objFile = fso.OpenTextFile(objOption.value,1,True) WinMain.innerText = objFile.ReadAll end Sub \’*******************************************************************\’ \’擦屁股 \’*******************************************************************\’ Sub Window_OnBeforeUnload() On Error Resume Next fso.DeleteFile \”temp_script.vbs\”,True fso.DeleteFile \”temp_script.bat\”,True Set shell = Nothing Set fso = Nothing set oPopup= Nothing End Sub \’*******************************************************************\’ \’清空代码 \’*******************************************************************\’ Sub Clear WinMain.innerText = \”\” \’WinMain.innerHTML = \”\” end Sub \’*******************************************************************\’ \’复制到剪贴板 \’*******************************************************************\’ Sub ClipBoard window.clipboardData.SetData \”text\”, WinMain.innerHTML end Sub </SCRIPT> </HEAD> <body> <style type=\”text/css\”> * { padding:0; border:0; overflow:hidden; font:16px Arial;} html,body { height:100%; margin:0;} #box_2 { height:100%; background:#ccc;} </style> <center> <div style=\”font-family: Trebuchet MS; font-weight:bold;\”> <span style=\”font-size: 18pt;\”>代码编辑器</span> <span style=\”font-size: 8pt;\”>Ver 1.0 by <a href=\”http://www.cn-dos.net/forum/forumdisplay.php?fid=23\”> 3742668</a>&nbsp;&nbsp;&nbsp;<a href=\”mailto:3742668@gmail.com\”> 我的信箱</a></span><br></div></center><br> <div contentEditable STYLE=\”padding:2; overflow:auto;background-color:lightyellow; width:100%; height:70%;\” ID=\”WinMain\” onkeyup=\”HelpWindow\”> </div> <BR> <center> <INPUT STYLE=\”font-family: Trebuchet MS; font-size: 8pt; font-weight: bold; border: 1px solid black;\” TYPE=\”BUTTON\” VALUE=\”打开文件(x)\” accesskey=\”x\” ONCLICK=\”OpenFile\”> <INPUT STYLE=\”font-family: Trebuchet MS; font-size: 8pt; font-weight: bold; border: 1px solid black;\” TYPE=\”BUTTON\” VALUE=\”运行代码(r)\” accesskey=\”r\” ONCLICK=\”RunCode\”> <INPUT STYLE=\”font-family: Trebuchet MS; font-size: 8pt; font-weight: bold; border: 1px solid black;\” TYPE=\”BUTTON\” VALUE=\”清空代码(c)\” accesskey=\”c\” ONCLICK=\”Clear\”> <INPUT STYLE=\”font-family: Trebuchet MS; font-size: 8pt; font-weight: bold; border: 1px solid black;\” TYPE=\”BUTTON\” VALUE=\”保存文件(s)\” accesskey=\”s\” ONCLICK=\”SaveFile\”> <INPUT STYLE=\”font-family: Trebuchet MS; font-size: 8pt; font-weight: bold; border: 1px solid black;\” TYPE=\”BUTTON\” VALUE=\”复制着色代码(a)\” accesskey=\”a\” ONCLICK=\”ClipBoard\”> <INPUT STYLE=\”font-family: Trebuchet MS; font-size: 8pt; font-weight: bold; border: 1px solid black;\” TYPE=\”BUTTON\” VALUE=\”着色显示(d)\” accesskey=\”d\” ONCLICK=\”ChangeColor\”></center> <br><div id=\”forOption\”></div><p> <INPUT TYPE=\”CHECKBOX\” ID=\”usehelp\” onfocus=\”WinMain.focus\” accesskey=\”z\” class=\”noBorder\” position: checked> <label for=\”usehelp\”>使用帮助(<u>z</u>)</label>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<label>脚本类型:<label> <SELECT NAME=\”cxs\” SIZE=\”1\” onchange=\”OptionAdd(cxs.value)\”> <OPTION VALUE=\”vbs\”> VBS脚本</OPTION><OPTION VALUE=\”bat\” SELECTED>BAT脚本</OPTION><br> </body> </HTML>代码打包下载

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 hta winXP下用VBS写的代码编辑器 https://www.u-9.cn/jiaoben/hta/99674.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务