這幾天不能訪問的時候把硬盤上的東東復(fù)習(xí)了一遍,找出了這個東西出來,由于水平有限,而且對DHTML沒有什么研究,所以做得很是粗糙,貼上來是為了拋磚引玉,希望有高人能幫忙修改或拿出更優(yōu)秀的東東出來。
測試環(huán)境為windows XP 專業(yè)版 SP2,暫時發(fā)現(xiàn)代碼著色方面有Bug,雖然已有解決方法,不過由于代碼量的原因(用記事本寫代碼真的很惱火),暫時未糾正,另外預(yù)計將來加入自動完成等功能。
ps:利用VBS腳本+DHTML,主要功能由正則表達(dá)式+wmic來完成,代碼需保存為HTA類型的文件,當(dāng)然也可以更改為純粹的VBS腳本,不過那樣效率低多了,而且代碼更復(fù)雜。
復(fù)制代碼 代碼如下:
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
'*******************************************************************'
'顏色轉(zhuǎn)換
'*******************************************************************'
Sub ChangeColor
if cxs.value = "vbs" then
WinMain.innerHTML = ChangeVBS(WinMain.innerText)
else 'CMD腳本
WinMain.innerHTML = ChangeCMD(WinMain.innerText)
end if
end Sub
'*******************************************************************'
'VBS轉(zhuǎn)換模塊
'*******************************************************************'
Function ChangeVBS(sText)
Set re=new RegExp
re.IgnoreCase =true
re.Global=true
'注釋轉(zhuǎn)換
re.Pattern = "(\'.*)rn"
sText = re.Replace(sText,"font color=#339999>$1/font>p>")
'轉(zhuǎn)換符號為[藍(lán)色]
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> ")
'轉(zhuǎn)換保留字為[藍(lán)色]
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>")
'轉(zhuǎn)換函數(shù)和對象為[紅色]
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轉(zhuǎn)換模塊
'*******************************************************************'
Function ChangeCMD(sText)
Set re=new RegExp
re.IgnoreCase =true
re.Global=true
'等號轉(zhuǎn)換
'sText = Replace(sText,"/","font color=#FF0000>//font>")
re.Pattern = "(\%|\=|\/[a-z]*\b|\&;|\|\|)"
sText = re.Replace(sText,"font color=#FF8C00>$1/font>")
'注釋轉(zhuǎn)換
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 = "(bShareb|bSetverb|bNlsfuncb|bMemb|bLhb" _
"|bLoadhighb|bloadfixb|bGraphicsb|bForcedosb" _
"|bFastopenb|bExe2binb|bEdlinb|bEdlinb|bEditb" _
"|bDebugb|bDebugb|bAppendb|bSwitchesb|bStacksb" _
"|bShellb|bNtcmdpromptb|bLastdriveb|bInstallb" _
"|bFilesb|bFcbsb|bEchoconfigb|bDriveparmb|bDosonlyb" _
"|bDosb|bDevicehighb|bDeviceb|bCountryb|bBuffersb" _
"|bXcopyb|bWMICb|bWinnt32b|bWinntb|bW32tmb" _
"|bVssadminb|bVolb|bVerifyb|bVerb|bUnlodctrb" _
"|bTypeperfb|bTypeb|bTreeb|bTracertb|bTracerptb" _
"|bTitleb|bTimeb|bTftpb|bTelnetb|bTcmsetupb" _
"|bTasklistb|bTaskkillb|bSfcb|bSysteminfob|bSubstb" _
"|bStartb|bSortb|bShutdownb|bShiftb|bSetlocalb|bSetb" _
"|bSeceditb|bSchtasksb|bScb|bRunasb|bRsmb|bRshb" _
"|bRouteb|bRmdirb|bRexecb|bResetb|bReplaceb|bRenameb" _
"|bRelogb|bRegsvr32b|bRegb|bRecoverb|bRcpb|bRasdialb" _
"|bQueryb|bPushdb|bPromptb|bPrnqctlb|bPrnportb" _
"|bPrnmngrb|bPrnjobsb|bPrndrvrb|bPrncnfgb|bPrintb" _
"|bPopdb|bPingb|bPerfmonb|bPentntb|bPbadminb|bPauseb" _
"|bPathpingb|bPathb|bPagefileconfigb|bOpenfilesb|bNtsdb" _
"|bNtcmdpromptb|bNtbackupb|bNslookupb|bNetstatb|bNetshb" _
"|bNetb|bNbtstatb|bMsinfo32b|bMsiexecb|bMoveb" _
"|bMountvolb|bMoreb|bModeb|bMmcb|bMdb|bMkdirb" _
"|bMacfileb|bLprb|bLpqb|bLogmanb|bLodctrb|bLabelb" _
"|bIrftpb|bIpxrouteb|bIpseccmdb|bIpconfigb|bIfb" _
"|bHostnameb|bHelpctrb|bHelpb|bGraftablb|bGpupdateb" _
"|bGpresultb|bGotob|bGetmacb|bFtypeb|bFtpb|bFsutilb" _
"|bFormatb|bForb|bFlattempb|bFingerb|bFindstrb|bFindb" _
"|bFcb|bExpandb|bExitb|bEvntcmdb|bEventtriggersb" _
"|bEventqueryb|bEventcreateb|bEndlocalb|bEchob" _
"|bDriverqueryb|bDoskeyb|bDiskPartb|bDiskcopyb" _
"|bDiskcompb|bDirb|bDelb|bDefragb|bDateb|bCScriptb" _
"|bCprofileb|bCopyb|bConvertb|bCompactb|bCompb" _
"|bCmstpb|bCmdb|bClsb|bCipherb|bChkntfsb|bChkdskb" _
"|bChdirb|bChcpb|bChangeb|bCallb|bCaclsb|bBreakb" _
"|bBootcfgb|bAttribb|bAtmadmb|bAtb|bAssocb|bArpb)"
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
'*******************************************************************'
'運(yùn)行代碼
'*******************************************************************'
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
'如果系統(tǒng)并非XP,IE不為6.0版本則退出
strWindowsVer = shell.RegRead _
("HKLMSOFTWAREMicrosoftWindows NTCurrentVersionProductName")
strIeVer = shell.RegRead _
("HKLMSOFTWAREMicrosoftInternet ExplorerVersion")
if strWindowsVer > "Microsoft Windows XP" or _
left(strIeVer,3) > "6.0" then
intFlag = msgbox("操作系統(tǒng)不是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
'*******************************************************************'
'復(fù)制到剪貼板
'*******************************************************************'
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 >
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="運(yùn)行代碼(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="復(fù)制著色代碼(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>
代碼打包下載