首先,我很新手的VB語言,VB腳本和VB.net編程,但在其他語言和平臺相當擅長。語法錯誤與VBScript中的AddHandler
我的目標是從命令行運行一個簡單的基於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.AddHandler
但沒有工作。
所以,如果你能幫助我解決這一問題,並告訴我是否還有其他可以使這個小程序工作的東西,我將不勝感激。
謝謝。
'所以我做了一個.vbs文件' - 做了什麼?你真的安裝了Visual Studio嗎? – GSerg 2015-04-04 19:47:39
其中一個並不需要IDE來編寫文件中的代碼。粗糙它有助於中型和大型項目。在我的情況下,我使用記事本++,因爲它有幾行。 – 2015-04-05 14:17:06
換言之:除非解釋器/編譯器輸出的錯誤信息不足(這裏顯然是這種情況),否則我不會說真的需要IDE來編寫代碼。在我的情況下,我使用記事本++,因爲它有幾行,但我現在正在考慮切換到IDE。 – 2015-04-05 14:39:36