VB.NET 中的 WScript?

2024-02-08

这是我的程序中的一段代码:

WSHShell = WScript.CreateObject("WScript.Shell")

但由于某种原因,“WScript”没有声明。我知道这段代码可以在 VBScript 中运行,但我正在尝试让它在 vb.net 中运行。出了什么问题吗?


The WScript对象特定于 Windows 脚本宿主,在 .NET Framework 中不存在。

事实上,所有的WScript.Shell.NET Framework 类中提供了对象功能。因此,如果要将 VBScript 代码移植到 VB.NET,则应该使用 .NET 类重写它,而不是使用 Windows Script Host COM 对象。


如果由于某种原因您更喜欢使用 COM 对象,则需要将适当的 COM 库引用添加到您的项目中,以便使这些对象可供您的应用程序使用。的情况下WScript.Shell, it's %WinDir%\System32\wshom.ocx (or %WinDir%\SysWOW64\wshom.ocx在 64 位 Windows 上)。然后你可以编写这样的代码:

Imports IWshRuntimeLibrary
....
Dim shell As WshShell = New WshShell
MsgBox(shell.ExpandEnvironmentStrings("%windir%"))


或者,您可以使用以下命令创建 COM 对象的实例

Activator.CreateInstance(Type.GetTypeFromProgID(ProgID))

and then work with them using late binding. Like this, for example*:

Imports System.Reflection
Imports System.Runtime.InteropServices
...

Dim shell As Object = Nothing

Dim wshtype As Type = Type.GetTypeFromProgID("WScript.Shell")
If Not wshtype Is Nothing Then
    shell = Activator.CreateInstance(wshtype)
End If

If Not shell Is Nothing Then
    Dim str As String = CStr(wshtype.InvokeMember(
        "ExpandEnvironmentStrings",
        BindingFlags.InvokeMethod,
        Nothing,
        shell,
        {"%windir%"}
    ))
    MsgBox(str)

    ' Do something else

    Marshal.ReleaseComObject(shell)
End If

