Во-первых, я довольно новичок на языке VB, скриптах VB и программировании VB.net, но хорош на других языках и платформах.Ошибка синтаксиса с AddHandler в VBScript
Моя цель - запустить простую программу на основе 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
и т. д.). После некоторых тестов и поиска в Google я понял, что некоторые объекты 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()
Теперь переводчик жалуется на «Require:" Microsoft»на AddHandler
линии. На данный момент я не знаю, что делать. Я пробовал Microsoft.AddHandler
, но не работал.
Так что я был бы признателен, если бы вы могли помочь мне исправить эту строку и сказать мне, есть ли какая-нибудь другая вещь, которая могла бы заставить эту маленькую программу работать.
спасибо.
'Итак, я сделал файл .vbs' - сделал с чем? У вас на самом деле установлена Visual Studio? – GSerg
На самом деле не нужна IDE для написания кода в файле. Грубо оно помогает для средних и крупных проектов. В моем случае я использую блокнот ++, потому что он имеет несколько строк. –
Перефразировано: я бы сказал, что на самом деле не нужна IDE для записи кода в файл, если интерпретатор/компилятор не выводит недостаточно информации об ошибках (что, по-видимому, здесь). В моем случае я использовал notepad ++, потому что он имеет несколько строк, но теперь я рассматриваю возможность переключения на IDE. –