hta实现记事本功能的代码分享(A notepad made in HTA)
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>