Library tutorials & articles

Shell and ShellExecute function

Page 1 of 2
  1. Running another application
  2. Opening a file

Running another application

You can run another application by using the Shell statement. 

'// this code calls c: est.exe
Shell "c:\test.exe", vbNormalFocus

You can also call any program in the windows directory, such as regsvr32, notepad, and explorer

So, 

Shell "notepad", vbNormalFocus

Runs notepad, and

Shell "explorer", vbNormalFocus

runs explorer. You can also pass any command parameters you need. For example:

Shell "notepad C:\test.txt", vbNormalFocus

runs notepad, and tells it to open C:\test.txt. Note that if the path you pass contains spaces, you need to surround it by quotes:

Shell "notepad ""C:\dir with spaces\test.txt""", vbNormalFocus

which is actually the equivalent of passing this:

notepad " C:\dir with spaces\test.txt"

The second parameter specifies the startup position, and can be one of the following:

 

Constant Value Description
vbHide 0 Window is hidden and focus is passed to the hidden window.
vbNormalFocus 1 Window has focus and is restored to its original size and position.
vbMinimizedFocus 2 Window is displayed as an icon with focus.
vbMaximizedFocus 3 Window is maximized with focus.
vbNormalNoFocus 4 Window is restored to its most recent size and position. The currently active window remains active.
vbMinimizedNoFocus 6 Window is displayed as an icon. The currently active window remains active.

The shell function also returns a TaskID (double), that you can use with the AppActivate statement:

Private dblNotePadID As Double
'// runs word
Private Sub cmdRunNotePad_Click()
    dblNotePadID = Shell("notepad", vbNormalFocus")
End Sub
'// activates word at a later stage
Private Sub cmdActivateNotePad_Click()
    AppActivate dblNotePadID
End Sub

Comments

  1. 29 Jun 2009 at 22:55

    hi!! i make a program with .net, in this program use the command shell for execute an aplication in visual basic 6 but i can not open de file "exe" why i need pass by parameters for opening the file.

    Somebody can help me with my doubt.

  2. 14 Jul 2006 at 05:52
    aaftab wrote:
    This Method Works Well But My Problem is That I want to Open The Explorer File(s) (.html or htm) In New Window(new instance of IE for every file) every time I clicked on the Different file.
  3. 05 Sep 2005 at 11:05
    This Method Works Well But My Problem is That I want to Open The

    Explorer File(s) (.html or htm)  In New Window(new instance of IE for

    every file) every time I clicked on the Different file.
  4. 13 Jun 2005 at 03:53
  5. 13 Jun 2005 at 02:34

    I have the same situation and would appreciate your sharing any answer.

  6. 04 Jun 2005 at 23:02

    Is there anyway of using information gathered from drive/dir/file list boxes in the path when using Shell? I have tried but I think I have the wrong syntax even though VB6 does not complain.

  7. 10 May 2005 at 16:31
    Hey, I have a memory leak problem. My application has to run different programs. For example, when the user has to run Notepad, he just clicks on the button on my program and my program runs Notepad... Simple and straightforward. The problem is that the user might have to run Notedpad several times throughout the day, and when you look at the memory usage for my program on Task Manager, the size increases every time the user decides to run Notepad (even though he closes it after he's through using it). My question is: how would I release the memory used by my program for Notepad when the user closes Notepad? I need this so that I could keep the same memory usage, cause if the user decides to run Notepad 100 times, and then close all of those, that's a whole lotta memory used up for nothing...

    I would really appreciate any help,
    Thank you
  8. 18 Jan 2005 at 13:56

    Hi,
    very compliments for your tuttorial, it's very clarity.
    I have another question, now.
    The command "sendkeys" send data to the active application
    in this moment.
    I need to send data (key) to an aplication that is just
    running, but in background, in minimize state.


    It's possible to make this?
    Thanks in advantage.


    DaxDax

  9. 24 Nov 2004 at 06:52

    I want my program to wait till Shell or shellexecute command finishes zipping a file of size say 500mb. Please let me know the solution.
    Thanks,

  10. 17 Feb 2004 at 21:41

    is there a possibility for me to open a program to another pc. im thinking like a server client program where the server opens the client or other program from the other terminal...??

  11. 11 May 2003 at 19:01

    Nice tutorial, but you seem to have overlooked something. How do I launch My Computer? Explorer with no parameter opens My Documents, Explorer mycomp~1 and Explorer ""My Computer"" both say the directory doesn't exist. (This is on XP Pro BTW.)

  12. 01 Jan 1999 at 00:00

    This thread is for discussions of Shell and ShellExecute function.

Leave a comment

Sign in or Join us (it's free).

James Crowley James first started this website when learning Visual Basic back in 1999 whilst studying his GCSEs. The site grew steadily over the years while being run as a hobby - to a regular monthly audience ...
AddThis

Related discussion

Related podcasts

  • Christian Beauclair

    14 mai 2008 (�mission #0074) ::.Christian Beauclair: Stratégies de migration VB6 vers .NET Nous discutons avec Christian Beauclair des stratégies de migration VB6 vers .NET. Entre autres, nous discutons comment utiliser le "VB 6 Code Advisor" et le "Interop Forms Toolkit" pour ajouter la puiss...

Want to stay in touch with what's going on? Follow us on twitter!