【发布时间】:2015-04-04 16:10:45
【问题描述】:
首先,我是 VB 语言、VB 脚本和 VB.net 编程的新手,但在其他语言和平台方面相当擅长。
我的目标是从命令行运行一个简单的基于 VB 的程序并让它弹出一个消息框(这部分我想通了)。此外,如果计算机同时进入睡眠模式(或从睡眠模式恢复),我希望消息框(以及脚本)终止。
我在 VBForums 上找到了有关处理程序的代码:
'add the handlers for the system standby, resume, and shutdown
AddHandler Microsoft.Win32.SystemEvents.PowerModeChanged, AddressOf PowerModeChanged
AddHandler Microsoft.Win32.SystemEvents.SessionEnding, AddressOf SessionEnding
[...]
Private Sub PowerModeChanged(ByVal sender As System.Object, _
ByVal e As Microsoft.Win32.PowerModeChangedEventArgs)
Select Case e.Mode
Case Microsoft.Win32.PowerModes.Resume
'windows is resuming from sleep
Case Microsoft.Win32.PowerModes.Suspend
'goodnite windows
End Select
End Sub
Private Sub SessionEnding(ByVal sender As System.Object, _
ByVal e As Microsoft.Win32.SessionEndingEventArgs)
Select Case e.Reason
Case Microsoft.Win32.SessionEndReasons.Logoff
'logoff
Case Microsoft.Win32.SessionEndReasons.SystemShutdown
'shutdown
End Select
End Sub
所以我制作了一个使用上述(第一个版本)的 .vbs 文件并运行它:
Sub PowerModeChanged(ByVal sender As System.Object, _
ByVal e As Microsoft.Win32.PowerModeChangedEventArgs)
Select Case e.Mode
Case Microsoft.Win32.PowerModes.Resume
'windows is resuming from sleep
WScript.Quit
Case Microsoft.Win32.PowerModes.Suspend
'goodnite windows
WScript.Quit
End Select
End Sub
Sub Main()
Set objArgs = WScript.Arguments
msgText = objArgs(0)
AddHandler Microsoft.Win32.SystemEvents.PowerModeChanged, AddressOf PowerModeChanged
MsgBox msgText
End Sub
Main()
但我遇到了各种语法错误(As、AddressOf 等)。经过一些测试和谷歌搜索后,我开始意识到一些 VB 实体似乎对类型更严格,并且比其他实体具有更进化的语法。所以这是我的第二个版本,它几乎成功地通过了语法阶段:
Sub PowerModeChanged(sender, e)
Select Case e.Mode
Case Microsoft.Win32.PowerModes.Resume
'windows is resuming from sleep
WScript.Quit
Case Microsoft.Win32.PowerModes.Suspend
'goodnite windows
WScript.Quit
End Select
End Sub
Sub Main()
Set objArgs = WScript.Arguments
msgText = objArgs(0)
AddHandler Microsoft.Win32.SystemEvents.PowerModeChanged, PowerModeChanged
MsgBox msgText
End Sub
Main()
现在解释器在AddHandler 行抱怨“要求:'Microsoft'”。在这一点上,我不知道该怎么办。我尝试了Microsoft.AddHandler,但没有成功。
如果你能帮我修复这条线,我将不胜感激,并告诉我是否还有其他东西可以使这个小程序正常工作。
谢谢。
【问题讨论】:
-
So I made a .vbs file- 用什么做的?你真的安装了 Visual Studio 吗? -
在文件中编写代码并不需要 IDE。粗略的它有助于中型和大型项目。就我而言,我使用 notepad++,因为它的行数很少。
-
改写:我会说一个人并不真正需要一个 IDE 来在文件中编写代码,除非解释器/编译器输出的有关错误的信息不足(这里显然就是这种情况)。就我而言,我使用了 notepad++,因为它的行数很少,但我现在正在考虑切换到 IDE。
-
我想了解的是您实际使用的/认为您使用的语言。看起来你脑子里有 vbsript,上网,找到 vb.net 的代码示例,试图把它们放在一个 vbs 文件中,却没有意识到它们是完全不同的语言,然后把它们贴在这里让每个人都认为你打算使用 vb .net 放在首位。如果你没有安装 IDE,你可能也没有 VB 编译器,根本无法运行 vb.net 代码。
-
如果你真的想要一个独立的非exe可执行脚本文件,那就是vbscript,但它没有可以弹出和挂起的表单。您将被限制为
MsgBox。
标签: vb.net addhandler