378 lines
13 KiB
C#
378 lines
13 KiB
C#
using System;
|
|
|
|
namespace ShellExtensions.Interop.Common
|
|
{
|
|
/// <summary>
|
|
/// The STGM constants are flags that indicate
|
|
/// conditions for creating and deleting the object and access modes
|
|
/// for the object.
|
|
///
|
|
/// You can combine these flags, but you can only choose one flag
|
|
/// from each group of related flags. Typically one flag from each
|
|
/// of the access and sharing groups must be specified for all
|
|
/// functions and methods which use these constants.
|
|
/// </summary>
|
|
[Flags]
|
|
public enum AccessModes
|
|
{
|
|
/// <summary>
|
|
/// Indicates that, in direct mode, each change to a storage
|
|
/// or stream element is written as it occurs.
|
|
/// </summary>
|
|
Direct = 0x00000000,
|
|
|
|
/// <summary>
|
|
/// Indicates that, in transacted mode, changes are buffered
|
|
/// and written only if an explicit commit operation is called.
|
|
/// </summary>
|
|
Transacted = 0x00010000,
|
|
|
|
/// <summary>
|
|
/// Provides a faster implementation of a compound file
|
|
/// in a limited, but frequently used, case.
|
|
/// </summary>
|
|
Simple = 0x08000000,
|
|
|
|
/// <summary>
|
|
/// Indicates that the object is read-only,
|
|
/// meaning that modifications cannot be made.
|
|
/// </summary>
|
|
Read = 0x00000000,
|
|
|
|
/// <summary>
|
|
/// Enables you to save changes to the object,
|
|
/// but does not permit access to its data.
|
|
/// </summary>
|
|
Write = 0x00000001,
|
|
|
|
/// <summary>
|
|
/// Enables access and modification of object data.
|
|
/// </summary>
|
|
ReadWrite = 0x00000002,
|
|
|
|
/// <summary>
|
|
/// Specifies that subsequent openings of the object are
|
|
/// not denied read or write access.
|
|
/// </summary>
|
|
ShareDenyNone = 0x00000040,
|
|
|
|
/// <summary>
|
|
/// Prevents others from subsequently opening the object in Read mode.
|
|
/// </summary>
|
|
ShareDenyRead = 0x00000030,
|
|
|
|
/// <summary>
|
|
/// Prevents others from subsequently opening the object
|
|
/// for Write or ReadWrite access.
|
|
/// </summary>
|
|
ShareDenyWrite = 0x00000020,
|
|
|
|
/// <summary>
|
|
/// Prevents others from subsequently opening the object in any mode.
|
|
/// </summary>
|
|
ShareExclusive = 0x00000010,
|
|
|
|
/// <summary>
|
|
/// Opens the storage object with exclusive access to the most
|
|
/// recently committed version.
|
|
/// </summary>
|
|
Priority = 0x00040000,
|
|
|
|
/// <summary>
|
|
/// Indicates that the underlying file is to be automatically destroyed when the root
|
|
/// storage object is released. This feature is most useful for creating temporary files.
|
|
/// </summary>
|
|
DeleteOnRelease = 0x04000000,
|
|
|
|
/// <summary>
|
|
/// Indicates that, in transacted mode, a temporary scratch file is usually used
|
|
/// to save modifications until the Commit method is called.
|
|
/// Specifying NoScratch permits the unused portion of the original file
|
|
/// to be used as work space instead of creating a new file for that purpose.
|
|
/// </summary>
|
|
NoScratch = 0x00100000,
|
|
|
|
/// <summary>
|
|
/// Indicates that an existing storage object
|
|
/// or stream should be removed before the new object replaces it.
|
|
/// </summary>
|
|
Create = 0x00001000,
|
|
|
|
/// <summary>
|
|
/// Creates the new object while preserving existing data in a stream named "Contents".
|
|
/// </summary>
|
|
Convert = 0x00020000,
|
|
|
|
/// <summary>
|
|
/// Causes the create operation to fail if an existing object with the specified name exists.
|
|
/// </summary>
|
|
FailIfThere = 0x00000000,
|
|
|
|
/// <summary>
|
|
/// This flag is used when opening a storage object with Transacted
|
|
/// and without ShareExclusive or ShareDenyWrite.
|
|
/// In this case, specifying NoSnapshot prevents the system-provided
|
|
/// implementation from creating a snapshot copy of the file.
|
|
/// Instead, changes to the file are written to the end of the file.
|
|
/// </summary>
|
|
NoSnapshot = 0x00200000,
|
|
|
|
/// <summary>
|
|
/// Supports direct mode for single-writer, multireader file operations.
|
|
/// </summary>
|
|
DirectSingleWriterMultipleReader = 0x00400000
|
|
}
|
|
|
|
#if PREVIEW_HANDLER
|
|
/// <summary>
|
|
/// HRESULT Wrapper
|
|
/// </summary>
|
|
public enum HResult
|
|
{
|
|
/// <summary>
|
|
/// S_OK
|
|
/// </summary>
|
|
Ok = 0x0000,
|
|
|
|
/// <summary>
|
|
/// S_FALSE
|
|
/// </summary>
|
|
False = 0x0001,
|
|
|
|
/// <summary>
|
|
/// E_INVALIDARG
|
|
/// </summary>
|
|
InvalidArguments = unchecked((int)0x80070057),
|
|
|
|
/// <summary>
|
|
/// E_OUTOFMEMORY
|
|
/// </summary>
|
|
OutOfMemory = unchecked((int)0x8007000E),
|
|
|
|
/// <summary>
|
|
/// E_NOINTERFACE
|
|
/// </summary>
|
|
NoInterface = unchecked((int)0x80004002),
|
|
|
|
/// <summary>
|
|
/// E_FAIL
|
|
/// </summary>
|
|
Fail = unchecked((int)0x80004005),
|
|
|
|
/// <summary>
|
|
/// E_ELEMENTNOTFOUND
|
|
/// </summary>
|
|
ElementNotFound = unchecked((int)0x80070490),
|
|
|
|
/// <summary>
|
|
/// TYPE_E_ELEMENTNOTFOUND
|
|
/// </summary>
|
|
TypeElementNotFound = unchecked((int)0x8002802B),
|
|
|
|
/// <summary>
|
|
/// NO_OBJECT
|
|
/// </summary>
|
|
NoObject = unchecked((int)0x800401E5),
|
|
|
|
/// <summary>
|
|
/// Win32 Error code: ERROR_CANCELLED
|
|
/// </summary>
|
|
Win32ErrorCanceled = 1223,
|
|
|
|
/// <summary>
|
|
/// ERROR_CANCELLED
|
|
/// </summary>
|
|
Canceled = unchecked((int)0x800704C7),
|
|
|
|
/// <summary>
|
|
/// The requested resource is in use
|
|
/// </summary>
|
|
ResourceInUse = unchecked((int)0x800700AA),
|
|
|
|
/// <summary>
|
|
/// The requested resources is read-only.
|
|
/// </summary>
|
|
AccessDenied = unchecked((int)0x80030005)
|
|
}
|
|
|
|
[Flags]
|
|
internal enum WindowStyles
|
|
{
|
|
/// <summary>
|
|
/// The window has a thin-line border.
|
|
/// </summary>
|
|
Border = 0x00800000,
|
|
|
|
/// <summary>
|
|
/// The window has a title bar (includes the WS_BORDER style).
|
|
/// </summary>
|
|
Caption = 0x00C00000,
|
|
|
|
/// <summary>
|
|
/// The window is a child window.
|
|
/// A window with this style cannot have a menu bar.
|
|
/// This style cannot be used with the WS_POPUP style.
|
|
/// </summary>
|
|
Child = 0x40000000,
|
|
|
|
/// <summary>
|
|
/// Same as the WS_CHILD style.
|
|
/// </summary>
|
|
ChildWindow = 0x40000000,
|
|
|
|
/// <summary>
|
|
/// Excludes the area occupied by child windows when drawing occurs within the parent window.
|
|
/// This style is used when creating the parent window.
|
|
/// </summary>
|
|
ClipChildren = 0x02000000,
|
|
|
|
/// <summary>
|
|
/// Clips child windows relative to each other;
|
|
/// that is, when a particular child window receives a WM_PAINT message,
|
|
/// the WS_CLIPSIBLINGS style clips all other overlapping child windows out of the region of the child window to be updated.
|
|
/// If WS_CLIPSIBLINGS is not specified and child windows overlap, it is possible,
|
|
/// when drawing within the client area of a child window, to draw within the client area of a neighboring child window.
|
|
/// </summary>
|
|
ClipSiblings = 0x04000000,
|
|
|
|
/// <summary>
|
|
/// The window is initially disabled. A disabled window cannot receive input from the user.
|
|
/// To change this after a window has been created, use the EnableWindow function.
|
|
/// </summary>
|
|
Disabled = 0x08000000,
|
|
|
|
/// <summary>
|
|
/// The window has a border of a style typically used with dialog boxes.
|
|
/// A window with this style cannot have a title bar.
|
|
/// </summary>
|
|
DialogFrame = 0x0040000,
|
|
|
|
/// <summary>
|
|
/// The window is the first control of a group of controls.
|
|
/// The group consists of this first control and all controls defined after it, up to the next control with the WS_GROUP style.
|
|
/// The first control in each group usually has the WS_TABSTOP style so that the user can move from group to group.
|
|
/// The user can subsequently change the keyboard focus from one control in the group to the next control
|
|
/// in the group by using the direction keys.
|
|
///
|
|
/// You can turn this style on and off to change dialog box navigation.
|
|
/// To change this style after a window has been created, use the SetWindowLong function.
|
|
/// </summary>
|
|
Group = 0x00020000,
|
|
|
|
/// <summary>
|
|
/// The window has a horizontal scroll bar.
|
|
/// </summary>
|
|
HorizontalScroll = 0x00100000,
|
|
|
|
/// <summary>
|
|
/// The window is initially minimized.
|
|
/// Same as the WS_MINIMIZE style.
|
|
/// </summary>
|
|
Iconic = 0x20000000,
|
|
|
|
/// <summary>
|
|
/// The window is initially maximized.
|
|
/// </summary>
|
|
Maximize = 0x01000000,
|
|
|
|
/// <summary>
|
|
/// The window has a maximize button.
|
|
/// Cannot be combined with the WS_EX_CONTEXTHELP style.
|
|
/// The WS_SYSMENU style must also be specifie
|
|
/// </summary>
|
|
MaximizeBox = 0x00010000,
|
|
|
|
/// <summary>
|
|
/// The window is initially minimized.
|
|
/// Same as the WS_ICONIC style.
|
|
/// </summary>
|
|
Minimize = 0x20000000,
|
|
|
|
/// <summary>
|
|
/// The window has a minimize button.
|
|
/// Cannot be combined with the WS_EX_CONTEXTHELP style.
|
|
/// The WS_SYSMENU style must also be specified.
|
|
/// </summary>
|
|
MinimizeBox = 0x00020000,
|
|
|
|
/// <summary>
|
|
/// The window is an overlapped window.
|
|
/// An overlapped window has a title bar and a border.
|
|
/// Same as the WS_TILED style.
|
|
/// </summary>
|
|
Overlapped = 0x00000000,
|
|
|
|
/// <summary>
|
|
/// The windows is a pop-up window.
|
|
/// This style cannot be used with the WS_CHILD style.
|
|
/// </summary>
|
|
Popup = unchecked((int)0x80000000),
|
|
|
|
/// <summary>
|
|
/// The window has a sizing border.
|
|
/// Same as the WS_THICKFRAME style.
|
|
/// </summary>
|
|
SizeBox = 0x00040000,
|
|
|
|
/// <summary>
|
|
/// The window has a window menu on its title bar.
|
|
/// The WS_CAPTION style must also be specified.
|
|
/// </summary>
|
|
SystemMenu = 0x00080000,
|
|
|
|
/// <summary>
|
|
/// The window is a control that can receive the keyboard focus when the user presses the TAB key.
|
|
/// Pressing the TAB key changes the keyboard focus to the next control with the WS_TABSTOP style.
|
|
///
|
|
/// You can turn this style on and off to change dialog box navigation.
|
|
/// To change this style after a window has been created, use the SetWindowLong function.
|
|
/// For user-created windows and modeless dialogs to work with tab stops,
|
|
/// alter the message loop to call the IsDialogMessage function.
|
|
/// </summary>
|
|
Tabstop = 0x00010000,
|
|
|
|
/// <summary>
|
|
/// The window has a sizing border.
|
|
/// Same as the WS_SIZEBOX style.
|
|
/// </summary>
|
|
ThickFrame = 0x00040000,
|
|
|
|
/// <summary>
|
|
/// The window is an overlapped window.
|
|
/// An overlapped window has a title bar and a border.
|
|
/// Same as the WS_OVERLAPPED style.
|
|
/// </summary>
|
|
Tiled = 0x00000000,
|
|
|
|
/// <summary>
|
|
/// The window is initially visible.
|
|
///
|
|
/// This style can be turned on and off by using the ShowWindow or SetWindowPos function.
|
|
/// </summary>
|
|
Visible = 0x10000000,
|
|
|
|
/// <summary>
|
|
/// The window has a vertical scroll bar.
|
|
/// </summary>
|
|
VerticalScroll = 0x00200000,
|
|
|
|
/// <summary>
|
|
/// The window is an overlapped window.
|
|
/// Same as the WS_OVERLAPPEDWINDOW style.
|
|
/// </summary>
|
|
TiledWindowMask = Overlapped | Caption | SystemMenu | ThickFrame | MinimizeBox | MaximizeBox,
|
|
|
|
/// <summary>
|
|
/// The window is a pop-up window.
|
|
/// The WS_CAPTION and WS_POPUPWINDOW styles must be combined to make the window menu visible.
|
|
/// </summary>
|
|
PopupWindowMask = Popup | Border | SystemMenu,
|
|
|
|
/// <summary>
|
|
/// The window is an overlapped window. Same as the WS_TILEDWINDOW style.
|
|
/// </summary>
|
|
OverlappedWindowMask = Overlapped | Caption | SystemMenu | ThickFrame | MinimizeBox | MaximizeBox,
|
|
}
|
|
#endif
|
|
}
|