com.sun.jna.platform.win32.ShellAPI Maven / Gradle / Ivy
Show all versions of jna-platform Show documentation
/* Copyright (c) 2010 Daniel Doubrovkine, All Rights Reserved
*
* The contents of this file is dual-licensed under 2
* alternative Open Source/Free licenses: LGPL 2.1 or later and
* Apache License 2.0. (starting with JNA version 4.0.0).
*
* You can freely decide which license you want to apply to
* the project.
*
* You may obtain a copy of the LGPL License at:
*
* http://www.gnu.org/licenses/licenses.html
*
* A copy is also included in the downloadable source code package
* containing JNA, in file "LGPL2.1".
*
* You may obtain a copy of the Apache License at:
*
* http://www.apache.org/licenses/
*
* A copy is also included in the downloadable source code package
* containing JNA, in file "AL2.0".
*/
package com.sun.jna.platform.win32;
import com.sun.jna.Platform;
import com.sun.jna.Pointer;
import com.sun.jna.Structure;
import com.sun.jna.Structure.FieldOrder;
import com.sun.jna.TypeMapper;
import com.sun.jna.platform.win32.WinDef.DWORD;
import com.sun.jna.platform.win32.WinDef.HINSTANCE;
import com.sun.jna.platform.win32.WinDef.HWND;
import com.sun.jna.platform.win32.WinDef.LPARAM;
import com.sun.jna.platform.win32.WinDef.RECT;
import com.sun.jna.platform.win32.WinDef.UINT;
import com.sun.jna.platform.win32.WinNT.HANDLE;
import com.sun.jna.platform.win32.WinReg.HKEY;
import com.sun.jna.win32.StdCallLibrary;
import com.sun.jna.win32.W32APITypeMapper;
/**
* Ported from ShellAPI.h.
* Microsoft Windows SDK 6.0A.
* @author dblock[at]dblock.org
*/
public interface ShellAPI extends StdCallLibrary {
int STRUCTURE_ALIGNMENT = Platform.is64Bit() ? Structure.ALIGN_DEFAULT : Structure.ALIGN_NONE;
TypeMapper TYPE_MAPPER = Boolean.getBoolean("w32.ascii") ? W32APITypeMapper.ASCII : W32APITypeMapper.UNICODE;
int FO_MOVE = 0x0001;
int FO_COPY = 0x0002;
int FO_DELETE = 0x0003;
int FO_RENAME = 0x0004;
int FOF_MULTIDESTFILES = 0x0001;
int FOF_CONFIRMMOUSE = 0x0002;
int FOF_SILENT = 0x0004; // don't display progress UI (confirm prompts may be displayed still)
int FOF_RENAMEONCOLLISION = 0x0008; // automatically rename the source files to avoid the collisions
int FOF_NOCONFIRMATION = 0x0010; // don't display confirmation UI, assume "yes" for cases that can be bypassed, "no" for those that can not
int FOF_WANTMAPPINGHANDLE = 0x0020; // Fill in SHFILEOPSTRUCT.hNameMappings
int FOF_ALLOWUNDO = 0x0040; // enable undo including Recycle behavior for IFileOperation::Delete()
int FOF_FILESONLY = 0x0080; // only operate on the files (non folders), both files and folders are assumed without this
int FOF_SIMPLEPROGRESS = 0x0100; // means don't show names of files
int FOF_NOCONFIRMMKDIR = 0x0200; // don't dispplay confirmatino UI before making any needed directories, assume "Yes" in these cases
int FOF_NOERRORUI = 0x0400; // don't put up error UI, other UI may be displayed, progress, confirmations
int FOF_NOCOPYSECURITYATTRIBS = 0x0800; // dont copy file security attributes (ACLs)
int FOF_NORECURSION = 0x1000; // don't recurse into directories for operations that would recurse
int FOF_NO_CONNECTED_ELEMENTS = 0x2000; // don't operate on connected elements ("xxx_files" folders that go with .htm files)
int FOF_WANTNUKEWARNING = 0x4000; // during delete operation, warn if nuking instead of recycling (partially overrides FOF_NOCONFIRMATION)
int FOF_NORECURSEREPARSE = 0x8000; // deprecated; the operations engine always does the right thing on FolderLink objects (symlinks, reparse points, folder shortcuts)
int FOF_NO_UI = (FOF_SILENT | FOF_NOCONFIRMATION | FOF_NOERRORUI | FOF_NOCONFIRMMKDIR); // don't display any UI at all
int PO_DELETE = 0x0013; // printer is being deleted
int PO_RENAME = 0x0014; // printer is being renamed
int PO_PORTCHANGE = 0x0020; // port this printer connected to is being changed
int PO_REN_PORT = 0x0034; // PO_RENAME and PO_PORTCHANGE at same time.
/**
* Contains information that the SHFileOperation function uses to perform file operations.
*/
@FieldOrder({"hwnd", "wFunc", "pFrom", "pTo", "fFlags", "fAnyOperationsAborted", "pNameMappings", "lpszProgressTitle"})
public static class SHFILEOPSTRUCT extends Structure {
/**
* A window handle to the dialog box to display information about
* the status of the file operation.
*/
public HANDLE hwnd;
/**
* An FO_* value that indicates which operation to perform.
*/
public int wFunc;
/**
* A pointer to one or more source file names, double null-terminated.
*/
public String pFrom;
/**
* A pointer to the destination file or directory name.
*/
public String pTo;
/**
* Flags that control the file operation.
*/
public short fFlags;
/**
* When the function returns, this member contains TRUE if any file operations
* were aborted before they were completed; otherwise, FALSE. An operation can
* be manually aborted by the user through UI or it can be silently aborted by
* the system if the FOF_NOERRORUI or FOF_NOCONFIRMATION flags were set.
*/
public boolean fAnyOperationsAborted;
/**
* When the function returns, this member contains a handle to a name mapping
* object that contains the old and new names of the renamed files. This member
* is used only if the fFlags member includes the FOF_WANTMAPPINGHANDLE flag.
*/
public Pointer pNameMappings;
/**
* A pointer to the title of a progress dialog box. This is a null-terminated string.
*/
public String lpszProgressTitle;
/** Use this to encode pFrom/pTo
paths.
* @param paths Paths to encode
* @return Encoded paths
*/
public String encodePaths(String[] paths) {
String encoded = "";
for (int i=0; i < paths.length;i++) {
encoded += paths[i];
encoded += "\0";
}
return encoded + "\0";
}
}
/**
* Appbar message value to send. This parameter can be one of the following
* values.
*/
int ABM_NEW = 0x00000000;
/**
* Registers a new appbar and specifies the message identifier that the
* system should use to send notification messages to the appbar.
*/
int ABM_REMOVE = 0x00000001;
/** Unregisters an appbar, removing the bar from the system's internal list.*/
int ABM_QUERYPOS = 0x00000002;
/** Requests a size and screen position for an appbar. */
int ABM_SETPOS = 0x00000003;
/** Sets the size and screen position of an appbar. */
int ABM_GETSTATE = 0x00000004;
/** Retrieves the autohide and always-on-top states of the Windows taskbar. */
int ABM_GETTASKBARPOS = 0x00000005;
/**
* Retrieves the bounding rectangle of the Windows taskbar. Note that this
* applies only to the system taskbar. Other objects, particularly toolbars
* supplied with third-party software, also can be present. As a result,
* some of the screen area not covered by the Windows taskbar might not be
* visible to the user. To retrieve the area of the screen not covered by
* both the taskbar and other app bars -- the working area available to your
* application --, use the GetMonitorInfo function.
*/
int ABM_ACTIVATE = 0x00000006;
/**
* Notifies the system to activate or deactivate an appbar. The lParam
* member of the APPBARDATA pointed to by pData is set to TRUE to activate
* or FALSE to deactivate.
*/
int ABM_GETAUTOHIDEBAR = 0x00000007;
/**
* Retrieves the handle to the autohide appbar associated with a particular
* edge of the screen.
*/
int ABM_SETAUTOHIDEBAR = 0x00000008;
/** Registers or unregisters an autohide appbar for an edge of the screen. */
int ABM_WINDOWPOSCHANGED = 0x00000009;
/** Notifies the system when an appbar's position has changed. */
int ABM_SETSTATE = 0x0000000A;
/** Left edge. */
int ABE_LEFT = 0;
/** Top edge. */
int ABE_TOP = 1;
/** Right edge. */
int ABE_RIGHT = 2;
/** Bottom edge. */
int ABE_BOTTOM = 3;
/**
* Contains information about a system appbar message.
*/
@FieldOrder({"cbSize", "hWnd", "uCallbackMessage", "uEdge", "rc", "lParam"})
public static class APPBARDATA extends Structure {
public static class ByReference extends APPBARDATA implements Structure.ByReference {
}
public DWORD cbSize;
public HWND hWnd;
public UINT uCallbackMessage;
public UINT uEdge;
public RECT rc;
public LPARAM lParam;
public APPBARDATA() {
super();
}
public APPBARDATA(Pointer p) {
super(p);
}
}
/**
*
* Contains information used by
* ShellExecuteEx.
*
*
*
* typedef struct _SHELLEXECUTEINFO {
* DWORD cbSize;
* ULONG fMask;
* HWND hwnd;
* LPCTSTR lpVerb;
* LPCTSTR lpFile;
* LPCTSTR lpParameters;
* LPCTSTR lpDirectory;
* int nShow;
* HINSTANCE hInstApp;
* LPVOID lpIDList;
* LPCTSTR lpClass;
* HKEY hkeyClass;
* DWORD dwHotKey;
* union {
* HANDLE hIcon;
* HANDLE hMonitor;
* } DUMMYUNIONNAME;
* HANDLE hProcess;
* } SHELLEXECUTEINFO, *LPSHELLEXECUTEINFO;
*
*
* Remarks
*
* The SEE_MASK_NOASYNC flag must be specified if the
* thread calling
* ShellExecuteEx
* does not have a message loop or if the thread or process will terminate
* soon after ShellExecuteEx returns. Under such
* conditions, the calling thread will not be available to complete the DDE
* conversation, so it is important that ShellExecuteEx
* complete the conversation before returning control to the calling
* application. Failure to complete the conversation can result in an
* unsuccessful launch of the document.
*
*
* If the calling thread has a message loop and will exist for some time
* after the call to
* ShellExecuteEx
* returns, the SEE_MASK_NOASYNC flag is optional. If the
* flag is omitted, the calling thread's message pump will be used to
* complete the DDE conversation. The calling application regains control
* sooner, since the DDE conversation can be completed in the background.
*
*
* When populating the most frequently used program list using the
* SEE_MASK_FLAG_LOG_USAGE flag in fMask,
* counts are made differently for the classic and Windows XP-style
* Start menus. The classic style menu only counts hits to the shortcuts in
* the Program menu. The Windows XP-style menu counts both hits to the
* shortcuts in the Program menu and hits to those shortcuts' targets
* outside of the Program menu. Therefore, setting lpFile
* to myfile.exe would affect the count for the Windows XP-style menu
* regardless of whether that file was launched directly or through a
* shortcut. The classic style-which would require lpFile
* to contain a .lnk file name-would not be affected.
*
*
* To include double quotation marks in lpParameters,
* enclose each mark in a pair of quotation marks, as in the following
* example.
*
*
*
* sei.lpParameters = "An example: \"\"\"quoted text\"\"\"";
*
*
*
* In this case, the application receives three parameters: An,
* example:, and "quoted text".
*
*/
@FieldOrder({"cbSize", "fMask", "hwnd", "lpVerb", "lpFile", "lpParameters",
"lpDirectory", "nShow", "hInstApp", "lpIDList", "lpClass", "hKeyClass", "dwHotKey", "hMonitor",
"hProcess"})
public class SHELLEXECUTEINFO extends Structure {
/**
*
* Type: DWORD
*
*
* Required. The size of this structure, in bytes.
*
*/
public int cbSize = size();
/**
*
* Type: ULONG
*
*
* Flags that indicate the content and validity of the other structure
* members; a combination of the following values:
*
*
* -
*
* SEE_MASK_DEFAULT (0x00000000)
*
*
* -
*
* Use default values.
*
*
* -
*
* SEE_MASK_CLASSNAME (0x00000001)
*
*
* -
*
* Use the class name given by the lpClass member. If
* both SEE_MASK_CLASSKEY and SEE_MASK_CLASSNAME are set, the class key
* is used.
*
*
* -
*
* SEE_MASK_CLASSKEY (0x00000003)
*
*
* -
*
* Use the class key given by the hkeyClass member. If
* both SEE_MASK_CLASSKEY and SEE_MASK_CLASSNAME are set, the class key
* is used.
*
*
* -
*
* SEE_MASK_IDLIST (0x00000004)
*
*
* -
*
* Use the item identifier list given by the lpIDList
* member. The lpIDList member must point to an
* structure.
*
*
* -
*
* SEE_MASK_INVOKEIDLIST (0x0000000C)
*
*
* -
*
* Use the interface of the selected item's . Use either
* lpFile to identify the item by its file system path
* or lpIDList to identify the item by its PIDL. This
* flag allows applications to use to invoke verbs from shortcut menu
* extensions instead of the static verbs listed in the registry.
*
* Note
* SEE_MASK_INVOKEIDLIST overrides and implies
* SEE_MASK_IDLIST.
* -
*
* SEE_MASK_ICON (0x00000010)
*
*
* -
*
* Use the icon given by the hIcon member. This flag
* cannot be combined with SEE_MASK_HMONITOR.
*
* Note This flag is used
* only in Windows XP and earlier. It is ignored as of
* Windows Vista.
* -
*
* SEE_MASK_HOTKEY (0x00000020)
*
*
* -
*
* Use the keyboard shortcut given by the dwHotKey
* member.
*
*
* -
*
* SEE_MASK_NOCLOSEPROCESS (0x00000040)
*
*
* -
*
* Use to indicate that the hProcess member receives
* the process handle. This handle is typically used to allow an
* application to find out when a process created with terminates. In
* some cases, such as when execution is satisfied through a DDE
* conversation, no handle will be returned. The calling application is
* responsible for closing the handle when it is no longer needed.
*
*
* -
*
* SEE_MASK_CONNECTNETDRV (0x00000080)
*
*
* -
*
* Validate the share and connect to a drive letter. This enables
* reconnection of disconnected network drives. The
* lpFile member is a UNC path of a file on a network.
*
*
* -
*
* SEE_MASK_NOASYNC (0x00000100)
*
*
* -
*
* Wait for the execute operation to complete before returning. This
* flag should be used by callers that are using ShellExecute forms that
* might result in an async activation, for example DDE, and create a
* process that might be run on a background thread. (Note: runs on a
* background thread by default if the caller's threading model is not
* Apartment.) Calls to ShellExecuteEx from processes
* already running on background threads should always pass this flag.
* Also, applications that exit immediately after calling
* ShellExecuteEx should specify this flag.
*
*
* If the execute operation is performed on a background thread and the
* caller did not specify the SEE_MASK_ASYNCOK flag, then the calling
* thread waits until the new process has started before returning. This
* typically means that either has been called, the DDE communication
* has completed, or that the custom execution delegate has notified
* that it is done. If the SEE_MASK_WAITFORINPUTIDLE flag is specified,
* then ShellExecuteEx calls and waits for the new
* process to idle before returning, with a maximum timeout of 1 minute.
*
*
* For further discussion on when this flag is necessary, see the
* Remarks section.
*
*
* -
*
* SEE_MASK_FLAG_DDEWAIT (0x00000100)
*
*
* -
*
* Do not use; use SEE_MASK_NOASYNC instead.
*
*
* -
*
* SEE_MASK_DOENVSUBST (0x00000200)
*
*
* -
*
* Expand any environment variables specified in the string given by the
* lpDirectory or lpFile member.
*
*
* -
*
* SEE_MASK_FLAG_NO_UI (0x00000400)
*
*
* -
*
* Do not display an error message box if an error occurs.
*
*
* -
*
* SEE_MASK_UNICODE (0x00004000)
*
*
* -
*
* Use this flag to indicate a Unicode application.
*
*
* -
*
* SEE_MASK_NO_CONSOLE (0x00008000)
*
*
* -
*
* Use to inherit the parent's console for the new process instead of
* having it create a new console. It is the opposite of using a
* CREATE_NEW_CONSOLE flag with .
*
*
* -
*
* SEE_MASK_ASYNCOK (0x00100000)
*
*
* -
*
* The execution can be performed on a background thread and the call
* should return immediately without waiting for the background thread
* to finish. Note that in certain cases ignores this flag and waits for
* the process to finish before returning.
*
*
* -
*
* SEE_MASK_NOQUERYCLASSSTORE (0x01000000)
*
*
* -
*
* Not used.
*
*
* -
*
* SEE_MASK_HMONITOR (0x00200000)
*
*
* -
*
* Use this flag when specifying a monitor on multi-monitor systems. The
* monitor is specified in the hMonitor member. This
* flag cannot be combined with SEE_MASK_ICON.
*
*
* -
*
* SEE_MASK_NOZONECHECKS (0x00800000)
*
*
* -
*
* Introduced in Windows XP. Do not perform a zone
* check. This flag allows to bypass zone checking put into place by .
*
*
* -
*
* SEE_MASK_WAITFORINPUTIDLE (0x02000000)
*
*
* -
*
* After the new process is created, wait for the process to become idle
* before returning, with a one minute timeout. See for more details.
*
*
* -
*
* SEE_MASK_FLAG_LOG_USAGE (0x04000000)
*
*
* -
*
* Introduced in Windows XP. Keep track of the
* number of times this application has been launched. Applications with
* sufficiently high counts appear in the Start Menu's list of most
* frequently used programs.
*
*
* -
*
* SEE_MASK_FLAG_HINST_IS_SITE (0x08000000)
*
*
* -
*
* Introduced in Windows 8. The
* hInstApp member is used to specify the of an object
* that implements . This object will be used as a site pointer. The
* site pointer is used to provide services to the function, the handler
* binding process, and invoked verb handlers.
*
*
*
*/
public int fMask;
/**
*
* Type: HWND
*
*
* Optional. A handle to the parent window, used to display any message
* boxes that the system might produce while executing this function.
* This value can be NULL.
*
*/
public HWND hwnd;
/**
*
* Type: LPCTSTR
*
*
*
*
* A string, referred to 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. This parameter can be
* NULL, in which case 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. The
* following verbs are commonly used:
*
*
* -
*
* 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.
*
*
* -
*
* properties
*
*
* -
*
* Displays the file or folder's properties.
*
*
*
*/
public String lpVerb;
/**
*
* Type: LPCTSTR
*
*
* The address of a null-terminated string that specifies the name of
* the file or object on which will perform the action specified by the
* lpVerb parameter. The system registry verbs that are
* supported by the ShellExecuteEx function include
* "open" for executable files and document files and "print" for
* document files for which a print handler has been registered. Other
* applications might have added Shell verbs through the system
* registry, such as "play" for .avi and .wav files. To specify a Shell
* namespace object, pass the fully qualified parse name and set the
* SEE_MASK_INVOKEIDLIST flag in the
* fMask parameter.
*
* Note If the
* SEE_MASK_INVOKEIDLIST flag is set, you can use
* either lpFile or lpIDList to
* identify the item by its file system path or its PIDL respectively.
* One of the two values-lpFile or
* lpIDList-must be set.
* Note If the path is not
* included with the name, the current directory is assumed.
*/
public String lpFile;
/**
*
* Type: LPCTSTR
*
*
* Optional. The address of a null-terminated string that contains the
* application parameters. The parameters must be separated by spaces.
* If the lpFile member specifies a document file,
* lpParameters should be NULL.
*
*/
public String lpParameters;
/**
*
* Type: LPCTSTR
*
*
* Optional. The address of a null-terminated string that specifies the
* name of the working directory. If this member is
* NULL, the current directory is used as the working
* directory.
*
*/
public String lpDirectory;
/**
*
* Type: int
*
*
* Required. Flags that specify how an application is to be shown when
* it is opened; one of the SW_ values listed for the
* ShellExecute
* function. 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.
*
*/
public int nShow;
/**
*
* Type: HINSTANCE
*
*
* [out] If SEE_MASK_NOCLOSEPROCESS is set and the call succeeds, it
* sets this member to a value greater than 32. If the function fails,
* it is set to an SE_ERR_XXX error value that indicates the cause of
* the failure. Although hInstApp is declared as an
* HINSTANCE for compatibility with 16-bit Windows applications, it is
* not a true HINSTANCE. It can be cast only to an int
* and compared to either 32 or the following SE_ERR_XXX error codes.
*
*
* -
*
* SE_ERR_FNF (2)
*
*
* -
*
* File not found.
*
*
* -
*
* SE_ERR_PNF (3)
*
*
* -
*
* Path not found.
*
*
* -
*
* SE_ERR_ACCESSDENIED (5)
*
*
* -
*
* Access denied.
*
*
* -
*
* SE_ERR_OOM (8)
*
*
* -
*
* Out of memory.
*
*
* -
*
* SE_ERR_DLLNOTFOUND (32)
*
*
* -
*
* Dynamic-link library not found.
*
*
* -
*
* SE_ERR_SHARE (26)
*
*
* -
*
* Cannot share an open file.
*
*
* -
*
* SE_ERR_ASSOCINCOMPLETE (27)
*
*
* -
*
* File association information not complete.
*
*
* -
*
* SE_ERR_DDETIMEOUT (28)
*
*
* -
*
* DDE operation timed out.
*
*
* -
*
* SE_ERR_DDEFAIL (29)
*
*
* -
*
* DDE operation failed.
*
*
* -
*
* SE_ERR_DDEBUSY (30)
*
*
* -
*
* DDE operation is busy.
*
*
* -
*
* SE_ERR_NOASSOC (31)
*
*
* -
*
* File association not available.
*
*
*
*/
public HINSTANCE hInstApp;
/**
*
* Type: LPVOID
*
*
* The address of an absolute
* ITEMIDLIST
* structure (PCIDLIST_ABSOLUTE) to contain an item identifier list that
* uniquely identifies the file to execute. This member is ignored if
* the fMask member does not include
* SEE_MASK_IDLIST or
* SEE_MASK_INVOKEIDLIST.
*
*/
public Pointer lpIDList;
/**
*
* Type: LPCTSTR
*
*
*
* The address of a null-terminated string that specifies one of the
* following:
*
*
* - A ProgId. For example, "Paint.Picture".
* - A URI protocol scheme. For example, "http".
* - A file extension. For example, ".txt".
* - A registry path under HKEY_CLASSES_ROOT that names a subkey that
* contains one or more Shell verbs. This key will have a subkey that
* conforms to the Shell verb registry schema, such as
*
* shell\verb name
*
* .
*
*
* This member is ignored if fMask does not include
* SEE_MASK_CLASSNAME.
*
*/
public String lpClass;
/**
*
* Type: HKEY
*
*
* A handle to the registry key for the file type. The access rights for
* this registry key should be set to KEY_READ. This member is ignored
* if fMask does not include
* SEE_MASK_CLASSKEY.
*
*/
public HKEY hKeyClass;
/**
*
* Type: DWORD
*
*
* A keyboard shortcut to associate with the application. The low-order
* word is the virtual key code, and the high-order word is a modifier
* flag (HOTKEYF_). For a list of modifier flags, see the description of
* the
* WM_SETHOTKEY
* message. This member is ignored if fMask does
* not include SEE_MASK_HOTKEY.
*
*/
public int dwHotKey;
/**
* This is actually a union:
*
*
* union { HANDLE hIcon; HANDLE hMonitor; } DUMMYUNIONNAME;
*
*
* DUMMYUNIONNAME
*
* - hIcon
* -
*
* Type: HANDLE
*
*
* -
*
* A handle to the icon for the file type. This member is ignored if
* fMask does not include
* SEE_MASK_ICON. This value is used only in
* Windows XP and earlier. It is ignored as of Windows Vista.
*
*
* - hMonitor
* -
*
* Type: HANDLE
*
*
* -
*
* A handle to the monitor upon which the document is to be displayed.
* This member is ignored if fMask does not include
* SEE_MASK_HMONITOR.
*
*
*
*/
public HANDLE hMonitor;
/**
*
* Type: HANDLE
*
*
* A handle to the newly started application. This member is set on
* return and is always NULL unless
* fMask is set to
* SEE_MASK_NOCLOSEPROCESS. Even if
* fMask is set to
* SEE_MASK_NOCLOSEPROCESS, hProcess
* will be NULL if no process was launched. For
* example, if a document to be launched is a URL and an instance of
* Internet Explorer is already running, it will display the document.
* No new process is launched, and hProcess will be
* NULL.
*
* Note
* ShellExecuteEx
* does not always return an hProcess, even if a
* process is launched as the result of the call. For example, an
* hProcess does not return when you use
* SEE_MASK_INVOKEIDLIST to invoke
* IContextMenu
* .
*/
public HANDLE hProcess;
}
}