mirror of https://github.com/dahall/Vanara.git
Added advanced ctor for CMINVOKECOMMANDINFOEX
parent
f652be90ab
commit
b2ab7769f9
|
@ -775,5 +775,83 @@ public static partial class Shell32
|
||||||
cbSize = (uint)Marshal.SizeOf(this);
|
cbSize = (uint)Marshal.SizeOf(this);
|
||||||
lpVerb = commandId;
|
lpVerb = commandId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>Initializes a new instance of the <see cref="CMINVOKECOMMANDINFOEX"/> struct with its fields.</summary>
|
||||||
|
/// <param name="verb">
|
||||||
|
/// The address of a null-terminated string that specifies the language-independent name of the command to carry out. This member is
|
||||||
|
/// typically a string when a command is being activated by an application. The system provides predefined constant values for the
|
||||||
|
/// following command strings.
|
||||||
|
/// <para>
|
||||||
|
/// If a canonical verb exists and a menu handler does not implement the canonical verb, it must return a failure code to enable the
|
||||||
|
/// next handler to be able to handle this verb.Failing to do this will break functionality in the system including ShellExecute.
|
||||||
|
/// </para>
|
||||||
|
/// <para>
|
||||||
|
/// Alternatively, rather than a pointer, this parameter can be MAKEINTRESOURCE(offset) where offset is the menu-identifier offset of
|
||||||
|
/// the command to carry out. Implementations can use the IS_INTRESOURCE macro to detect that this alternative is being employed. The
|
||||||
|
/// Shell uses this alternative when the user chooses a menu command.
|
||||||
|
/// </para>
|
||||||
|
/// </param>
|
||||||
|
/// <param name="show">A set of values to pass to the ShowWindow function if the command displays a window or starts an application.</param>
|
||||||
|
/// <param name="parent">
|
||||||
|
/// A handle to the window that is the owner of the shortcut menu. An extension can also use this handle as the owner of any message
|
||||||
|
/// boxes or dialog boxes it displays. Callers must specify a legitimate HWND that can be used as the owner window for any UI that
|
||||||
|
/// may be displayed. Failing to specify an HWND when calling from a UI thread (one with windows already created) will result in
|
||||||
|
/// reentrancy and possible bugs in the implementation of this call.
|
||||||
|
/// </param>
|
||||||
|
/// <param name="location">If supplied, the point where the command is invoked.</param>
|
||||||
|
/// <param name="allowAsync">
|
||||||
|
/// The implementation can spin off a new thread or process to handle the call and does not need to block on completion of the
|
||||||
|
/// function being invoked. For example, if the verb is "delete" the call may return before all of the items have been deleted. Since
|
||||||
|
/// this is advisory, calling applications that specify this flag cannot guarantee that this request will be honored if they are not
|
||||||
|
/// familiar with the implementation of the verb that they are invoking.
|
||||||
|
/// </param>
|
||||||
|
/// <param name="shiftDown">
|
||||||
|
/// If <see langword="true"/>, the SHIFT key is pressed. Use this instead of polling the current state of the keyboard that may have
|
||||||
|
/// changed since the verb was invoked.
|
||||||
|
/// </param>
|
||||||
|
/// <param name="ctrlDown">
|
||||||
|
/// If <see langword="true"/>, the CTRL key is pressed. Use this instead of polling the current state of the keyboard that may have
|
||||||
|
/// changed since the verb was invoked..
|
||||||
|
/// </param>
|
||||||
|
/// <param name="hotkey">An optional keyboard shortcut to assign to any application activated by the command.</param>
|
||||||
|
/// <param name="logUsage">
|
||||||
|
/// If <see langword="true"/>, indicates that the method might want to keep track of the item being invoked for features like the
|
||||||
|
/// "Recent documents" menu.
|
||||||
|
/// </param>
|
||||||
|
/// <param name="noZoneChecks">
|
||||||
|
/// Do not perform a zone check. This flag allows ShellExecuteEx to bypass zone checking put into place by IAttachmentExecute.
|
||||||
|
/// </param>
|
||||||
|
/// <param name="parameters">Optional parameters.</param>
|
||||||
|
public CMINVOKECOMMANDINFOEX(ResourceId verb, ShowWindowCommand show = ShowWindowCommand.SW_SHOWNORMAL, HWND parent = default,
|
||||||
|
POINT? location = default, bool allowAsync = false, bool shiftDown = false, bool ctrlDown = false, uint hotkey = 0,
|
||||||
|
bool logUsage = false, bool noZoneChecks = false, string? parameters = null)
|
||||||
|
{
|
||||||
|
cbSize = (uint)Marshal.SizeOf(typeof(CMINVOKECOMMANDINFOEX));
|
||||||
|
hwnd = parent;
|
||||||
|
fMask = (parent.IsNull ? CMIC.CMIC_MASK_FLAG_NO_UI : 0) | (hotkey != 0 ? CMIC.CMIC_MASK_HOTKEY : 0);
|
||||||
|
lpVerb = verb;
|
||||||
|
nShow = show;
|
||||||
|
dwHotKey = hotkey;
|
||||||
|
if (allowAsync) fMask |= CMIC.CMIC_MASK_ASYNCOK;
|
||||||
|
if (shiftDown) fMask |= CMIC.CMIC_MASK_SHIFT_DOWN;
|
||||||
|
if (ctrlDown) fMask |= CMIC.CMIC_MASK_CONTROL_DOWN;
|
||||||
|
if (logUsage) fMask |= CMIC.CMIC_MASK_FLAG_LOG_USAGE;
|
||||||
|
if (noZoneChecks) fMask |= CMIC.CMIC_MASK_NOZONECHECKS;
|
||||||
|
if (location.HasValue)
|
||||||
|
{
|
||||||
|
ptInvoke = location.Value;
|
||||||
|
fMask |= CMIC.CMIC_MASK_PTINVOKE;
|
||||||
|
}
|
||||||
|
if (!verb.IsIntResource)
|
||||||
|
{
|
||||||
|
lpVerbW = (string)verb;
|
||||||
|
fMask |= CMIC.CMIC_MASK_UNICODE;
|
||||||
|
}
|
||||||
|
if (parameters != null)
|
||||||
|
{
|
||||||
|
lpParameters = lpParametersW = parameters;
|
||||||
|
fMask |= CMIC.CMIC_MASK_UNICODE;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue