From my research I have found that the ShellExecute WindowsAPI function returns a handle to the instance of the opened program. However, when I have discovered that no matter what program I start with it, ShellExecute returns 42. Even stranger is that it continues to return 42 no matter how many instances of the program I start. I have to use ShellExecute because I need to start a program using it's shortcut, something the Shell command doesn't do. Also, I need the handle of the program started so I can shut it down later. Anyone have any ideas?