使用 .hta 文件打开文件
Open a file with a .hta file
我正在制作两个 HTA 应用程序。一个是安装另一个。下面的代码是安装程序 HTA 中的 VBScript,它可以让计算机识别 .sjs 扩展名(我创建的扩展名,它与正在安装的 HTA 有关)。
Public Sub Association(EXT, FileType, FileName, Icon)
Set b = CreateObject("wscript.shell")
b.regwrite "HKCR\" & EXT & "\", FileType
b.regwrite "HKCR\" & FileType & "\", "MY file"
b.regwrite "HKCR\" & FileType & "\DefaultIcon\", Icon
b.regwrite "HKCR\" & FileType & "\shell\open\command\", FileName & " %L"
b.regdelete "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\" & EXT & "\Application"
b.regwrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\" & EXT & "\Application", FileName
b.regdelete "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\" & EXT & "\OpenWithList\"
b.regwrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\" & EXT & "\OpenWithList\a", FileName
End Sub
Association ".sjs", "SJS file", "C:\Users\Donald\my_app.hta","C:\Users\Donald\Desktop\my_icon.ico"
我希望它这样做,以便当我打开一个 .sjs 文件时,它会打开文件 C:\Users\Donald\my_app.hta,但像这样它会打开一个对话框,其中显示 "C:\Users\Donald\Documents\file.sjs isn't a valid Win32 application".我怎样才能让它按照我的意愿运行?
- 不检查错误就使用
On Error Resume Next
是不负责任的
[Dim ] xxx As Object
不是有效的 VBScript。 (应该是:[Dim ] xxx As yyy
以强调 所有 类型的声明在 VBScript 中都是非法的)
解决这个问题,然后重试。使用 ftype
和 assoc
检查注册表操作的结果。
再想想:
我认为 .HTA 文件should/must 可以用mshta.exe
打开。 (应该在某处有一个 "explicitly";见下文)
更新:
我使用 isql.hta 以交互方式使用 ADO 数据库。参数和语句存储在 .isql 文本文件中。所以试图模仿你的问题:"I want .isql files associated with the isql.hta application; proof of success: doubleclick on .isql file opens isql.hta"。所以
assoc .isql=ISQLFile
.isql=ISQLFile
ftype ISQLFile="X:\pathto\isql.hta" %*
ISQLFile="X:\pathto\isql.hta" %*
Doubleclick =>
---------------------------
M:\lib\amfvbs0703\amsinc.isql
---------------------------
M:\lib\amfvbs0703\amsinc.isql is not a valid Win32 application.
---------------------------
OK
---------------------------
M: is a mapped drive; so Windows thinks it's enemy country.
ftype ISQLFile=c:\WINDOWS\system32\mshta.exe "X:\pathto\isql.hta" %*
ISQLFile=c:\WINDOWS\system32\mshta.exe "X:\pathto\isql.hta" %*
Doubleclick => SUCCESS
我正在制作两个 HTA 应用程序。一个是安装另一个。下面的代码是安装程序 HTA 中的 VBScript,它可以让计算机识别 .sjs 扩展名(我创建的扩展名,它与正在安装的 HTA 有关)。
Public Sub Association(EXT, FileType, FileName, Icon)
Set b = CreateObject("wscript.shell")
b.regwrite "HKCR\" & EXT & "\", FileType
b.regwrite "HKCR\" & FileType & "\", "MY file"
b.regwrite "HKCR\" & FileType & "\DefaultIcon\", Icon
b.regwrite "HKCR\" & FileType & "\shell\open\command\", FileName & " %L"
b.regdelete "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\" & EXT & "\Application"
b.regwrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\" & EXT & "\Application", FileName
b.regdelete "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\" & EXT & "\OpenWithList\"
b.regwrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\" & EXT & "\OpenWithList\a", FileName
End Sub
Association ".sjs", "SJS file", "C:\Users\Donald\my_app.hta","C:\Users\Donald\Desktop\my_icon.ico"
我希望它这样做,以便当我打开一个 .sjs 文件时,它会打开文件 C:\Users\Donald\my_app.hta,但像这样它会打开一个对话框,其中显示 "C:\Users\Donald\Documents\file.sjs isn't a valid Win32 application".我怎样才能让它按照我的意愿运行?
- 不检查错误就使用
On Error Resume Next
是不负责任的 [Dim ] xxx As Object
不是有效的 VBScript。 (应该是:[Dim ] xxx As yyy
以强调 所有 类型的声明在 VBScript 中都是非法的)
解决这个问题,然后重试。使用 ftype
和 assoc
检查注册表操作的结果。
再想想:
我认为 .HTA 文件should/must 可以用mshta.exe
打开。 (应该在某处有一个 "explicitly";见下文)
更新:
我使用 isql.hta 以交互方式使用 ADO 数据库。参数和语句存储在 .isql 文本文件中。所以试图模仿你的问题:"I want .isql files associated with the isql.hta application; proof of success: doubleclick on .isql file opens isql.hta"。所以
assoc .isql=ISQLFile
.isql=ISQLFile
ftype ISQLFile="X:\pathto\isql.hta" %*
ISQLFile="X:\pathto\isql.hta" %*
Doubleclick =>
---------------------------
M:\lib\amfvbs0703\amsinc.isql
---------------------------
M:\lib\amfvbs0703\amsinc.isql is not a valid Win32 application.
---------------------------
OK
---------------------------
M: is a mapped drive; so Windows thinks it's enemy country.
ftype ISQLFile=c:\WINDOWS\system32\mshta.exe "X:\pathto\isql.hta" %*
ISQLFile=c:\WINDOWS\system32\mshta.exe "X:\pathto\isql.hta" %*
Doubleclick => SUCCESS