我发现 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) 我使用的程序运行 .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) 假设我创建一个对象:
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。
还有其他真正有效的东西吗?
我的数据库访问代码如下:
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 拍摄页面的完整快照,为此我需要向下滚动一点。实际上,我可以在快照中拍摄页面的一半,但我还需要在下一个快照中拍摄剩余部分。
页面加载后我尝试使用以下内容
ie.document.body.doScroll("pageDown")
Run Code Online (Sandbox Code Playgroud)
但它不是向下滚动页面,有没有更好的方法可以做到这一点,实际上我不想向下滚动页面,而只是向下滚动 100 像素,有什么方法可以做到这一点吗?
提前致谢。
有谁知道如何在 VBScript 中使用 WMI 获取 SQL Server 安装的版本(不关心版本)?
我尝试过使用注册表(但这需要您知道实例名称和 SQL Server 的版本。
我尝试过使用 SQL 查询(但这要求您拥有数据库权限,而我的进程使用 LOCAL 用户,没有 SQL Server DBMS 权限)。
因此,我只能使用 WQL 来查询 WMI。
我想我需要:
1) 查询 WMI 对象(哪一个)以获取实例名称。2) 然后,对于每个实例,查询另一个对象并从中获取版本。
我浏览了 Microsoft 文档,但找不到要使用的对象。
有人可以帮忙吗?
安静的莱妮
我正在开发一个 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) 我正在尝试保护一些用我猜是 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 和批处理文件,它允许我将当前目录中的 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_file是C:\Converter\Subfolder\FileName并且dest_file …
我下载了一个文件,想验证它的 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 ×10
asp-classic ×2
ado ×1
adodb ×1
automation ×1
batch-file ×1
contextmenu ×1
events ×1
fciv ×1
hebrew ×1
menu ×1
object ×1
right-click ×1
sendkeys ×1
shortcut ×1
sql ×1
sql-server ×1
unicode ×1
windows ×1
wmi ×1
wql ×1
wsh ×1