faqts : Computers : Programming : Languages : C++

+ Search
Add Entry AlertManage Folder Edit Entry Add page to http://del.icio.us/
Did You Find This Entry Useful?

36 of 48 people (75%) answered Yes
Recently 10 of 10 people (100%) answered Yes

Entry

How can I start a programm in C programming and Win NT without waiting on the answer, like a subprocess.

Feb 6th, 2002 07:14
Rafael Udaondo, Wes Rogers, John Technika,


Try ShellExecute:
HINSTANCE hInst =
ShellExecute(NULL,
"open",
"C:\\projects\\textpgm.exe",
NULL,
NULL,
SW_SHOWNORMAL);
(You will probably have to play with the parameters for your specific 
needs.)
ShellExecute
Performs an operation on a specified file. 
HINSTANCE ShellExecute(
    HWND hwnd, 
    LPCTSTR lpOperation,
    LPCTSTR lpFile, 
    LPCTSTR lpParameters, 
    LPCTSTR lpDirectory,
    INT nShowCmd
);
Parameters
hwnd 
[in] Handle to a parent window. This window receives any message boxes 
that an application produces, such as error reporting. 
lpOperation
[in] Pointer to a null-terminated string, referred to in this case as a 
verb, that specifies the action to be performed. The set of available 
verbs depends on the particular file or folder. Generally, the actions 
available from an object's shortcut menu are available verbs. For more 
information about verbs and their availability, see Object Verbs. See 
Extending Shortcut Menus for further discussion of shortcut menus. The 
following verbs are commonly used. 
Verb Description 
edit  Launches an editor and opens the document for editing. If lpFile 
is not a document file, the function will fail. 
explore Explores the folder specified by lpFile.  
find Initiates a search starting from the specified directory. 
open  Opens the file specified by the lpFile parameter. The file can be 
an executable file, a document file, or a folder. 
print  Prints the document file specified by lpFile. If lpFile is not a 
document file, the function will fail. 
If you set this parameter to NULL:
For systems prior to Microsoft® Windows® 2000, the default verb is used 
if it is valid and available in the registry. If not, the "open" verb 
is used. 
For Windows 2000 and later systems, the default verb is used if 
available. If not, the "open" verb is used. If neither verb is 
available, the system uses the first verb listed in the registry. 
lpFile 
[in] Pointer to a null-terminated string that specifies the file or 
object on which to execute the specified verb. To specify a Shell 
namespace object, pass the fully-qualified parse name. Note that not 
all verbs are supported on all objects. For example, not all document 
types support the "print" verb. 
lpParameters 
[in] If the lpFile parameter specifies an executable file, lpParameters 
is a pointer to a null-terminated string that specifies the parameters 
to be passed to the application. The format of this string is 
determined by the verb that is to be invoked. If lpFile specifies a 
document file, lpParameters should be NULL. 
lpDirectory 
[in] Pointer to a null-terminated string that specifies the default 
directory. 
nShowCmd 
[in] Flags that specify how an application is to be displayed when it 
is opened. If lpFile specifies a document file, the flag is simply 
passed to the associated application. It is up to the application to 
decide how to handle it. 
SW_HIDE  Hides the window and activates another window. 
SW_MAXIMIZE  Maximizes the specified window. 
SW_MINIMIZE  Minimizes the specified window and activates the next top-
level window in the z-order. 
SW_RESTORE  Activates and displays the window. If the window is 
minimized or maximized, Windows restores it to its original size and 
position. An application should specify this flag when restoring a 
minimized window. 
SW_SHOW  Activates the window and displays it in its current size and 
position.  
SW_SHOWDEFAULT  Sets the show state based on the SW_ flag specified in 
the STARTUPINFO structure passed to the CreateProcess function by the 
program that started the application. An application should call 
ShowWindow with this flag to set the initial show state of its main 
window. 
SW_SHOWMAXIMIZED  Activates the window and displays it as a maximized 
window. 
SW_SHOWMINIMIZED  Activates the window and displays it as a minimized 
window. 
SW_SHOWMINNOACTIVE  Displays the window as a minimized window. The 
active window remains active. 
SW_SHOWNA  Displays the window in its current state. The active window 
remains active. 
SW_SHOWNOACTIVATE  Displays a window in its most recent size and 
position. The active window remains active. 
SW_SHOWNORMAL  Activates and displays a window. If the window is 
minimized or maximized, Windows restores it to its original size and 
position. An application should specify this flag when displaying the 
window for the first time. 
Return Values
Returns a value greater than 32 if successful, or an error value that 
is less than or equal to 32 otherwise. The following table lists the 
error values. The return value is cast as an HINSTANCE for backward 
compatibility with 16-bit Microsoft® Windows® applications. It is not a 
true HINSTANCE, however. The only thing that can be done with the 
returned HINSTANCE is to cast it to an integer and compare it with the 
value 32 or one of the error codes below.
0  The operating system is out of memory or resources. 
ERROR_FILE_NOT_FOUND  The specified file was not found. 
ERROR_PATH_NOT_FOUND  The specified path was not found. 
ERROR_BAD_FORMAT  The .exe file is invalid (non-Win32® .exe or error 
in .exe image). 
SE_ERR_ACCESSDENIED  The operating system denied access to the 
specified file.  
SE_ERR_ASSOCINCOMPLETE  The file name association is incomplete or 
invalid. 
SE_ERR_DDEBUSY  The DDE transaction could not be completed because 
other DDE transactions were being processed. 
SE_ERR_DDEFAIL  The DDE transaction failed. 
SE_ERR_DDETIMEOUT  The DDE transaction could not be completed because 
the request timed out. 
SE_ERR_DLLNOTFOUND  The specified dynamic-link library was not found.  
SE_ERR_FNF  The specified file was not found.  
SE_ERR_NOASSOC  There is no application associated with the given file 
name extension. This error will also be returned if you attempt to 
print a file that is not printable. 
SE_ERR_OOM  There was not enough memory to complete the operation. 
SE_ERR_PNF  The specified path was not found. 
SE_ERR_SHARE  A sharing violation occurred. 
Remarks
This method allows you to execute any commands in a folder's shortcut 
menu or stored in the registry. 
To open a folder, use either of the following calls: 
ShellExecute(handle, NULL, path_to_folder, NULL, NULL, SW_SHOWNORMAL);
or 
ShellExecute(handle, "open", path_to_folder, NULL, NULL, SW_SHOWNORMAL);
To explore a folder, use: 
ShellExecute(handle, "explore", path_to_folder, NULL, NULL, 
SW_SHOWNORMAL);
To launch the Shell's Find utility for a directory, use:
ShellExecute(handle, "find", path_to_folder, NULL, NULL, 0);
If lpOperation is NULL, the function opens the file specified by 
lpFile. If lpOperation is "open" or "explore", the function will 
attempt to open or explore the folder. 
To obtain information about the application that is launched as a 
result of calling ShellExecute, use ShellExecuteEx. 
Windows 95/98/Me: ShellExecute is supported by the Microsoft Layer for 
Unicode. To use this, you must add certain files to your application, 
as outlined in Microsoft Layer for Unicode on Windows 95/98/Me Systems.
See Also
IShellExecuteHook
Requirements 
  Windows NT/2000: Requires Windows NT 3.1 or later. 
  Windows 95/98/Me: Requires Windows 95 or later. 
  Header: Declared in Shellapi.h. 
  Import Library: Shell32.lib.