hta实现记事本功能的代码分享(A notepad made in HTA)
This notepad can handle bigger files than the one shiped with Win9x. Learn how to make windows looking interfaces in HTML. Interesting use of Commondialogs. 效果图:
复制代码 代码如下:
<html><head>
<HTA:APPLICATION
APPLICATIONNAME="HTANotePad" ID="oHTA" BORDER="thick" BORDERSTYLE="normal" CAPTION="yes" CONTEXTMENU="yes" INNERBORDER="no" MAXIMIZEBUTTON="yes" MINIMIZEBUTTON="yes" NAVIGABLE="yes" ICON="NOTEPAD.EXE" SCROLL="no" SCROLLFLAT="no" SELECTION="no" SHOWINTASKBAR="yes" SINGLEINSTANCE="no" SYSMENU="yes" VERSION="0.3" WINDOWSTATE="normal"><STYLE TYPE="text/css">
<!-- BODY{xfont-family: "Verdana, Arial, Helvetica, sans-serif"; font:menu; background-color:Menu; color:MenuText; xfont-size: 8pt; cursor:default; //auto, text, pointer } TABLE{xfont-family:"Arial"; xfont-size:8pt; font:menu; padding:0pt; border:0pt; FILTER: progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=90); } IFrame{height:expression(document.body.clientHeight-MenuTable.clientHeight); width:100%; } TD{border:"1px solid Menu";} .submenu{position:absolute;top=20; background-color:Menu; border="2px outset";} .MenuIn{border:'1px inset';} .Menuover{border:'1px outset';} .Menuout{border:'1px solid';} .Submenuover{background-color:highlight;color:highlighttext;} .Submenuout{background-color:Menu;color:MenuText;} --> </STYLE><script language=vbscript>
option explicit Dim FileName,fModif,LastChildMenu,LastMenu fModif=False'Not modified DisplayTitle Set LastChildMenu=Nothing Set LastMenu=Nothing Sub DisplayTitle If FileName="" Then document.Title="sans titre - " & oHTA.ApplicationName Else document.Title=FileName & " - " & oHTA.ApplicationName End If End Sub'''''''''''''''''''
' File management ' ''''''''''''''''''' Sub SaveAs Dim oDLG Set oDLG=CreateObject("MSComDlg.CommonDialog") With oDLG .DialogTitle="SaveAs" .Filter="Scripts|*.vbs;*.hta;*.wsf;*.js|Text Files|*.txt|All files|*.*" .MaxFileSize=255 .ShowSave If .FileName<>"" Then FileName=.FileName Save End If End With Set oDLG=Nothing DisplayTitle End Sub Sub Save() Dim fso,f If FileName<>"" Then Set fso=CreateObject("Scripting.FileSystemObject") Set f=fso.CreateTextFile(FileName,True) f.Write MyFrame.MyText.Value f.Close Set f=Nothing Set fso=Nothing Else SaveAs End If End Sub Sub OpenIt Dim fso,f Set fso=CreateObject("Scripting.FileSystemObject") Set f=fso.OpenTextFile(FileName,1) MyFrame.MyText.Value=f.ReadAll f.close Set f=Nothing Set fso=Nothing DisplayTitle End Sub Sub Open() If fModif Then Select Case Msgbox("The text in the file " & FileName & " has been changed." _ & vbCrLf & "Do you want to save the changes ?",51,oHTA.ApplicationName) Case 6'Yes Save Case 7'No Case 2'Cancel Exit Sub End Select End If Dim oDLG Set oDLG=CreateObject("MSComDlg.CommonDialog") With oDLG .DialogTitle="Open" .Filter="Scripts|*.vbs;*.hta;*.wsf;*.js|Text Files|*.txt|All files|*.*" .MaxFileSize=255 .Flags=.Flags Or &H1000'FileMustExist (OFN_FILEMUSTEXIST) .ShowOpen If .FileName<>"" Then FileName=.FileName OpenIt End If End With Set oDLG=Nothing End Sub Sub NewText If fModif Then Select Case Msgbox("The text in the file " & FileName & " has been changed." _ & vbCrLf & "Do you want to save the changes ?",51,oHTA.ApplicationName) Case 6'Yes Save Case 7'No Case 2'Cancel Exit Sub End Select End If MyFrame.MyText.Value="" FileName="" DisplayTitle End Sub'''''''''''''''
' Drag & Drop ' ''''''''''''''' Sub ChangeIFrame 'We use an Iframe to allow Drag&Drop MyFrame.Document.Body.InnerHTML="<textarea ID=MyText WRAP=OFF onChange" & _ "='vbscript:parent.fModif=True' onclick='vbscript:parent.HideMenu' " & _ "style='width:100%;height:100%'></textarea>" With MyFrame.Document.Body.Style .marginleft=0 .margintop=0 .marginright=0 .marginbottom=0 End With With MyFrame.MyText.Style .fontfamily="Fixedsys, Verdana, Arial, sans-serif" '.fontsize="7pt" End With Select Case UCase(MyFrame.location.href) Case "ABOUT:BLANK" FileName="" Case Else FileName=Replace(Mid(MyFrame.location.href,9),"/","\") 'suppress file:/// OpenIt End Select End Sub'''''''''''''''''''
' Menu management ' ''''''''''''''''''' Sub ShowSubMenu(Parent,Child) If Child.style.display="block" Then Parent.classname="Menuover" Child.style.display="none" Set LastChildMenu=Nothing Else Parent.classname="Menuin" Child.style.display="block" Set LastChildMenu=Child End If Set LastMenu=Parent End Sub Sub MenuOver(Parent,Child) If LastChildMenu is Nothing Then Parent.className="MenuOver" Else If LastMenu is Parent Then Parent.className="MenuIn" Else HideMenu ShowSubMenu Parent,Child End If End If End Sub Sub MenuOut(Menu) If LastChildMenu is Nothing Then Menu.className="MenuOut" End Sub Sub HideMenu If Not LastChildMenu is Nothing Then LastChildMenu.style.display="none" Set LastChildMenu=Nothing LAstMenu.classname="Menuout" End If End Sub Sub SubMenuOver(Menu) Menu.className="SubMenuOver" 'LastMenu.classname="Menuin" End Sub Sub SubMenuOut(Menu) Menu.className="SubMenuOut" End Sub</script>
</head><body leftmargin=0 topmargin=0 rightmargin=0>
<TABLE id=MenuTable><TR> <TDonclick='ShowSubMenu Me,MyFileMenu' onmouseover='MenuOver Me,MyFileMenu' onmouseout='MenuOut Me'> File </TD> <TDonclick='ShowSubMenu Me,MyEditMenu' onmouseover='MenuOver Me,MyEditMenu' onmouseout='MenuOut Me'> Edit </TD> <TDonclick='ShowSubMenu Me,MyFindMenu' onmouseover='MenuOver Me,MyFindMenu' onmouseout='MenuOut Me'> Find </TD> <TDonclick='ShowSubMenu Me,MyHelpMenu' onmouseover='MenuOver Me,MyHelpMenu' onmouseout='MenuOut Me'> ? </TD> <TD onclick="HideMenu" width=100% border=2></TD> </TR></TABLE> <TABLE ID=MyFileMenu class=submenu style="left=2;display:none;"><TR> <TDonclick="HideMenu:NewText" onmouseover='Submenuover Me' onmouseout='Submenuout Me'> New</TD></TR> <TR><TDonclick="HideMenu:open" onmouseover='Submenuover Me' onmouseout='Submenuout Me'> Open</TD></TR> <TR><TDonclick="HideMenu:save" onmouseover='Submenuover Me' onmouseout='Submenuout Me'> Save</TD></TR> <TR><TDonclick="HideMenu:saveAs" onmouseover='Submenuover Me' onmouseout='Submenuout Me'> Save As</TD></TR> <TR><TD><HR></TD></TR> <TR><TDonclick="HideMenu:window.close" onmouseover='Submenuover Me' onmouseout='Submenuout Me'> Quit</TD></TR> </TABLE> <TABLE ID=MyEditMenu class=submenu style="left=30;display:none;"><TR> <TD><HR width=50px></TD></TR> </TABLE> <TABLE ID=MyFindMenu class=submenu style="left=60;display:none;"><TR> <TD><HR width=50px></TD></TR> </TABLE> <TABLE ID=MyHelpMenu class=submenu style="left=90;display:none;"><TR> <TDonclick='HideMenu:msgbox "No help available yet;under construction ;=)"' onmouseover='Submenuover Me' onmouseout='Submenuout Me'>Help</TD></TR> <TR><TDonclick='HideMenu:CreateObject("MSComDlg.CommonDialog").AboutBox' onmouseover='Submenuover Me' onmouseout='Submenuout Me'>About</TD></TR> </TABLE><iframe id=MyFrame application=yes scrolling=no onload="ChangeIFrame"></iframe>
<script language=vbscript>
'We can handle a file as a parameter to this HTA Dim x FileName=Trim(oHTA.CommandLine) x=Instr(2,FileName,"""") If x=Len(FileName) Then FileName=""'No File Loaded Else FileName=Trim(Mid(FileName,x+1)) OpenIt End If </script> </body></html>