objShell错误和关机

时间:2015-05-28 15:56:01

标签: vbscript

当我尝试打开时,我收到此错误:

  

'objShell 800A01A8'

我不知道它是什么,但它很烦人,因为它刚才起作用。这是我的代码:

WScript.Sleep 0
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

基本上我希望在预定/计划关机前5分钟执行此操作,询问您是否要取消(取消=取消)关机​​。

这是我遇到的另一个问题,它基本上必须执行shutdown -a,但由于我在VBScript上非常不好,我失败了。目前,如果用户选择“是”,则只需执行shutdpwn -a即可打开批处理文件。

所以,如果有人告诉我如何:

,我会 真的 赞美它
  • 使文件正常工作。
  • 如果选择“是”,则使VBScript本身运行shutdown -a

1 个答案:

答案 0 :(得分:1)

从这段代码中获取灵感:

Option Explicit
Dim Titre,ws,N,Question 
Titre = "Arrêt automatique de l'ordinateur"
Set ws = CreateObject("wscript.Shell")
Do
    Call Choisir()
    Call Poser_question()
Loop

Sub Choisir()
    Do 
        N  = Trim(InputBox("Taper le nombre de secondes avant shutdown : ",Titre,"60")) 
        If Not IsNumeric(N)  Then
            ws.Popup "Vous devez taper un Nombre !","3",Titre,0+48
        End if
    Loop Until IsNumeric(N) 
    MsgBox "Vous avez choisi " & N & " seconde(s) avant le shutdown de votre PC !",64,Titre
    Run_Shutdown(N) 
End Sub

Sub Poser_question()
    Question = MsgBox ("Vouliez-vous annuler le shutdown de votre PC ?",VBYesNO+VbQuestion,Titre)
    If Question = VbYes then
        Call Annuler_Shutdown()
        Wscript.Quit
    else
        Wscript.Quit    
    end if
End Sub

Sub Run_Shutdown(N)
    Dim Command,Execution
    Command = "Cmd /c Shutdown -s -t "& N &" -c "& DblQuote("Sauvegarder votre travail car votre PC va s'arrêter dans "& N &" seconde(s)")
    Execution = ws.run(Command,0,True)
End sub

Sub Annuler_Shutdown()
    Dim Command,Execution
    Command = "Cmd /c Shutdown -a"
    Execution = ws.run(Command,0,True)
End Sub

'*****************************************************************
'Fonction pour ajouter des guillemets dans une variable
Function DblQuote(Str)
    DblQuote = Chr(34) & Str & Chr(34)
End Function
'*****************************************************************