假设我有一个COM对象,用户可以通过以下呼叫访问:
Set s = CreateObject("Server")
Run Code Online (Sandbox Code Playgroud)
我希望能够做的是允许用户为对象指定事件处理程序,如下所示:
Function ServerEvent
MsgBox "Event handled"
End Function
s.OnDoSomething = ServerEvent
Run Code Online (Sandbox Code Playgroud)
这是可能的,如果是这样,我如何在我的C++类型库(特别是BCB 2007)中公开它?
我正在尝试从函数中返回一个字典.我相信该功能正常,但我不知道如何利用返回的字典.
这是我的功能的相关部分:
Function GetSomeStuff()
'
' Get a recordset...
'
Dim stuff
Set stuff = CreateObject("Scripting.Dictionary")
rs.MoveFirst
Do Until rs.EOF
stuff.Add rs.Fields("FieldA").Value, rs.Fields("FieldB").Value
rs.MoveNext
Loop
GetSomeStuff = stuff
End Function
Run Code Online (Sandbox Code Playgroud)
如何调用此函数并使用返回的字典?
编辑:我试过这个:
Dim someStuff
someStuff = GetSomeStuff
Run Code Online (Sandbox Code Playgroud)
和
Dim someStuff
Set someStuff = GetSomeStuff
Run Code Online (Sandbox Code Playgroud)
当我尝试访问someStuff时,出现错误:
Microsoft VBScript runtime error: Object required: 'GetSomeStuff'
Run Code Online (Sandbox Code Playgroud)
编辑2:在函数中尝试这个:
Set GetSomeStuff = stuff
Run Code Online (Sandbox Code Playgroud)
结果出现此错误:
Microsoft VBScript runtime error: Wrong number of arguments or invalid property assignment.
Run Code Online (Sandbox Code Playgroud) 我正试图找到一种方法来强制Windows重新启动,我遇到了问题.我试过了
Set OpSysSet = GetObject("winmgmts:{authenticationlevel=Pkt," _
& "(Shutdown)}").ExecQuery("select * from Win32_OperatingSystem where "_
& "Primary=true")
for each OpSys in OpSysSet
retVal = OpSys.Reboot()
nextRun Code Online (Sandbox Code Playgroud)
我也试过使用这个shutdown -f -r命令,在这两种情况下我有时都没有得到任何响应,如果我再试一次,我会收到一条错误,说"行动无法完成,因为系统正在关闭",即使我留下了多久它没有关闭,它仍然允许我启动新程序,并做一个shutdown -a给出相同的错误.如何使用脚本强制Windows重新启动?
有什么方法可以使用VBScript从字符串中获取每个字符?我曾经使用过该Mid函数,但我只是想知道是否有任何其他直接函数在使用时返回从字符串开始的每个字符.
我刚刚接受了一个经典的ASP项目,因为我需要工作并且工资很高.那么,我可以使用Visual Studio> = 2005进行编辑吗?还有其他可以处理它的编辑器,例如Aptana,NetBeans吗?是否有其他编辑器的加载项允许他们处理它?我不想回到Visual Studio 6,因为这些天我发现这是一个非常讨厌的产品.b
我正在尝试编写一个脚本,它将在xml文件中为我操作一些数据.我对VBScript很新,但有VB.NET和VBA背景,所以我觉得我知道自己在做什么.
我认为可能有一种更好的方法来导航文件,而不是为每一行调用InStr()或类似的东西来查看我在寻找的是否存在.我最初的想法是使用我从System.XML在VB.NET中看到的一些方法,因为我已经看到了节点导航功能和成员.
在调查之后,我找不到任何方法将命名空间(System.XML或其他)导入VBScript而不在网页上运行.我决定寻找其他选择,而不是花更多的时间来寻找这个.
事实证明,还有其他方法可以实现我想要的,使用专门处理XML文件导航节点的方法和对象.我了解到这些"系统"的一些常见例子(由于缺乏一个更好的术语,因为我确信这是不合适的)似乎是DOM和XPath.
我从调查XPath开始(因为我在一些地方看到XPath被认为优于DOM,例如:使用VBScript遍历XML文件中的所有节点).我在vbscript中找不到任何描述XPath基础知识的东西.路径的语法有很多,但我找不到任何描述如何在VBScript中实际调用该语法以使用它的基础知识.所以我转到了下一个选项.
然后我发现了许多关于DOM的文章/问题/等等.所以我试一试.他们中没有一个人工作,都给了我错误.大多数情况下,似乎永远不会正确加载DOM对象.以下是我为此尝试的一些方法:
Set objParser = CreateObject( "Microsoft.XMLDOM" )
Dim xDoc As MSXML.DOMDocument
Set xDoc = New MSXML.DOMDocument
If xDoc.Load("C:\My Documents\cds.xml") Then
msgbox("Success!")
Else
msgbox("Failure!")
End If
Run Code Online (Sandbox Code Playgroud)
每次都返回失败.
dim xmlDom
set xmlDom = createobject("MSXML2.DOMDocument")
xmlDom.async = false
xmlDom.load ("C:\MyFileLocation\MyFile.xml")
Run Code Online (Sandbox Code Playgroud)
然后我尝试了一些检测它是否像xmlDom.documentElement中每个节点名称的消息框一样工作.
我已经尝试了很多其他的东西,我甚至不记得其中的大多数.
我根本不知道我还能尝试什么,或者为什么这对我不起作用.我只是不知所措,我仍然可以尝试不同的方式,同时仍然具有COULD工作的语法.
所以我的问题是:如何在不将网页嵌入网页的情况下使用VBScript导航XML文件?我需要了解极端的基础知识.
我知道我的问题可能看起来很愚蠢和无知,因为这应该是容易获得的信息,但我真的不能为我的生活找到基本知识我需要了解如何使用JUST VBScript以任何方式导航节点(不是在html或asp中)文件或类似的东西).
我想在PC启动后启动我的简单VBS脚本(Win XP).我不希望将此脚本放在C:\ Documents and Settings \%UserName%\ Start Menu\Programs\Startup中
我想用脚本做,有可能吗?
Script:<br>
Dim oShell<br>
Set oShell = WScript.CreateObject ("WScript.Shell")<br>
oShell.run "notepad.exe c:\text.txt"
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个VBScript,它将在文本文件或csv中列出系统上所有已安装的应用程序.我能够找到列出所有软件的现有代码(包括名称,版本,日期和大小).当我正在运行它时,因为我发现它回显了主机回显弹出.我需要添加什么来使其将每个回声输出到文件?我相信这很容易,但我似乎无法找到解决方案.
以下是我发现的脚本:
Dim fso
Set fso = WScript.CreateObject("Scripting.Filesystemobject")
' List All Installed Software
Const HKLM = &H80000002 'HKEY_LOCAL_MACHINE
strComputer = "."
strKey = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"
strEntry1a = "DisplayName"
strEntry1b = "QuietDisplayName"
strEntry2 = "InstallDate"
strEntry3 = "VersionMajor"
strEntry4 = "VersionMinor"
strEntry5 = "EstimatedSize"
Set objReg = GetObject("winmgmts://" & strComputer & _
"/root/default:StdRegProv")
objReg.EnumKey HKLM, strKey, arrSubkeys
WScript.Echo "Installed Applications" & VbCrLf
For Each strSubkey In arrSubkeys
intRet1 = objReg.GetStringValue(HKLM, strKey & strSubkey, _
strEntry1a, strValue1)
If intRet1 <> 0 Then
objReg.GetStringValue …Run Code Online (Sandbox Code Playgroud) 目前我用我的vbscript打开一个文件如下:
strFile = "C:\Users\test\file.txt"
Set objFile = objFSO.OpenTextFile(strFile)
Run Code Online (Sandbox Code Playgroud)
我想更改此设置,以便用户可以选择/导航文件,并在脚本中使用该文件.我该如何添加此功能?我试图搜索如何加载文件对话框/提示用户的文件等,只是不知道如何在VBScript中完成.
尝试将JSON POST请求发送到HTTP API(PushBullet).但是在代码中面临错误.任何帮助赞赏.参考文件发送推送通知
Dim objXmlHttpMain , URL
strJSONToSend = {"type": "note", "title": "Alert", "body": "Lorem Ipsum Lorem Ipsum Lorem Ipsum."}
URL="https://api.pushbullet.com/v2/pushes"
Set objXmlHttpMain = CreateObject("Msxml2.ServerXMLHTTP")
on error resume next
objXmlHttpMain.open "POST",URL, False
objXmlHttpMain.setRequestHeader "Authorization", "Bearer <api secret id>"
objXmlHttpMain.setRequestHeader "Content-Type", "application/json"
objXmlHttpMain.send strJSONToSend
set objJSONDoc = nothing
set objResult = nothing
Run Code Online (Sandbox Code Playgroud)