使用.hta文件打开文件

时间:2015-01-10 09:48:15

标签: windows vbscript hta

我正在制作两个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不是有效的Win32应用程序"。我怎么能按照我的意愿这样做?

1 个答案:

答案 0 :(得分:2)

  1. 使用On Error Resume Next而不进行错误检查是不负责任的。
  2. [Dim ] xxx As Object不是有效的VBScript。 (应该是:[Dim ] xxx As yyy强调所有类型的声明在VBScript中都是非法的)
  3. 修复此问题并重试。使用ftypeassoc检查注册表操作的结果。

    第二个想法:

    认为应该/必须使用mshta.exe打开.HTA文件。 (应该明确地"在某处;见下文)

    <强>更新

    我使用isql.hta以交互方式处理ADO数据库。参数和语句存储在.isql文本文件中。所以试图模仿你的问题:&#34;我想要与isql.hta应用程序相关的.isql文件;成功的证明:双击.isql文件打开isql.hta&#34;。所以

    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