Using ShellExecute as an Alternative to ExecProgram (114038)



The information in this article 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)

REFERENCES

Windows 3.1 Software Development Kit "Programmer's Reference", Volume 2

Modification Type:MinorLast Reviewed:10/14/2003
Keywords:KB114038