* I don't know VB.NET well, so this code may be ugly; feel free to improve.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VB.NET 中的 WScript? 的相关文章

  • 命令式代码与声明式代码[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我试图理解命令式范例和声明式范例之间的区别 因为我必须对 Visual Basic 进行分类 NET 在不同的范式中 除了面向对象之外
  • 将列表(对象)转换为列表(字符串)

    有没有办法转换List of Object to a List of String 在 c 或 vb net 中而不迭代所有项目 幕后迭代很好 我只想要简洁的代码 Update 最好的方法可能就是进行新的选择 myList Select f
  • 为什么 Dictionary 上的这个 Linq 查询不作为数据源工作

    我在VB中有以下内容 Dim sources From source In importSources Select New With Type source Key Source source Value Name dgridSource
  • VB SQL 语句未选择正确的行

    我试图使用 SELECT 语句在我的数据库中 选择 一个人 但它没有选择正确的人 我也不确定为什么 我正在使用访问数据库 数据库连接代码 Imports System Data OleDb Module Database Connectio
  • DataTable:通过 LINQ 或 LAMBDA 进行动态 Group By 表达式

    我有一个数据表 我想在其中对未指定数量的字段进行分组 发生这种情况的原因是用户可以选择他想要分组的字段 所以 实际上 我将选择推入列表中 在这个选择上 我必须对我的数据表进行分组 想象一下这段代码 VB 或 C 都一样 public voi
  • 使用正则表达式验证器上传文件不适用于仅 Firefox IE

    我有一个带有 RegularExpressionValidator 的 FileUpload 和以下验证表达式 a zA Z 2 w w w gif jpg JPG JPEG GIF jpeg png bmp 3dm 3dmf ai drw
  • 将字符串转换为双精度 - VB

    VB中有没有一种有效的方法来检查字符串是否可以转换为双精度型 我目前正在尝试将字符串转换为双精度型 然后查看它是否引发异常 但这似乎减慢了我的申请速度 Try if number then format it current CDbl x
  • 如何四舍五入到一半,始终为正方向? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如何实现以下舍入 0 0126083
  • 如何在 VB.NET 中声明和初始化多维数组?

    我想做这个 Dim Numbers As Integer 1 2 3 4 5 6 7 IDE 的下划线4 5 6 7并说Array initializer has 3 too many elements 我究竟做错了什么 以下应该有效 Di
  • 如何在远程机器上执行vbs文件

    如何在不使用 PsExec 的情况下执行位于同一域中的远程计算机上的 VBScript 我尝试了以下代码 但没有运气 Sub RunCommand strComputer Command Set objWMIService GetObjec
  • 没有为 1 个或多个必需参数给出值。更新SQL

    我正在编写一个程序 当用户在列表视图上选择记录时 该程序会更新密码或积分 我收到错误 没有为 1 个或多个必需参数给出值 我不知道如何纠正 我是否遗漏了一些明显的东西 Dim sql As String UPDATE Users SET P
  • 经典的asp字符编码

    我在经典 asp 网站中遇到西班牙字符问题 用户可以在 aspx 页面上的表单中提交他们的姓名 地址 然后 aspx 页面将 ajax post 发送到经典的 asp 页面 它所做的所有操作都存储在我们的 Sql 2008 DB 中 我可以
  • 如何设置 Firefox 配置文件:Selenium RC、.Net 客户端驱动程序?

    我正在使用 Selenium RC Net 客户端驱动程序 我在 c selenium 目录中创建了一个 Firefox 配置文件 这是我的代码 Dim MySelenium As ISelenium Nothing MySelenium
  • 检查 DBNull 会引发 StrongTypingException

    我正在使用数据集从数据库中提取数据 一行中的一个字段是NULL 我知道这个 但是 以下 vb net 代码会抛出StrongTypingException 在数据集设计器中自动生成的 get SomeField 方法中 If Not IsD
  • 在 VB 2010 中禁用“默认实例”

    我已经开始在 VB 2010 中做一些基本的 win 表单工作 我真的很烦恼默认实例 https stackoverflow com q 4698538 794234特征 有没有办法可以完全禁用它并像普通类一样使用这些类 向表单的构造函数添
  • 设置国际货币格式

    我有一个 asp net 应用程序 我们正在 全球化 过程中 我将 currentculture 和 currentUICultre 设置为适当的值 并且货币按预期使用货币格式显示 即 FormatCurrency nPrice 产生 en
  • 为什么 vbscript Mid 函数显示错误“无效的过程调用或参数:Mid”

    您好 下面是我的 ASPClassic 代码 其中 csvData 是一个包含变量的非常大的字符串 现在在 Mid 函数调用的这一行中出现错误 无效的过程调用或参数 Mid 为什么会发生这种情况 Dim dataLen Dim fromLe
  • VB.NET vNext 中的迭代器以及 C# 中迭代​​器的限制

    我刚刚在上看到异步CTP网站 http msdn microsoft com en us vstudio async aspxVB NET 的下一个版本将有迭代器 我猜它们包含了迭代器 因为重写过程与新的迭代器所使用的过程类似 async
  • 如何在VB函数中添加可选参数/默认值参数?

    如何在 Visual Basic 中创建一个包含可选参数的方法 Use the Optional关键字并提供默认值 可选参数必须是最后定义的参数 以避免创建不明确的函数签名 Sub MyMethod ByVal Param1 As Stri
  • xmlns 元素的顺序重要吗

    我不知道如何在 google 中搜索此内容 但是 xmlns 元素的问题在 XML 文件中重要吗 我正在 ASP NET VB 中使用 XMLWriter 创建一个 XML 文件 并且尝试匹配我提供的示例

随机推荐

  • 在循环列时如何在 pandas 中生成清晰的绘图?

    生成可复制性的数据帧 df pd DataFrame np random randn 50 1000 columns list ABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDAB
  • CMake:CMAKE_REQUIRED_LIBRARIES 中的库顺序,用于在配置时测试最小程序

    我编写了这段小代码 以确保我的软件在必要时链接到 libatomic 通常只有在 Raspberry Pi 上才需要链接到 libatomic 目前 我使用的是 Raspberry Pi 4 带有 Raspbian Bullseye 64
  • SFINAE 与 std::enable_if 和 std::is_default_constructible 用于 libc++ 中的不完整类型

    当使用 SFINAE 检测模板化类型是否默认可构造时 我刚刚观察到 libc 的一个奇怪问题 以下是我能想到的一个最小示例 include
  • Rails、Puma、Sidekiq 如何计算总数据库连接数?

    我正进入 状态ActiveRecord ConnectionTimeoutError一天一次或两次 有人可以帮助我计算我的应用程序与数据库建立的连接数量吗 以及优化我的连接的建议 这是我的配置 AWS Database Mysql Vers
  • 在循环中创建变量和数据集? (右)

    这是我第一次尝试使用 R 构建函数 基本上我的预期目标如下 使用 RoogleVision 包与 Google Cloud Vision API 进行通信 该函数遍历目录中的图像 从 Google Vision 功能中检索每张图片的所需信息
  • 异步方法在调用或等待时抛出异常吗?

    当我调用异步方法并取回任务时 它会立即抛出还是会等到我等待任务 换句话说 这段代码能工作吗 或者我是否也必须将方法调用包装在 try 块中 Task task ThisMethodWillThrow try await task catch
  • 詹金斯管道作业的 Cobertura 代码覆盖率报告

    我正在使用 jenkins 的管道插件 我想为每次运行生成代码覆盖率报告并将其与管道用户界面一起显示 有没有一个插件可以用来做到这一点 例如 Cobertura 但它似乎不受管道支持 有一种方法可以添加管道步骤来发布覆盖率报告 但它不会显示
  • 多对多关系中的多个级联删除路径 (EF 4.1)

    表格 Shop Product Category 关系 Shop 1 lt gt n Categories Shop 1 lt gt n Products Categories n lt gt n Products 级联删除 Shop gt
  • 如何形成 cfhttp 调用来使用自定义 Web 服务 API

    我已经做了 11 年的 cf 开发人员 但很不好意思地说我在 Web 服务方面没有做过任何实质性的事情 如何形成 cfhttp 调用来使用供应商提供的以下 Web 服务 API 肥皂 1 2 要求 POST Portal internet
  • as.numeric 函数更改我的数据框中的值[重复]

    这个问题在这里已经有答案了 我有一列包含速度测量值 我需要将其更改为数字 以便我可以使用平均值和总和函数 然而 当我转换它们时 值会发生很大的变化 为什么是这样 这是我的数据最初的样子 这是数据框的结构 data frame 1899571
  • 如何在使用“layoutAttributesForElements”时对集合视图布局更改进行动画处理?

    我制作了一个自定义集合视图流布局 可以在 胶片带 和 列表 布局之间切换 带动画 但在向边缘单元添加一些奇特的动画后 切换动画中断了 这是目前的样子 没有进行这些更改 动画很流畅 对吧 这是当前的工作代码 完整的演示项目在这里 https
  • 找到两点之间角度的最快方法

    为了提高查找角度正弦 余弦的速度 我构建了一个参考表 而不是即时计算它们 我对从一点到另一点求角度也有同样的想法 我创建了一个包含 3600 个归一化向量的表 3600 10 十分之一度的精度 每当我需要知道从一个点到下一个点的角度时 我都
  • 从子片段访问父片段方法

    我正在尝试从以下位置访问Map分片至myfunction 位于父片段中Tabs 我尝试了以下行Tabs parentFragment Tabs getParentFragment 但是parentFragment 为空 我阅读了有关该主题的
  • 计算单元格中值的数量(空白除外)

    我有一个使用允许多项选择的下拉列表的单元格 如何计算选择的数量 我用过这个 LEN A2 LEN 替换 A2 1 但这并不能解释空白或没有选择的情况 如果没有选择 如何才能显示0 如果您的选择没有空格 则用逗号替换空格 修剪结果 然后按照上
  • 每次在嵌套条件 swift ios 中都会弹出 AlertController

    我定义了一个警报控制器 当用户名或密码不正确时 警报应该弹出 并且工作正常 但是当用户名和密码匹配时 尽管匹配 但每次登录时都会弹出 我想我没有以正确的方式定义嵌套条件 帮我对多重嵌套条件进行排序 登录代码 import UIKit imp
  • 如何使用 ReportViewer 设计将两个数据表添加到 Tablix

    我正在尝试使用 ReportViewer 将两个数据表添加到报告中的表 tablix 中 数据表 dt程序 名称 描述 dt改进 改进 我将有一个程序列表以及每个程序的改进列表 这是我正在寻找的示例 我不知道如何设计我的 ReportVie
  • 为什么将框架文件夹放在公共根目录之外更安全?

    为什么总是建议将框架文件放置在公共根目录之外 鉴于有时框架没有 ini or inc可以用浏览器打开的文件 好吧 肯定没什么可做的gained将框架源放置在 Web 根目录中 由于可以自由选择放置文件的位置 因此使用最小特权原则 http
  • 如何在 PhantomJS 中转到下一页进行抓取

    我正在尝试从具有多个页面的网站中获取多个元素 我目前正在使用 PhantomJS 来完成这项工作 我的代码几乎可以工作 但问题是我的代码在第一页上刮了两次 即使 根据日志 似乎我已经移到了第二页 这是代码 var page require
  • 获取jstree的已检查节点ID列表[重复]

    这个问题在这里已经有答案了 我是新来的jstree and jQuery并且在我的测试树中进行节点检查时遇到了一些问题 用户首先应勾选自己需要的节点 然后点击 概括 按钮以获取警报窗口中已检查节点的 ID 列表 我还想导出 ID 列表以供进
  • VB.NET 中的 WScript?

    这是我的程序中的一段代码 WSHShell WScript CreateObject WScript Shell 但由于某种原因 WScript 没有声明 我知道这段代码可以在 VBScript 中运行 但我正在尝试让它在 vb net 中