标签: vbscript

VBscript 的 SendKeys 是否支持 Unicode?

我发现 VBscriptSendKeys不支持 Unicode。它支持 A-65 等一些字母,但不支持希伯来字母表中的字母 Aleph (א) 等外来字母。问题超出其支持范围。对于 128+ 的十进制值,它会给出一个“?”,并且仅支持 ASCII 范围。

我可以在使用 Windows XP 的计算机上键入并查看希伯来语字母。因此,操作系统对角色的支持已经存在并已设置。我的源代码表明,由于该行

msgbox Chrw(1488)
Run Code Online (Sandbox Code Playgroud)

显示 Aleph 字符,我已在记事本和 MS Word 中显示它。

在我看来,它正在为它无法识别的字符发送问号。我认为 MS Word 或记事本如果确实在显示字符时出现问题(例如,当字体不支持字符时),它们会显示一个框而不是问号。无论如何,对于记事本来说当然是这样。所以这看起来是一个SendKeys问题。有任何想法吗?有什么解决方法吗?

Dim objShell

Set objShell = CreateObject("WScript.Shell")

objShell.Run "notepad" ''#can change to winword

Wscript.Sleep 2000

msgbox Chrw(1488)  ''#aleph

objShell.SendKeys ("abc" & ChrW(1488) & "abc")  ''#bang, it displays a ? instead of an aleph

WScript.Quit
Run Code Online (Sandbox Code Playgroud)

unicode vbscript sendkeys hebrew

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

处理来自 WinHttpRequest 的事件

我使用的程序运行 .VBS 脚本

那么,在VBScript中如何处理WinHttpRequest对象的OnResponseFinished事件呢?

Set oHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
oHTTP.Open "GET", "http://www.google.com", True
oHTTP.Send
Run Code Online (Sandbox Code Playgroud)

vbscript events httpwebrequest

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

检查 VBScript 中是否设置了对象

假设我创建一个对象:

set newcon = Server.CreateObject("ADODB.Connection")
Run Code Online (Sandbox Code Playgroud)

在某个时候我摧毁了它:

set newcon = nothing
Run Code Online (Sandbox Code Playgroud)

我如何判断它newcon是一个物体还是什么都没有?

我努力了:

newcon is nothing
Run Code Online (Sandbox Code Playgroud)

但我明白了object required

如果我尝试isobjector isnullorisempty它不会返回trueor false

还有其他真正有效的东西吗?

vbscript object

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

经典 Asp 中的参数化查询

我的数据库访问代码如下:

set recordset = Server.CReateObject("ADODB.Recordset")
set cmd1  = Server.CreateObject("ADODB.Command")
cmd1.ActiveConnection = Conn //connection object already created
cmd1.CommandText = "SELECT * FROM lbr_catmaster where catname = ?"
cmd1.CommandType = adCmdText
set prm = cmd1.CreateParameter("@prm", 200, 1,200 , "development")
cmd1.Parameters.Append prm
set recordset = cmd1.Execute
Run Code Online (Sandbox Code Playgroud)

但没有数据库命中。请帮忙解决这个问题。我使用的是sql server 2005。

谢谢。

vbscript ado asp-classic

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

使用 vbscript 自动实现页面滚动

我需要使用 vbscript 拍摄页面的完整快照,为此我需要向下滚动一点。实际上,我可以在快照中拍摄页面的一半,但我还需要在下一个快照中拍摄剩余部分。

页面加载后我尝试使用以下内容

ie.document.body.doScroll("pageDown")
Run Code Online (Sandbox Code Playgroud)

但它不是向下滚动页面,有没有更好的方法可以做到这一点,实际上我不想向下滚动页面,而只是向下滚动 100 像素,有什么方法可以做到这一点吗?

提前致谢。

vbscript internet-explorer automation browser-automation

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

有人有 WQL 查询来查找 SQL Server 实例的版本吗?

有谁知道如何在 VBScript 中使用 WMI 获取 SQL Server 安装的版本(不关心版本)?

我尝试过使用注册表(但这需要您知道实例名称和 SQL Server 的版本。

我尝试过使用 SQL 查询(但这要求您拥有数据库权限,而我的进程使用 LOCAL 用户,没有 SQL Server DBMS 权限)。

因此,我只能使用 WQL 来查询 WMI。

我想我需要:

1) 查询 WMI 对象(哪一个)以获取实例名称。2) 然后,对于每个实例,查询另一个对象并从中获取版本。

我浏览了 Microsoft 文档,但找不到要使用的对象。

有人可以帮忙吗?

安静的莱妮

sql sql-server vbscript wmi wql

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

如何在用户桌面上创建计算机的快捷方式

我正在开发一个 VBScript,用于在桌面上显示“计算机”图标。我已经能够使用以下代码为 IE 执行一个操作,但是由于计算机是一个似乎没有实际位置的“特殊文件夹”,我无法使用相同的方法。有谁知道如何通过 VBScript 启用它?

