Microsoft KB Archive/114038

= Using ShellExecute as an Alternative to ExecProgram =

Article ID: 114038

Article Last Modified on 10/14/2003

-

APPLIES TO


 * Microsoft Multimedia Viewer Publishing Toolkit 2.0
 * Microsoft Multimedia Viewer Publishing Toolkit 2.0a

-



This article was previously published under Q114038



SUMMARY
This article describes how to launch applications from within Viewer using the Windows ShellExecute function. Below are a few advantages to using ShellExecute in place of Viewer's ExecProgram function:


 * You can specify or change the default directory.
 * You can open or print documents based on existing file associations.
 * You have greater control over the application's initial display state.



MORE INFORMATION
To use ShellExecute from within Viewer, the ShellExecute function must first be registered in the [CONFIG] section of your configuration script as shown below:

  RegisterRoutine("shell","ShellExecute","USSSSi")

Once this has been done, ShellExecute can be called just as you would call a regular Viewer command.

NOTE: For additional information on registering DLL routines, please see pages 4-21 thru 4-24 of the "Authoring Guide".

The ShellExecute function takes 6 parameters. These parameters must appear in the following order:


 * 1) hwnd - Identifies the parent window. This window receives any message boxes an application produces (for example, for error reporting). Pass either the Viewer hwndContext or hwndApp variable for this.
 * 2) lpszOp - Points to a null-terminated string specifying the operation to perform. This string can be "open" or "print". If this parameter is NULL, "open" is the default value.
 * 3) lpszFile - Points to a null-terminated string specifying the file to open.
 * 4) lpszParams - Points to a null-terminated string specifying parameters passed to the application when the lpszFile parameter specifies an executable file. If lpszFile points to a string specifying a document file, this parameter is NULL.
 * 5) lpszDir - Points to a null-terminated string specifying the default directory.
 * 6) fsShowCmd - Specifies whether the application window is to be shown when the application is opened. This parameter can be one of the following values: DisplayState Value Meaning  - -- HIDE 0 Hides the window and passes activation to another window. SHOWNORMAL 1 Activates and displays a window. If the window is minimized or maximized, Windows restores it to its original size and position (same as RESTORE). SHOWMINIMIZED 2 Activates a window and displays it as an icon. SHOWMAXIMIZED 3 Activates a window and displays it as a maximized window. SHOWMINNOACTIVATE 4 Displays a window in its most recent size and position. The window that is currently active remains active. SHOW 5 Activates a window and displays it in its current size and position. MINIMIZE 6 Minimizes the specified window and activates the top-level window in the system's list. SHOWMINNOACTIVE 7 Displays a window as an icon. The window that is currently active remains active. SHOWNA 8 Displays a window in its current state. The window that is currently active remains active. RESTORE 9 Activates and displays a window. If the window is minimized or maximized, Windows restores it to its original size and position (same as SHOWNORMAL).

EXAMPLES
NOTE: The following examples use forward slashes ("/") in pathnames instead of back slashes ("\"). See page 5-7 of the "Technical Reference" for more information on this technique.

/* Uses the File Manager association to open README.WRI in Microsoft Write and display it fullscreen */

ShellExecute (hwndapp, "open", "C:/WINDOWS/README.WRI", "", "",3)

/* Uses the File Manager association to activate and minimize Notepad while printing WIN.INI */

ShellExecute (hwndapp, "print", "C:/WINDOWS/WIN.INI", "", "",2)

/* Changes the default directory to C:\VIEWER and displays README.TXT in Notepad with a normal display state */

ShellExecute (hwndapp, "open", "NOTEPAD.EXE", "README.TXT", "C:/VIEWER",1)

