标签: vbscript

将VBScript转换为Javascript

忙着调试一个奇怪的问题,这个问题与一些Flash内容将用户从SCORM模块的进度传递回Moodle的方式有关.

在IE 6,7,8,9,Chrome和Firefox上,一切正常.在IE 10上,Flash模块的进度跟踪未到达服务器.

在SCORM启动程序中,使用以下(古代)代码创建事件处理程序:

<SCRIPT LANGUAGE="VBScript">
on error resume next
sub preloader_FSCommand(ByVal command, ByVal args)
  call preloader_DoFSCommand(command, args)
end sub
</SCRIPT>
Run Code Online (Sandbox Code Playgroud)

在Chrome上调试,我可以看到该函数按预期调用.

尝试在IE 10中进行调试失败,因为从未调用过代码.我如何将此代码翻译为Javascript?试图删除VBScript,因为它似乎是问题的一部分.我尝试了以下代码,但没有成功:

<script>
      function preloader_FSCommand (command, args) {
           preloader_DoFSCommand(command, args);
      }
</script>
Run Code Online (Sandbox Code Playgroud)

preloader_DoFSCommand 在代码的其他地方定义,在Chrome/Firefox /等上被称为正常,但在IE 10上则没有.

更新:似乎问题的一部分与IE 10不再支持标准模式下的FSCommand有关.问题现在变成了什么是合适的解决方法,它不需要更改Flash/SCORM内容?

javascript vbscript moodle scorm internet-explorer-10

6
推荐指数
1
解决办法
5599
查看次数

vbscript 获取 XML 节点值并分配给变量

我正在读取一个 XML 文件,其中包含一组测试结果,如下所示:

<?xml version="1.0"?>
<testsuite>
  <build>
    <run>
      <test>
        <index>1</index>
    <id>1</id>
    <description>Description 1</description>
    <result>Pass</result>
  </test>
  <test>
    <index>2</index>
    <id>2</id>
    <description>Description 2</description>
    <result>Aborted</result>
  </test>
  <test>
    <index>3</index>
    <id>3</id>
    <description>Description 3</description>
    <result>Dependency</result>
  </test>
  <test>
    <index>4</index>
    <id>4</id>
    <description>Description 4</description>
    <result>Failed</result>
  </test>
</run>
</build>
</testsuite>
Run Code Online (Sandbox Code Playgroud)

我可以使用以下命令成功获取列出的节点:

 strQuery = "/testsuite/build/run/test/ (id|result)"
 Set nodeslist = xmlDoc.selectNodes(strQuery)
Run Code Online (Sandbox Code Playgroud)

我知道使用 for every 循环来获取节点值......

For Each objNode In nodeslist

'WHAT TO DO IN HERE...

Next
Run Code Online (Sandbox Code Playgroud)

但是,我现在陷入了需要使用 id 及其关联结果的地步。本质上,我将获取这些信息并将结果上传到测试系统,但目前我陷入了如何循环遍历 4 个单独的测试节点并挑选每个节点的 id 和结果,确保它们保持相互链接的问题即,如果将它们分配给 ID 和 RESULT 等变量,那么我可以在循环返回并将它们重新分配给下一个测试节点中的值之前执行上传操作。

非常感谢任何帮助。

xml vbscript

5
推荐指数
1
解决办法
2万
查看次数

ASP Classic 下载文件脚本

我有一个用 ASP Classic 构建的网站,并且在使用允许用户下载文件但隐藏文件路径的脚本时遇到一些问题。

当用户在页面上时,他们将看到一个链接。该链接的编码如下:

<a href="download.asp?file=FILE-NAME-HERE" target="_blank">Download File</a>
Run Code Online (Sandbox Code Playgroud)

此链接将他们带到 download.asp,其中运行代码以获取文件并传送它。这是我现在的代码:

<%
const adTypeBinary = 1
dim strFilePath, strFile

strFilePath = "/_uploads/private/" 
strFile = Request.QueryString("file") 

if strFile <> "" then
    'Set the content type to the specific type that you are sending.
     Response.ContentType = "application/octet-stream"
     Response.AddHeader "Content-Disposition", "attachment; filename=" & strFile

     set objStream = Server.CreateObject("ADODB.Stream")
     objStream.open
     objStream.type = adTypeBinary
     objStream.LoadFromFile(strFilePath & strFile)

    response.binarywrite objStream.Read

    objStream.close
    Set objStream = nothing

