Seems they all run at once. I am a super-noob at this so my code is simple... How can I get multiple commands to run one after the other?
I have googled the heck out of this, but the code I see looks nothing like mine....:
Public Class ChangeDesktop
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim User As String
User = TextUser.Text
Dim File As String
File = TextFile.Text
Shell("cmd /c " & "attrib -r " & "c:\docume~1\" & User & "\locals~1\temp\Echowall.bmp")
Starts a separate window to run a specified program or command.
START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
[/AFFINITY <hex affinity>] [/WAIT] [/B] [command/program]
[parameters]
"title" Title to display in window title bar.
path Starting directory
B Start application without creating a new window. The
application has ^C handling ignored. Unless the application
enables ^C processing, ^Break is the only way to interrupt
the application
I The new environment will be the original environment passed
to the cmd.exe and not the current environment.
MIN Start window minimized
MAX Start window maximized
SEPARATE Start 16-bit Windows program in separate memory space
SHARED Start 16-bit Windows program in shared memory space
LOW Start application in the IDLE priority class
NORMAL Start application in the NORMAL priority class
HIGH Start application in the HIGH priority class
REALTIME Start application in the REALTIME priority class
ABOVENORMAL Start application in the ABOVENORMAL priority class
BELOWNORMAL Start application in the BELOWNORMAL priority class
AFFINITY The new application will have the specified processor
affinity mask, expressed as a hexadecimal number.
WAIT Start application and wait for it to terminate
command/program
If it is an internal cmd command or a batch file then
the command processor is run with the /K switch to cmd.exe.
This means that the window will remain after the command
has been run.
If it is not an internal cmd command or batch file then
it is a program and will run as either a windowed application
or a console application.
parameters These are the parameters passed to the command/program
NOTE: The SEPERATE and SHARED options are not supported on 64-bit platforms.
If Command Extensions are enabled, external command invocation
through the command line or the START command changes as follows:
non-executable files may be invoked through their file association just
by typing the name of the file as a command. (e.g. WORD.DOC would
launch the application associated with the .DOC file extension).
See the ASSOC and FTYPE commands for how to create these
associations from within a command script.
When executing an application that is a 32-bit GUI application, CMD.EXE
does not wait for the application to terminate before returning to
the command prompt. This new behavior does NOT occur if executing
within a command script.
When executing a command line whose first token is the string "CMD "
without an extension or path qualifier, then "CMD" is replaced with
the value of the COMSPEC variable. This prevents picking up CMD.EXE
from the current directory.
When executing a command line whose first token does NOT contain an
extension, then CMD.EXE uses the value of the PATHEXT
environment variable to determine which extensions to look for
and in what order. The default value for the PATHEXT variable
is:
.COM;.EXE;.BAT;.CMD
Notice the syntax is the same as the PATH variable, with
semicolons separating the different elements.
When searching for an executable, if there is no match on any extension,
then looks to see if the name matches a directory name. If it does, the
START command launches the Explorer on that path. If done from the
command line, it is the equivalent to doing a CD /D to that path.
You can use Process class and track for the events raised by it when a process is finished.
Then run another process. Continue this untill all are completed.
Public Function ExecCommand(ByRef CommandLine As String, _
Optional ByRef Arguments As String = "", _
Optional ByRef Wait*****it As Boolean = True) As Integer
Dim psi As New ProcessStartInfo()
Dim p As Process
With psi
.FileName = CommandLine
.Arguments = Arguments
.WindowStyle = ProcessWindowStyle.Hidden 'This avoid a text window being opened
End With
Try
p = Process.Start(psi) 'This line runs the command
if Wait*****it then p.Wait*****it () 'This wait until the command ends
Return p.ExitCode
Catch e As System.Exception
'Catch errors here
End Try
End Function
Public Class ChangeDesktop
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim User As String
User = TextUser.Text
Dim File As String
File = TextFile.Text
ExecCommand("cmd", " /c " & "attrib -r " & "c:\docume~1\" & User & "\locals~1\temp\Echowall.bmp", Wait*****it:=True)
ExecCommand("cmd", " /c " & "del" & "c:\docume~1\" & User & "\locals~1\temp\Echowall.bmp", Wait*****it:=True)
ExecCommand("cmd", " /c " & "rename" & File & "Echowall.bmp", Wait*****iit:=True)
ExecCommand("cmd", " /c " & "move /y echowall.bmp " & "c:\docume~1\" & User & "\locals~1\temp", Wait*****it:=True)
ExecCommand("cmd", " /c " & "attrib +r" & "c:\docume~1\" & User & "\locals~1\temp\Echowall.bmp", Wait*****it:=True)
Message.Show()
End Sub
End Class
Note: A bug in the codeguru engine replaces the text "Wait For Exit" (without spaces) with the text Wait*****it
Last edited by Marraco; December 4th, 2008 at 08:02 AM.
Reason: ByVal replaced for ByRef because is readonly, so increase performance
Public Function ExecCommand(ByRef CommandLine As String, _
Optional ByRef Arguments As String = "", _
Optional ByRef Wait*****it As Boolean = True) As Integer
Gives me the following error:
Statement is not Valid in a Namespace
All lines with "execcommand" give me the following error:
name "execcommand" is not declared.
Any idea why?
nevermind I figured it out and changed the code as such:
Public Class ChangeDesktop
Public Function ExecCommand(ByRef CommandLine As String, _
Optional ByRef Arguments As String = "", _
Optional ByRef Wait*****it As Boolean = True) As Integer
Dim psi As New ProcessStartInfo()
Dim p As Process
With psi
.FileName = CommandLine
.Arguments = Arguments
.WindowStyle = ProcessWindowStyle.Hidden 'This avoid a text window being opened
End With
Try
p = Process.Start(psi) 'This line runs the command
If Wait*****it Then p.Wait*****it() 'This wait until the command ends
Return p.ExitCode
Catch e As System.Exception
'Catch errors here
End Try
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim User As String
User = TextUser.Text
Dim File As String
File = TextFile.Text
ExecCommand("cmd", " /c " & "attrib -r " & "c:\docume~1\" & User & "\locals~1\temp\Echowall.bmp", Wait*****it:=True)
ExecCommand("cmd", " /c " & "del" & "c:\docume~1\" & User & "\locals~1\temp\Echowall.bmp", Wait*****it:=True)
ExecCommand("cmd", " /c " & "rename" & File & "Echowall.bmp", Wait*****it:=True)
ExecCommand("cmd", " /c " & "move /y echowall.bmp " & "c:\docume~1\" & User & "\locals~1\temp", Wait*****it:=True)
ExecCommand("cmd", " /c " & "attrib +r" & "c:\docume~1\" & User & "\locals~1\temp\Echowall.bmp", Wait*****it:=True)
Message.Show()
End Sub
End Class
Going to test it now. Thank you all for your input this community is awesome!
Last edited by MaxDes; December 4th, 2008 at 11:06 AM.
Public Function ExecCommand(ByRef CommandLine As String, _
Optional ByRef Arguments As String = "", _
Optional ByRef Wait*****it As Boolean = True) As Integer
Gives me the following error:
Statement is not Valid in a Namespace
Public Function ExecCommand(ByRef CommandLine As String, _
Optional ByRef Arguments As String = "", _
Optional ByRef Wait*****it As Boolean = True) As Integer
...
MaxDes: when you post code, select it, and click on the button "#" (see imagehttp://www.codeguru.com/forum/attach...1&d=1228412016), to enclose the code with [CODE*][/*CODE] tags. it makes the code much more easy to read.
* The Best Reasons to Target Windows 8
Learn some of the best reasons why you should seriously consider bringing your Android mobile development expertise to bear on the Windows 8 platform.