2015-01-10 55 views
0

我正在制作两个HTA应用程序。一个是安装另一个。下面的代码是安装程序HTA中的VBScript,它可以让计算机识别.sjs扩展名(我创建的扩展名以及与正在安装的HTA相关的扩展名)。使用.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:\用户\唐纳德\ my_app.hta,但这样它会打开一个对话框,它说“ C:\ Users \ Donald \ Documents \ file.sjs不是有效的Win32应用程序“。我该怎么做才能按照我的意愿去做?

回答

2
  1. 使用On Error Resume Next没有错误检查是不负责任的。
  2. [Dim ] xxx As Object是无效的VBScript。 (应该是:[Dim ] xxx As yyy强调的是,所有输入声明在VBScript中是非法的)

修复了,然后再试一次。使用ftypeassoc检查注册表操作的结果。

关于第二个想法:

认为一个.HTA文件应该/必须以mshta.exe打开。 (应该有一个“明确”的地方,见下文)

更新:

我用isql.hta交互与ADO数据库工作。参数和语句存储在.isql文本文件中。因此,试图模仿你的问题:“我想.isql文件与isql.hta应用程序相关联;成功证明:双击.isql文件打开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 
+0

我试图拿走你告诉我改变的两行(我也编辑了这个问题,这就是为什么他们不再是问题了)。现在计算机可以识别.sjs文件,但是当我打开它们时,它仍然会出错。 –

+0

我不想用另一个程序打开一个.hta而不是mshta.exe,我试图用.hta打开一个.sjs文件,通常用.exe文件打开其他文件 –

+0

@DonaldDuck - 你还有' xxx as yyy'在Sub定义的参数列表中。 –