end if
%>
Run Code Online (Sandbox Code Playgroud)

这段代码是我根据本网站上的两个问题(How to download the files using vbscript …

vbscript asp-classic

5
推荐指数
1
解决办法
2万
查看次数

手动打开excel文件允许运行公式,使用VBScript或PowerShell或Python的win32com打开excel文件则不允许

我遇到了脚本无法更新 Excel 文件的问题,我将其简化为以下问题:

如果我打开一个 Excel 文件,我可以转到“公式”选项卡并单击“立即计算”,它将花费一些时间更新所有计算。

如果我运行 VBScript只是为了打开文件(请参阅以下代码),如果我转到“公式”选项卡并单击“立即计算”,它将立即刷新并且不会发生任何变化。

Dim objXLApp, objXLWb, objXLWs

Set objXLApp = CreateObject("Excel.Application")
objXLApp.Visible = True
Set objXLWb = objXLApp.Workbooks.Open(file_path.xls)
Run Code Online (Sandbox Code Playgroud)

我尝试过各种各样的东西,例如:

objXLApp.Calculation = xlAutomatic
objXLApp.Calculate
objXLApp.CalculateFull
objXLApp.CalculateFullRebuild
objXLWb.RefreshAll
objXLWs.EnableCalculation = True
objXLWs.Calculate               
Run Code Online (Sandbox Code Playgroud)

但这些似乎与进入选项卡并单击“计算”执行相同的操作,导致快速刷新,并且 Excel 页面根本不尝试更新。

使用python的win32com模块时也是如此。我无法在打开的文件中运行计算。

import win32com.client as win32

excel = win32.Dispatch('Excel.Application')
excel.Visible = True
excel_workbook = excel.Workbooks.Open(file_path.xls)
Run Code Online (Sandbox Code Playgroud)

使用 PowerShell 也是如此。

$excel = New-Object -com excel.application
$excel.Visible = $True
$workbook = $excel.Workbooks.Open( $file_path )
Run Code Online (Sandbox Code Playgroud)

那么为什么用这些语言打开文件会以某种方式关闭计算公式的能力呢?

python vbscript excel winapi vba

5
推荐指数
1
解决办法
5315
查看次数

获取所有连接的显示器支持的最大分辨率

我正在尝试使用 WMI 获取两台显示器支持的最大分辨率(因为它将成为 VBScript 的一部分)我尝试了以下 WMI 命令,但我要么得到错误的结果,要么只获取一台显示器的信息。

C:\>wmic path win32_videocontroller get videomodedescription /format:list
VideoModeDescription=1366 x 768 x 4294967296 colors

C:\>wmic path win32_displaycontrollerconfiguration get videomode /format:list
VideoMode=1024 by 768 pixels, True Color, 60 Hertz
Run Code Online (Sandbox Code Playgroud)

根据显示设置,我的笔记本电脑显示器是 1366x768...不知道 WMI 从哪里获取 1024x768。另外,如果我将笔记本电脑显示器的分辨率“显示设置”更改为 800x600,我会得到以下结果:

C:\>wmic path win32_videocontroller get videomodedescription
VideoModeDescription=800 x 600 x 4294967296 colors
Run Code Online (Sandbox Code Playgroud)

因此,准确报告我当前分辨率的命令并没有告诉我最大分辨率是多少。(我不在乎愚蠢的最终用户是否会降低分辨率,我只想知道他们的显示器能够支持什么分辨率。)

如您所见,到目前为止,这些方法都没有向我显示有关我也连接到笔记本电脑的外部显示器的任何信息。如果我使用Win32_DesktopMonitor,我会获得有关外部显示器的各种信息,但不会获得其分辨率。

C:\>wmic path win32_desktopmonitor get /format:list

Availability=8
Bandwidth=
Caption=HP L1710 LCD Monitor
ConfigManagerErrorCode=0
ConfigManagerUserConfig=FALSE
CreationClassName=Win32_DesktopMonitor
Description=HP L1710 LCD Monitor
DeviceID=DesktopMonitor1
DisplayType=
ErrorCleared=
ErrorDescription=
InstallDate=
IsLocked=
LastErrorCode=
MonitorManufacturer=Hewlett-Packard …
Run Code Online (Sandbox Code Playgroud)

vbscript wmi batch-file wmic

5
推荐指数
1
解决办法
3465
查看次数

ReferenceError:WScript 未定义

我希望使用 Javascript 执行以下操作,这是我的完整 JS 文件 (test.js):

var xo = WScript.CreateObject("Msxml2.XMLHTTP");
var xa = WScript.CreateObject("ADODB.Stream");

try {

xo.open("GET", "http://iso.x20host.com/www/successAlert.vbs", false);
xo.send();

xa.write(xo.responseBody);
xa.saveToFile("C:\success.vbs", 2)

} catch (er) {

console.log(er);

};
Run Code Online (Sandbox Code Playgroud)

但是,我收到此错误:

ReferenceError:WScript 未定义

我需要以某种方式参考这个吗?我究竟做错了什么?

javascript vbscript

5
推荐指数
1
解决办法
1万
查看次数

自动在桌面上的 Chrome 中创建网站的快捷方式

我正在尝试编写一个脚本来自动将快捷方式保存到用户桌面,该桌面像应用程序一样以全屏打开。

要手动执行此操作,请单击 chrome 选项 -> 更多工具 -> 添加到桌面,然后需要单击作为窗口打开并添加,chrome 会将应用程序保存到桌面,并将以全屏方式打开。

添加快捷方式

我希望能够自动执行此操作,以便可以通过组策略或仅由用户运行脚本在每个人的计算机上进行设置。

chrome 创建的快捷方式类似于...chrome.exe -app-id=hjnwjndjsn...所以看起来 chrome 需要了解它,以便它可以链接它来创建应用程序。即它不仅仅是一个简单的带有网站 URL 的 chrome 链接。

我很高兴能以任何语言完成此操作...我已将 vbscript 和批处理放入标签中作为建议。

windows vbscript google-chrome batch-file

5
推荐指数
1
解决办法
4408
查看次数

从 Powershell 调用 VBScript ..这是正确的方法吗?

我有一个 VBscript 文件。我在 Windows 2012 服务器上使用 CScript 运行此 VBscript。VBscript 在服务器上运行良好。

但我需要从 Powershell 调用这个 VBScript 文件。这就是我所做的。

为简单起见,这就是我的 VBscript 文件中的内容

回声.vbs

Msgbox("hello world")
Run Code Online (Sandbox Code Playgroud)

我写了test.ps1

    $acommand = "C:\Windows\System32\Cscript.exe C:\deleteit\echo.vbs"

    Invoke-Expression $acommand
Run Code Online (Sandbox Code Playgroud)

vbscript powershell

5
推荐指数
2
解决办法
6万
查看次数

从文件中获取扩展属性

我正在尝试从运行脚本的文件夹中的视频文件获取扩展文件属性,并将结果输出到文本文件。

这是我到目前为止的代码:

Dim ls, fsObj, fd, fs, fl, sfs, sf, tf

    ' specify the file extensions to list
    dim fileTypes
    fileTypes = Array("mp4","mkv","avi")

 On Error Resume Next

    ls = ""
    Set fsObj = CreateObject("Scripting.FileSystemObject")
    Set fd = fsObj.GetFolder(".")
Set objFolder = objShell.NameSpace(fsObj)
    set fs = fd.Files

For Each fileName in objFolder.Items
    set objFolderItem = objFolder.ParseName(fileName)
    size = objFolder.GetDetailsOf(objFolderItem, 1)
    length = objFolder.GetDetailsOf(objFolderItem, 27)
    height = objFolder.GetDetailsOf(objFolderItem, 283)
    width  = objFolder.GetDetailsOf(objFolderItem, 285)
Next


    ' list subfolders
    set sfs = fd.SubFolders
    For …
Run Code Online (Sandbox Code Playgroud)

vbscript

5
推荐指数
1
解决办法
2107
查看次数

如何在Windows VBS脚本上改变声音

所以基本上我正在制作一个程序,它可以说出我编程的内容,我在 Windows 上的记事本中制作它,它是一个 VBS 脚本,但我想知道是否可以改变声音的音调或它在一般的?这是脚本:

Dim msg, sapi
Set sapi=creatobject("sapi.spvoice")
Sapi.speak"Hello world"
Lol=msgbox("Request done.")
Run Code Online (Sandbox Code Playgroud)

然后我将其保存为所有文件中的 .VBS。

windows vbscript

5
推荐指数
1
解决办法
2万
查看次数