我发现 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。
还有其他真正有效的东西吗?
任何人都知道如何在所有内容之上而不是在后台制作一个 vbscript 弹出消息/框“生成”......?
这是我的脚本:)
Set objShell = WScript.CreateObject("WScript.Shell")
Const wshYes = 6
Const wshNo = 7
Const wshYesNoDialog = 4
Const wshQuestionMark = 32
intReturn = objShell.Popup("Vil du annulere shutdown?", _
20, "Shutdown om 5 minutter!", wshYesNoDialog + wshQuestionMark)
If intReturn = wshYes Then
Wscript.Echo "Shutdown annuleret."
objShell.Run "C:\ProgramData\AutoShutdown\Annuler.bat"
End If
Run Code Online (Sandbox Code Playgroud)
我很在VBScript中糟糕,我只是用我的批处理程序这个小部分。任何帮助表示赞赏!
Windows Script Host 的未来是什么?
微软已于 2015 年 5 月宣布在其新浏览器 Windows Edge 中终止 VBscript 和 ActiveX(顺便说一下,这对 Web 标准来说是个好消息)。但是,我无法找到有关脚本世界桌面部分的最新信息。我想知道下一个 Windows 桌面版本是否仍支持 VBscript、wscript.exe、cscript.exe 和 mshta.exe。我很担心,因为 Windows Script Host 引用日复一日地在 MSDN 库中越来越难找到。
我有很多 vbscript 和 hta 文件需要维护(在专业环境中),我需要预测是否很快需要迁移。
如果您有任何相关信息,请分享!
我正在尝试创建一个连接到 sql server 的脚本,选择一些数据,并将结果保存到 csv。在 Sql Server 中启用了 Windows 身份验证。
这是我到目前为止所拥有的:
Dim connect, sql, resultSet, pth, txt
Set connect = CreateObject("ADODB.Connection")
connect.ConnectionString = "Provider=SQLOLEDB;Server=server\instance;Database=pm;Trusted_Connection=True;"
connect.Open
sql="SELECT col1, col2 FROM tbl1 order by col1, col2"
Set resultSet = connect.Execute(sql)
pth = "d:\test.csv"
Set txt = fs.CreateTextFile(pth, True)
On Error Resume Next
resultSet.MoveFirst
Do While Not resultSet.eof
txt.WriteLine(resultSet(0) & "," & resultSet(1))
resultSet.MoveNext
Loop
resultSet.Close
connect.Close
Set connect = Nothing
Run Code Online (Sandbox Code Playgroud)
我得到错误:
d:\vbs_test.vbs(5, 1) Microsoft OLE DB Provider for SQL Server: Invalid authorization …Run Code Online (Sandbox Code Playgroud) 我有一个类似这样的 Visual Basic 脚本:
Set WshShell = CreateObject("Wscript.Shell")
WshShell.Run " cmd.exe", 8, True
Run Code Online (Sandbox Code Playgroud)
运行它给出了这个错误:
--------------------------- Windows 脚本宿主 --------------------------- 脚本:D:\Folder\MyScript.vbs 线路:2 字符:1 错误:无法等待进程。 代码:80020009 来源:WshShell.Run --------------------------- 好的 ---------------------------
我确实打开了一个资源管理器窗口。
为什么是这样?
我有一个 Web 服务,它返回类似于下面的 XML 字符串:
<?xml version="1.0"?>
<Result>
<PersonID>991166187</PersonID>
<AddressID>1303836</AddressID>
</Result>
Run Code Online (Sandbox Code Playgroud)
我需要一个VBScript代码,让我来检索值PersonID和AddressID。我的具体问题是如何PersonID991166187从原始帖子中的 XML 字符串中检索, 即 的值。
就我的尝试而言,我有以下代码:
Dim doc
Dim xmlString
Dim nodes
Dim idArray
xmlString = "<?xml version="1.0"?><Result><PersonID>991166187</PersonID><AddressID>1303836</Address‌​ID></Result>"
Set doc = CreateObject("MSXML2.DOMDocument")
doc.loadXML(xmlString)
'Set nodes = doc.selectNodes("Result/PersonID/AddressID")
nodes = doc.getElementsByTagName("PersonID")
For Each node In nodes
WScript.Echo "Person ID: " & node.text
Run Code Online (Sandbox Code Playgroud) 我对asp还很陌生,我有一个语法错误,如果可以的话,我希望得到帮助。
我有一个 ASP 页面,它显示了一个从 sql 中提取数据的表。大多数数据尚未填充,因此返回 NULL。有问题的数据类型是数字。我需要FormatNumber的rs时候它不为空,如果它不填充。
这就是我所拥有的
<%=If Not IsNull(rs("ContractValue")) Then FormatNumber(rs("ContractValue"),0) end if%>
Run Code Online (Sandbox Code Playgroud)
但如前所述,我收到语法错误。
我究竟做错了什么?
我是编程新手,所以如果我的问题看起来很愚蠢,我很抱歉。我想问一下,Multi.Dictionary当我有值时,是否有任何方法可以返回键?
这是我的代码:
Dim myDict
Set myDict= Server.CreateObject("Multi.Dictionary")
myDict.UniqueKeys = False
'Fill dictionary with some data
myDict("param1") = "value1"
myDict.Add "param2", "value2"
myDict.Add "param2", "value2.2"
'Get dictionary Keys
Keys = myDict.Keys
Items = myDict.Items
For Z = 0 To UBound(Items)
Response.Write(Keys(Z) & " " & Items(Z) & "<br>")
Next
Run Code Online (Sandbox Code Playgroud)
现在返回
下标超出范围:'2'
这是正常的,因为我循环了 3 次而我只有 2 个键。
那么是否有可能得到这样的结果:
参数 1:“值 1” 参数 2:“值 2” 参数 2:“value2.2”
vbscript ×10
asp-classic ×2
windows ×2
dictionary ×1
events ×1
hebrew ×1
hta ×1
object ×1
sendkeys ×1
sql-server ×1
string ×1
unicode ×1
wsh ×1
xml ×1