JK1150 Posted March 13, 2007 Share Posted March 13, 2007 I want to make a VB program to be a front end to the shutdown command. Basically, I want to run the following command: shutdown /s /m \\Lab-1 /t 600 /f I was able to do this with the following code: Dim WshShell = CreateObject("WScript.Shell") WshShell.Exec("shutdownm \\Lab-1 /t 600 /f") The only thing is that: A) This opens a command window, which I don't want the end user to see. B) I want to know how to receive the result of this command, so I know if it was successful or if it failed. Link to comment https://www.neowin.net/forum/topic/545941-vbnet-remote-shutdown/ Share on other sites More sharing options...
0 jake1eye Posted March 13, 2007 Share Posted March 13, 2007 JK1150 said: I want to make a VB program to be a front end to the shutdown command. Basically, I want to run the following command:shutdown /s /m \\Lab-1 /t 600 /f I was able to do this with the following code: Dim WshShell = CreateObject("WScript.Shell") WshShell.Exec("shutdownm \\Lab-1 /t 600 /f") The only thing is that: A) This opens a command window, which I don't want the end user to see. B) I want to know how to receive the result of this command, so I know if it was successful or if it failed. Try this to hide anything Quote Dim WshShell = CreateObject("WScript.Shell") WshShell.Exec("shutdownm \\Lab-1 /t 600 /f"),0,True I do not know if this is what you want, but it pings the computer Quote strComputer = "." Set objWMIService = GetObject(_ "winmgmts:\\" & strComputer & "\root\cimv2") Set colPings = objWMIService.ExecQuery _ ("Select * From Win32_PingStatus where Address = 'PLACE_IP_ADDRESS_HERE'") For Each objStatus in colPings If IsNull(objStatus.StatusCode) _ or objStatus.StatusCode<>0 Then WScript.Echo "Computer did not respond." Else Wscript.Echo "Computer responded." End If Next Link to comment https://www.neowin.net/forum/topic/545941-vbnet-remote-shutdown/#findComment-588392400 Share on other sites More sharing options...
0 JK1150 Posted March 13, 2007 Author Share Posted March 13, 2007 Thanks for both of those, they'll definitely help. I was wondering if the result of the command can be returned to with a .toString. For instance, if a "Network path not found." reply is returned, I want the user to know about that. Also if I do Dim WshShell = CreateObject("WScript.Shell") WshShell.Exec("shutdownm \\Lab-1 /t 600 /f"),0,True I get an end of statement expected on ,0,True, when I put it inside the brackets, the command does not seem to execute. Link to comment https://www.neowin.net/forum/topic/545941-vbnet-remote-shutdown/#findComment-588392468 Share on other sites More sharing options...
0 The_Decryptor Veteran Posted March 13, 2007 Veteran Share Posted March 13, 2007 There is an API available to shutdown the local and remote systems, give you a bit more control than just invoking WSH. Anyway, API call is InitiateSystemShutdown, this single API allows timed shutdowns, instant shutdowns, reboots, shutdowns with messages, remote shutdown, etc., everything you will need, and AbortSystemShutdown (of course) can abort the timed shutdown. Just pass null to the computer name to target the local system. I have some old VB6 code that could handle it (would automatically attempt to get the privileges for it, if not it would fail nicely), but looking at it now, I see that it would be a problem converting it to .NET Link to comment https://www.neowin.net/forum/topic/545941-vbnet-remote-shutdown/#findComment-588392507 Share on other sites More sharing options...
0 JK1150 Posted March 13, 2007 Author Share Posted March 13, 2007 decryptor, i seem to be getting a stack overflow whenever i implement that... weird... Link to comment https://www.neowin.net/forum/topic/545941-vbnet-remote-shutdown/#findComment-588392846 Share on other sites More sharing options...
0 The_Decryptor Veteran Posted March 14, 2007 Veteran Share Posted March 14, 2007 Mind showing the code? cause that's quite odd. Link to comment https://www.neowin.net/forum/topic/545941-vbnet-remote-shutdown/#findComment-588394326 Share on other sites More sharing options...
0 JK1150 Posted March 14, 2007 Author Share Posted March 14, 2007 Private Declare Function InitiateSystemShutdown Lib "advapi32.dll" Alias "InitiateSystemShutdownA" ( _ ByVal lpMachineName As String, _ ByVal lpMessage As String, _ ByVal dwTimeout As Long, _ ByVal bForceAppsClosed As Long, _ ByVal bRebootAfterShutdown As Long _ ) As Long Private Declare Function AbortSystemShutdown Lib "advapi32.dll" Alias "AbortSystemShutdownA" _ (ByVal lpMachineName As String) As Long Public Sub goShutDownLab() Try InitiateSystemShutdown("Lab-Computer-1", "Lab will shut down in 10 minutes", 600, 1, 0) That's the part with the shutdown, everything else works fine. Link to comment https://www.neowin.net/forum/topic/545941-vbnet-remote-shutdown/#findComment-588395391 Share on other sites More sharing options...
0 The_Decryptor Veteran Posted March 14, 2007 Veteran Share Posted March 14, 2007 Could try this. <DllImport("advapi32.dll", SetLastError:=True)> _ Public Shared Function InitiateSystemShutdown(ByVal lpMachineName As String,ByVal lpMessage As String, ByVal dwTimeout As Integer, ByVal bForceAppsClosed As Boolean, ByVal bRebootAfterShutdown As Boolean) As Boolean End Function Or this to save time. http://www.mentalis.org/soft/class.qpx?id=7 Link to comment https://www.neowin.net/forum/topic/545941-vbnet-remote-shutdown/#findComment-588395612 Share on other sites More sharing options...
Question
JK1150
I want to make a VB program to be a front end to the shutdown command. Basically, I want to run the following command:
shutdown /s /m \\Lab-1 /t 600 /f
I was able to do this with the following code:
Dim WshShell = CreateObject("WScript.Shell")
WshShell.Exec("shutdownm \\Lab-1 /t 600 /f")
The only thing is that:
A) This opens a command window, which I don't want the end user to see.
B) I want to know how to receive the result of this command, so I know if it was successful or if it failed.
Link to comment
https://www.neowin.net/forum/topic/545941-vbnet-remote-shutdown/Share on other sites
7 answers to this question
Recommended Posts