IE 快捷代码:

Set objShell = WScript.CreateObject("WScript.Shell")
 'Create Shortcut for IE on desktop
 allUsersDesktop = objShell.SpecialFolders("AllUsersDesktop")
 usersDesktop = objShell.SpecialFolders("Desktop")
 Set objShortCut = objShell.CreateShortcut(usersDesktop & "\Internet Explorer.lnk")
 objShortCut.TargetPath = "C:\Program Files\Internet Explorer\iexplore.exe"
 objShortCut.Description = "Open Internet Explorer"
 objShortCut.Save
Run Code Online (Sandbox Code Playgroud)

windows vbscript wsh shortcut special-folders

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

对 asp 中的参数化 SQL 语句进行故障排除

我正在尝试保护一些用我猜是 VB 或 asp 编写的遗留代码(不确定是否有区别)。当我尝试执行该语句时,页面出现内部服务器错误。我确信这是连接的结果,但我不太了解语言,不知道如何对其进行故障排除。

我对语言和 ADODB 库的了解来自 W3Schools文档这篇文章

这是我写的代码(识别信息已编辑)

SET Conn=server.CreateObject("adodb.connection")
Conn.Open "Provider=sqloledb;SERVER=I;DATABASE=Hate;UID=My;PWD=Life;"

SET countCmd = createobject("adodb.command")
countCmd.ActiveConnection = Conn
countCmd.commandText = "SELECT COUNT(*) FROM [table1] WHERE FY=@fy"

countCmd.Parameters.Append countCmd.createparameter("@fy", 200, 1, 255, fy)
SET pcount = countCmd.Execute() 'This is where the error happens
Run Code Online (Sandbox Code Playgroud)

我的最终目标不仅是从这个表中得到一个计数,而是要足够好地理解 adodb 库,以便我可以继续参数化这个遗留代码库中需要它的所有查询。

我感谢任何帮助,并希望得到详细的解释。

编辑

我希望我能接受这两个答案作为公认的答案,因为我认为它们是完美的答案。我最终使用了两者,所以请给这些人点赞。

vbscript adodb asp-classic

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

如何在我的文件转换脚本中包含子文件夹?

我修改了一个 vbscript 和批处理文件,它允许我将当前目录中的 HTML 文件转换为 xlsx 文件,如下所示

脚本:

if WScript.Arguments.Count < 2 Then
    WScript.Echo "Please specify the source and the destination files"
    Wscript.Quit
End If

xlsx_format = 51

Set objFSO = CreateObject("Scripting.FileSystemObject")

src_file = objFSO.GetAbsolutePathName(Wscript.Arguments.Item(0))
dest_file = objFSO.GetAbsolutePathName(WScript.Arguments.Item(1))

Dim oExcel
Set oExcel = CreateObject("Excel.Application")

Dim oBook
Set oBook = oExcel.Workbooks.Open(src_file)

oBook.SaveAs dest_file, xlsx_format

oBook.Close False
oExcel.Quit
Run Code Online (Sandbox Code Playgroud)

批处理文件:

FOR /f "delims=" %%i IN ('DIR *.HTM* /b') DO to-xlsx.vbs "%%i" "%%~ni.xlsx"
del *.HTM /q
Run Code Online (Sandbox Code Playgroud)

通过包含/s在批处理文件中,我可以转换子文件夹中的文件,但它们仍保存在父目录中,我无法弄清楚如何更改它?

src_fileC:\Converter\Subfolder\FileName并且dest_file …

vbscript batch-file

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

创建简单的自定义上下文菜单命令 - 如何运行使用右键单击的文件路径/名称的 VB 脚本?

我下载了一个文件,想验证它的 MD5 校验和。7Zip 的文件上下文菜单输出不包含 MD5 校验和,因此我从 Windows 站点下载了 fciv.exe,并将其复制到我的 System32 文件夹中。

然后我尝试添加自定义上下文菜单项。我已经看到我可以修改 Computer\HKEY_CLASSES_ROOT*\shell 中的注册表,并添加一个 MD5 键,在它下面有一个命令键cmd /k fciv.exe "%1"作为解决方案执行。

但是,我想更进一步,使用 VB 脚本将输出发送到一个简单的消息框,而不是打开控制台。我在这里找到的代码如下:

Option Explicit

Const WshRunning = 0
Const WshFinished = 1
Const WshFailed = 2

Dim shell : Set shell = CreateObject("WScript.Shell")
Dim exec : Set exec = shell.Exec("fciv.exe filename-from-right-click")

While exec.Status = WshRunning
    WScript.Sleep 50
Wend

Dim output

If exec.Status = WshFailed Then
    output = exec.StdErr.ReadAll
Else
    output = exec.StdOut.ReadAll
End If

WScript.Echo output …
Run Code Online (Sandbox Code Playgroud)

vbscript contextmenu menu right-click fciv

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