写入一个文件(2015年03月23日)

一点背景。我有一个在嵌入式 IE 浏览器中运行的映射程序。 IE 公开了我用来调用外部(桌面)方法的 IHTMLDocument2 = interface(IHTMLDocument)。效果很好,但 Google 将很快停止支持 IE,Edge 不支持外部调用。

  interface IMyExternal: IDispatch
  {
    [id(0x000000C9)]
    HRESULT _stdcall ShowQtrMinBounds([in] BSTR QtrNorth, [in] BSTR QtrSouth, [in] BSTR QtrEast, [in] BSTR QtrWest);
    [id(0x000000CA)]
    HRESULT _stdcall ShowMarker([in] BSTR MsgStream, [in] BSTR ticketID);
    [id(0x000000CD)]
    HRESULT _stdcall ManageQtrGrid([in] BSTR functionName, [in] BSTR retState);
    [id(0x000000CE)]
    HRESULT _stdcall SaveQtrMinutes([in] BSTR qtrMinuteCode);
    [id(0x000000CF)]
    HRESULT _stdcall WhoIsHere([in] BSTR qtrMinuteCode);
  };

为了解决这个问题,我决定写入一个文件。我旋转了一个线程来寻找应该与方法命名相同的文本文件。文件内容将是参数。

我的问题是我不是一个成熟的 JS 开发人员。我已经搜索了可用的脚本来帮助我入门。我发现:




    
    Title


Text to Save:
Filename to Save As:
function saveTextAsFile() { var textToWrite = document.getElementById("inputTextToSave").value; var textFileAsBlob = new Blob([textToWrite], {type:'text/plain'}); var fileNameToSaveAs = document.getElementById("inputFileNameToSaveAs").value; var downloadLink = document.createElement("a"); downloadLink.download = fileNameToSaveAs; downloadLink.innerHTML = "Download File"; if (window.webkitURL != null) { downloadLink.href = window.webkitURL.createObjectURL(textFileAsBlob); } downloadLink.click(); }

以上原则上有效,但我不能在实践中使用它。我不能使用用户输入。这是一个典型的调用。

function whoBeHere(point) {
    var LeftLat = (Math.floor(point.lat() / llOffset) * llOffset);
    var LeftLng = (Math.floor(point.lng() / llOffset) * llOffset);
    var qtrMinute = ddToQM(LeftLat, LeftLng);
    external.WhoIsHere(qtrMinute);  
}

图片[1]-写入一个文件(2015年03月23日)-唐朝资源网

我需要让我的脚本写入一个文件,在上述情况下,它将被命名为“WhoIsHere”,其内容将是“qtrMinute = 34.0, 82.44”

我看过 Node.JS,但这必须发生在客户端。

更多信息。我的程序在我称之为 Quarter Minutes 的 googlemaps 上创建了一个网格。我的用户在我称为 fencing 的过程中使用鼠标选择 qtr mins。

function SaveQtrMin() {
    for (var m in qtrArray) {
        external.SaveQtrMinutes(qtrArray[m].qtrMinute);
    }
}

现在写我调用我从 IE 的 Winapi.ActiveX 实例化的 COM 对象。它公开了允许我写入桌面的方法。SaveQtrMinutes(qtrArray[m].qtrMinute) 是我 10 年前在 Delphi 中编写的一个 COM 对象。 Google 正在限制从 IE 访问 Google 地图,因此我的 COM 对象将停止运行。

因此,为了使其正常工作,我决定与其调用 Edge 不支持的 Delphi 方法,不如直接写入文件。

我可以通过旋转在文件夹中查找文件的线程来监控何时写入文件。如果找到,它将运行文件中写入的过程。

认为您在 Google 地图中点击了餐厅。我希望浏览器将餐厅名称写入文件。我将运行一个进程,不断查看该文件夹,如果它是一个文件,它会打开它并以某种方式响应它。

谢谢

© 版权声明
THE END
喜欢就支持一下吧
点赞51赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容