0

我的 HTML 应用程序文件F:\relroot\libname.lib\textapp.hta(名称已更改)包含以下功能:

function fullNameOfFile(filename) { 
     var fso = newMedium(); return fso.GetAbsolutePathName(filename)
}

当我通过运行应用程序Open或在目录中双击它时,

fullNameOfFile("../etc.txt")返回"F:\relroot\etc.txt"[完美运行!]。

但是,当我通过 运行它Open with:Microsoft HTML Apln Host时:

fullNameOfFile("../etc.txt")返回"C:/Windows/etc.txt"[错误的数字!]。

无论应用程序如何运行,我应该如何编码才能开始工作?

4

1 回答 1

0

我想我可能有“Aspie-rigged”一个解决方案(或者两个)

显然,通过Open(或双击)打开 HTML 应用程序会将“当前”目录预设为包含应用程序的目录,同时通过以下方式打开Open WithMicrosoft® HTML Application Host使用默认目录(如 « C:\WINDOWS\system32»)

var shell = new ActiveXObject("WScript.Shell");
var wasDir = shell.currentDirectory  /* OPTIONAL: push original current directory
                                            to allow restoration later */
    var swDL = false;                      // for differences in device file format
    var splitter = (swDL ? '/'   : '\\')   // foreslash v. backslash
    var slashes  = (swDL ? '///' : '//')   /* slashes between scheme/protocol
                                                and authentication/host */
var lhref = swDL ? unescape(location.href) : document.URL;
var newDir = lhref.slice(location.protocol.length + slashes.length,
                   lhref.lastIndexOf(splitter));
/*
//  uncomment this block for an "inside window"

alert("Entering Directory: «" + wasDir + "»\n" +
         "Protocol/Scheme: «" + location.protocol + "»\n" +
           "Location HREF: «" + lhref + "»\n" +
         "Trial Directory: «" + newDir + "»");
*/
shell.currentDirectory = newDir

它似乎在我的系统(戴尔 PC、Internet Explorer/¿Edge)上发挥了作用。我还发表了一些评论,以防下一个用户需要为他们的系统调整它。

于 2018-04-22T17:03:46.623 回答