Vanara/PInvoke/Shell32/ShObjIdl.IPackageDebugSetti...

412 lines
26 KiB
C#

using System;
using System.Runtime.InteropServices;
namespace Vanara.PInvoke
{
public static partial class Shell32
{
/// <summary>Represents the state of a Windows app package.</summary>
// https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/ne-shobjidl_core-package_execution_state typedef enum
// PACKAGE_EXECUTION_STATE { PES_UNKNOWN, PES_RUNNING, PES_SUSPENDING, PES_SUSPENDED, PES_TERMINATED } ;
[PInvokeData("shobjidl_core.h", MSDNShortId = "NE:shobjidl_core.PACKAGE_EXECUTION_STATE")]
public enum PACKAGE_EXECUTION_STATE
{
/// <summary>The package is in an unknown state.</summary>
PES_UNKNOWN,
/// <summary>The package is running.</summary>
PES_RUNNING,
/// <summary>The package is being suspended.</summary>
PES_SUSPENDING,
/// <summary>The package is suspended.</summary>
PES_SUSPENDED,
/// <summary>The package was terminated.</summary>
PES_TERMINATED,
}
/// <summary>Enables debugger developers to control the life cycle of a Windows Store app, such as suspending or resuming.</summary>
/// <remarks>
/// <para>Any debug options set remain in effect until they are cleared or this interface is released.</para>
/// <para>
/// For debug settings to take effect on Internet Explorer in the new Windows UI, use "DefaultBrowser_NOPUBLISHERID" as the
/// packageFullName parameter for IPackageDebugSettings methods.
/// </para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nn-shobjidl_core-ipackagedebugsettings
[PInvokeData("shobjidl_core.h", MSDNShortId = "NN:shobjidl_core.IPackageDebugSettings")]
[ComImport, Guid("F27C3930-8029-4AD1-94E3-3DBA417810C1"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown), CoClass(typeof(PackageDebugSettings))]
public interface IPackageDebugSettings
{
/// <summary>Enables debug mode for the processes of the specified package.</summary>
/// <param name="packageFullName">The package full name.</param>
/// <param name="debuggerCommandLine">The command line to use to launch processes from this package. This parameter is optional.</param>
/// <param name="environment">Any environment strings to pass to processes. This parameter is optional.</param>
/// <remarks>
/// <para>Enabling debug mode has the following effects:</para>
/// <list type="bullet">
/// <item>
/// <term>Optionally enables debugger attach on activation.</term>
/// </item>
/// <item>
/// <term>Disables activation timeouts.</term>
/// </item>
/// <item>
/// <term>Disables automatic process suspension.</term>
/// </item>
/// <item>
/// <term>Disables automatic process termination.</term>
/// </item>
/// <item>
/// <term>Disables automatic process resumption.</term>
/// </item>
/// </list>
/// <para>To restore normal operation, call the DisableDebugging method.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-ipackagedebugsettings-enabledebugging
// HRESULT EnableDebugging( LPCWSTR packageFullName, LPCWSTR debuggerCommandLine, PZZWSTR environment );
void EnableDebugging([MarshalAs(UnmanagedType.LPWStr)] string packageFullName, [Optional, MarshalAs(UnmanagedType.LPWStr)] string debuggerCommandLine, [In, Optional] IntPtr environment);
/// <summary>Disables debug mode for the processes of the specified package.</summary>
/// <param name="packageFullName">The package full name.</param>
/// <remarks>This method has no effect if the EnableDebugging method was not previously called for this package.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-ipackagedebugsettings-disabledebugging
// HRESULT DisableDebugging( LPCWSTR packageFullName );
void DisableDebugging([MarshalAs(UnmanagedType.LPWStr)] string packageFullName);
/// <summary>Suspends the processes of the package if they are currently running.</summary>
/// <param name="packageFullName">
/// <para>Type: <c>LPCWSTR</c></para>
/// <para>The package full name.</para>
/// </param>
/// <remarks>
/// Each process receives the <c>Suspending</c> event. It can be useful for developers to step through how their apps respond to
/// this event.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/winrt/ipackagedebugsettings-suspend HRESULT Suspend( [in] LPCWSTR
// packageFullName );
void Suspend([MarshalAs(UnmanagedType.LPWStr)] string packageFullName);
/// <summary>Resumes the processes of the package if they are currently suspended.</summary>
/// <param name="packageFullName">The package full name.</param>
/// <remarks>
/// Each process receives the Resuming event, which is useful for stepping through your apps as they respond to this event.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-ipackagedebugsettings-resume HRESULT
// Resume( LPCWSTR packageFullName );
void Resume([MarshalAs(UnmanagedType.LPWStr)] string packageFullName);
/// <summary>Terminates all processes for the specified package.</summary>
/// <param name="packageFullName">The package full name.</param>
/// <remarks>
/// This method does not suspend the processes first. To test suspension followed by termination, call the Suspend method before
/// calling TerminateAllProcesses.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-ipackagedebugsettings-terminateallprocesses
// HRESULT TerminateAllProcesses( LPCWSTR packageFullName );
void TerminateAllProcesses([MarshalAs(UnmanagedType.LPWStr)] string packageFullName);
/// <summary>Sets the session identifier.</summary>
/// <param name="sessionId">The session identifier.</param>
// https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-ipackagedebugsettings-settargetsessionid
// HRESULT SetTargetSessionId( ULONG sessionId );
void SetTargetSessionId(uint sessionId);
/// <summary>Gets the background tasks that are provided by the specified package.</summary>
/// <param name="packageFullName">The package full name to query for background tasks.</param>
/// <param name="taskCount">The count of taskIds and taskNames entries.</param>
/// <param name="taskIds">
/// An array of background task identifiers. You can use these identifiers in the ActivateBackgroundTask method to activate
/// specified tasks.
/// </param>
/// <param name="taskNames">An array of task names that corresponds with background taskIds.</param>
/// <remarks>
/// Both parameters taskIds and taskNames have the same ordering of tasks. If you need to know the user-readable task name
/// associated with taskId[0], refer to taskNames[0].
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-ipackagedebugsettings-enumeratebackgroundtasks
// HRESULT EnumerateBackgroundTasks( LPCWSTR packageFullName, ULONG *taskCount, LPCGUID *taskIds, LPCWSTR **taskNames );
void EnumerateBackgroundTasks([MarshalAs(UnmanagedType.LPWStr)] string packageFullName, out uint taskCount, [Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] out Guid[] taskIds,
[Out, MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.LPWStr, SizeParamIndex = 1)] out string[] taskNames);
/// <summary>Activates the specified background task.</summary>
/// <param name="taskId">The identifier of the background task to activate.</param>
/// <remarks>Use the <c>ActivateBackgroundTask</c> method to test the code that handles your background tasks.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-ipackagedebugsettings-activatebackgroundtask
// HRESULT ActivateBackgroundTask( LPCGUID taskId );
void ActivateBackgroundTask(in Guid taskId);
/// <summary>
/// Suspends and terminates the non-background portion of the apps associated with the specified package and cancels the
/// background tasks associated with the package.
/// </summary>
/// <param name="packageFullName">The package full name.</param>
/// <remarks>
/// Use the <c>StartServicing</c> method to simulate what happens when a package is updated to a newer version. New background
/// task activations are buffered (delayed) until you call the StopServicing method.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-ipackagedebugsettings-startservicing
// HRESULT StartServicing( LPCWSTR packageFullName );
void StartServicing([MarshalAs(UnmanagedType.LPWStr)] string packageFullName);
/// <summary>Completes the previous servicing operation that was started by a call to the StartServicing method.</summary>
/// <param name="packageFullName">The package full name.</param>
// https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-ipackagedebugsettings-stopservicing HRESULT
// StopServicing( LPCWSTR packageFullName );
void StopServicing([MarshalAs(UnmanagedType.LPWStr)] string packageFullName);
/// <summary>Causes background tasks for the specified package to activate in the specified user session.</summary>
/// <param name="packageFullName">The package full name.</param>
/// <param name="sessionId">The identifier of the session which background tasks are redirected to.</param>
// https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-ipackagedebugsettings-startsessionredirection
// HRESULT StartSessionRedirection( LPCWSTR packageFullName, ULONG sessionId );
void StartSessionRedirection([MarshalAs(UnmanagedType.LPWStr)] string packageFullName, uint sessionId);
/// <summary>Stops redirection of background tasks for the specified package.</summary>
/// <param name="packageFullName">The package full name.</param>
// https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-ipackagedebugsettings-stopsessionredirection
// HRESULT StopSessionRedirection( LPCWSTR packageFullName );
void StopSessionRedirection([MarshalAs(UnmanagedType.LPWStr)] string packageFullName);
/// <summary>Gets the state of the package execution.</summary>
/// <param name="packageFullName">Full name of the package.</param>
/// <returns>State of the package execution.</returns>
PACKAGE_EXECUTION_STATE GetPackageExecutionState([MarshalAs(UnmanagedType.LPWStr)] string packageFullName);
/// <summary>Register for package state-change notifications.</summary>
/// <param name="packageFullName">The package full name.</param>
/// <param name="pPackageExecutionStateChangeNotification">
/// Package state-change notifications are delivered by the OnStateChanged function on pPackageExecutionStateChangeNotification.
/// </param>
/// <param name="pdwCookie">
/// A unique registration identifier for the current listener. Use this identifier to unregister for package state-change
/// notifications by using the UnregisterForPackageStateChanges method.
/// </param>
/// <remarks>Notifications are raised when the package enters the running, suspending, and suspended states.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-ipackagedebugsettings-registerforpackagestatechanges
// HRESULT RegisterForPackageStateChanges( LPCWSTR packageFullName, IPackageExecutionStateChangeNotification
// *pPackageExecutionStateChangeNotification, DWORD *pdwCookie );
void RegisterForPackageStateChanges([MarshalAs(UnmanagedType.LPWStr)] string packageFullName, IPackageExecutionStateChangeNotification pPackageExecutionStateChangeNotification, out uint pdwCookie);
/// <summary>Stops receiving package state-change notifications associated with a previous call to RegisterForPackageStateChanges.</summary>
/// <param name="dwCookie">
/// The notification to cancel. This identifier is returned by a previous call to the RegisterForPackageStateChanges method.
/// </param>
/// <remarks>
/// Call the <c>UnregisterForPackageStateChanges</c> to stop receiving package state-change notifications associated with a
/// previous call to the RegisterForPackageStateChanges method.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-ipackagedebugsettings-unregisterforpackagestatechanges
// HRESULT UnregisterForPackageStateChanges( DWORD dwCookie );
void UnregisterForPackageStateChanges(uint dwCookie);
}
/// <summary>Undocumented.</summary>
/// <seealso cref="Vanara.PInvoke.Shell32.IPackageDebugSettings"/>
[PInvokeData("shobjidl_core.h")]
[ComImport, Guid("6E3194BB-AB82-4D22-93F5-FABDA40E7B16"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IPackageDebugSettings2 : IPackageDebugSettings
{
/// <summary>Enables debug mode for the processes of the specified package.</summary>
/// <param name="packageFullName">The package full name.</param>
/// <param name="debuggerCommandLine">The command line to use to launch processes from this package. This parameter is optional.</param>
/// <param name="environment">Any environment strings to pass to processes. This parameter is optional.</param>
/// <remarks>
/// <para>Enabling debug mode has the following effects:</para>
/// <list type="bullet">
/// <item>
/// <term>Optionally enables debugger attach on activation.</term>
/// </item>
/// <item>
/// <term>Disables activation timeouts.</term>
/// </item>
/// <item>
/// <term>Disables automatic process suspension.</term>
/// </item>
/// <item>
/// <term>Disables automatic process termination.</term>
/// </item>
/// <item>
/// <term>Disables automatic process resumption.</term>
/// </item>
/// </list>
/// <para>To restore normal operation, call the DisableDebugging method.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-ipackagedebugsettings-enabledebugging
// HRESULT EnableDebugging( LPCWSTR packageFullName, LPCWSTR debuggerCommandLine, PZZWSTR environment );
new void EnableDebugging([MarshalAs(UnmanagedType.LPWStr)] string packageFullName, [Optional, MarshalAs(UnmanagedType.LPWStr)] string debuggerCommandLine, [In, Optional] IntPtr environment);
/// <summary>Disables debug mode for the processes of the specified package.</summary>
/// <param name="packageFullName">The package full name.</param>
/// <remarks>This method has no effect if the EnableDebugging method was not previously called for this package.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-ipackagedebugsettings-disabledebugging
// HRESULT DisableDebugging( LPCWSTR packageFullName );
new void DisableDebugging([MarshalAs(UnmanagedType.LPWStr)] string packageFullName);
/// <summary>Suspends the processes of the package if they are currently running.</summary>
/// <param name="packageFullName">
/// <para>Type: <c>LPCWSTR</c></para>
/// <para>The package full name.</para>
/// </param>
/// <remarks>
/// Each process receives the <c>Suspending</c> event. It can be useful for developers to step through how their apps respond to
/// this event.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/winrt/ipackagedebugsettings-suspend HRESULT Suspend( [in] LPCWSTR
// packageFullName );
new void Suspend([MarshalAs(UnmanagedType.LPWStr)] string packageFullName);
/// <summary>Resumes the processes of the package if they are currently suspended.</summary>
/// <param name="packageFullName">The package full name.</param>
/// <remarks>
/// Each process receives the Resuming event, which is useful for stepping through your apps as they respond to this event.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-ipackagedebugsettings-resume HRESULT
// Resume( LPCWSTR packageFullName );
new void Resume([MarshalAs(UnmanagedType.LPWStr)] string packageFullName);
/// <summary>Terminates all processes for the specified package.</summary>
/// <param name="packageFullName">The package full name.</param>
/// <remarks>
/// This method does not suspend the processes first. To test suspension followed by termination, call the Suspend method before
/// calling TerminateAllProcesses.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-ipackagedebugsettings-terminateallprocesses
// HRESULT TerminateAllProcesses( LPCWSTR packageFullName );
new void TerminateAllProcesses([MarshalAs(UnmanagedType.LPWStr)] string packageFullName);
/// <summary>Sets the session identifier.</summary>
/// <param name="sessionId">The session identifier.</param>
// https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-ipackagedebugsettings-settargetsessionid
// HRESULT SetTargetSessionId( ULONG sessionId );
new void SetTargetSessionId(uint sessionId);
/// <summary>Gets the background tasks that are provided by the specified package.</summary>
/// <param name="packageFullName">The package full name to query for background tasks.</param>
/// <param name="taskCount">The count of taskIds and taskNames entries.</param>
/// <param name="taskIds">
/// An array of background task identifiers. You can use these identifiers in the ActivateBackgroundTask method to activate
/// specified tasks.
/// </param>
/// <param name="taskNames">An array of task names that corresponds with background taskIds.</param>
/// <remarks>
/// Both parameters taskIds and taskNames have the same ordering of tasks. If you need to know the user-readable task name
/// associated with taskId[0], refer to taskNames[0].
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-ipackagedebugsettings-enumeratebackgroundtasks
// HRESULT EnumerateBackgroundTasks( LPCWSTR packageFullName, ULONG *taskCount, LPCGUID *taskIds, LPCWSTR **taskNames );
new void EnumerateBackgroundTasks([MarshalAs(UnmanagedType.LPWStr)] string packageFullName, out uint taskCount, [Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] out Guid[] taskIds,
[Out, MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.LPWStr, SizeParamIndex = 1)] out string[] taskNames);
/// <summary>Activates the specified background task.</summary>
/// <param name="taskId">The identifier of the background task to activate.</param>
/// <remarks>Use the <c>ActivateBackgroundTask</c> method to test the code that handles your background tasks.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-ipackagedebugsettings-activatebackgroundtask
// HRESULT ActivateBackgroundTask( LPCGUID taskId );
new void ActivateBackgroundTask(in Guid taskId);
/// <summary>
/// Suspends and terminates the non-background portion of the apps associated with the specified package and cancels the
/// background tasks associated with the package.
/// </summary>
/// <param name="packageFullName">The package full name.</param>
/// <remarks>
/// Use the <c>StartServicing</c> method to simulate what happens when a package is updated to a newer version. New background
/// task activations are buffered (delayed) until you call the StopServicing method.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-ipackagedebugsettings-startservicing
// HRESULT StartServicing( LPCWSTR packageFullName );
new void StartServicing([MarshalAs(UnmanagedType.LPWStr)] string packageFullName);
/// <summary>Completes the previous servicing operation that was started by a call to the StartServicing method.</summary>
/// <param name="packageFullName">The package full name.</param>
// https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-ipackagedebugsettings-stopservicing HRESULT
// StopServicing( LPCWSTR packageFullName );
new void StopServicing([MarshalAs(UnmanagedType.LPWStr)] string packageFullName);
/// <summary>Causes background tasks for the specified package to activate in the specified user session.</summary>
/// <param name="packageFullName">The package full name.</param>
/// <param name="sessionId">The identifier of the session which background tasks are redirected to.</param>
// https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-ipackagedebugsettings-startsessionredirection
// HRESULT StartSessionRedirection( LPCWSTR packageFullName, ULONG sessionId );
new void StartSessionRedirection([MarshalAs(UnmanagedType.LPWStr)] string packageFullName, uint sessionId);
/// <summary>Stops redirection of background tasks for the specified package.</summary>
/// <param name="packageFullName">The package full name.</param>
// https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-ipackagedebugsettings-stopsessionredirection
// HRESULT StopSessionRedirection( LPCWSTR packageFullName );
new void StopSessionRedirection([MarshalAs(UnmanagedType.LPWStr)] string packageFullName);
/// <summary>Gets the state of the package execution.</summary>
/// <param name="packageFullName">Full name of the package.</param>
/// <returns>State of the package execution.</returns>
new PACKAGE_EXECUTION_STATE GetPackageExecutionState([MarshalAs(UnmanagedType.LPWStr)] string packageFullName);
/// <summary>Register for package state-change notifications.</summary>
/// <param name="packageFullName">The package full name.</param>
/// <param name="pPackageExecutionStateChangeNotification">
/// Package state-change notifications are delivered by the OnStateChanged function on pPackageExecutionStateChangeNotification.
/// </param>
/// <param name="pdwCookie">
/// A unique registration identifier for the current listener. Use this identifier to unregister for package state-change
/// notifications by using the UnregisterForPackageStateChanges method.
/// </param>
/// <remarks>Notifications are raised when the package enters the running, suspending, and suspended states.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-ipackagedebugsettings-registerforpackagestatechanges
// HRESULT RegisterForPackageStateChanges( LPCWSTR packageFullName, IPackageExecutionStateChangeNotification
// *pPackageExecutionStateChangeNotification, DWORD *pdwCookie );
new void RegisterForPackageStateChanges([MarshalAs(UnmanagedType.LPWStr)] string packageFullName, IPackageExecutionStateChangeNotification pPackageExecutionStateChangeNotification, out uint pdwCookie);
/// <summary>Stops receiving package state-change notifications associated with a previous call to RegisterForPackageStateChanges.</summary>
/// <param name="dwCookie">
/// The notification to cancel. This identifier is returned by a previous call to the RegisterForPackageStateChanges method.
/// </param>
/// <remarks>
/// Call the <c>UnregisterForPackageStateChanges</c> to stop receiving package state-change notifications associated with a
/// previous call to the RegisterForPackageStateChanges method.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-ipackagedebugsettings-unregisterforpackagestatechanges
// HRESULT UnregisterForPackageStateChanges( DWORD dwCookie );
new void UnregisterForPackageStateChanges(uint dwCookie);
/// <summary>Enumerates the apps.</summary>
/// <param name="packageFullName">The package full name to query for apps.</param>
/// <param name="appCount">The count of <paramref name="appUserModelIds"/> and <paramref name="appDisplayNames"/> entries.</param>
/// <param name="appUserModelIds">The application user model ids.</param>
/// <param name="appDisplayNames">The application display names.</param>
void EnumerateApps([MarshalAs(UnmanagedType.LPWStr)] string packageFullName, out uint appCount,
[Out, MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.LPWStr, SizeParamIndex = 1)] out string[] appUserModelIds,
[Out, MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.LPWStr, SizeParamIndex = 1)] out string[] appDisplayNames);
}
/// <summary>Enables receiving package state-change notifications during Windows Store app debugging.</summary>
/// <remarks>
/// <para>
/// Implement the <c>IPackageExecutionStateChangeNotification</c> interface when you need to receive package state-change
/// notifications during Windows Store app debugging.
/// </para>
/// <para>Call the <see cref="IPackageDebugSettings.RegisterForPackageStateChanges"/> method to register for package state-change notifications.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nn-shobjidl_core-ipackageexecutionstatechangenotification
[PInvokeData("shobjidl_core.h", MSDNShortId = "NN:shobjidl_core.IPackageExecutionStateChangeNotification")]
[ComImport, Guid("1BB12A62-2AD8-432B-8CCF-0C2C52AFCD5B"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IPackageExecutionStateChangeNotification
{
/// <summary>Called when package state changes during Windows Store app debugging.</summary>
/// <param name="pszPackageFullName">The package full name.</param>
/// <param name="pesNewState">The new state that the package changed to.</param>
/// <returns>Return <c>S_OK</c> when you implement the <c>OnStateChanged</c> method.</returns>
// https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-ipackageexecutionstatechangenotification-onstatechanged
// HRESULT OnStateChanged( LPCWSTR pszPackageFullName, PACKAGE_EXECUTION_STATE pesNewState );
[PreserveSig]
HRESULT OnStateChanged([MarshalAs(UnmanagedType.LPWStr)] string pszPackageFullName, PACKAGE_EXECUTION_STATE pesNewState);
}
/// <summary>CoClass for IPackageDebugSettings</summary>
[PInvokeData("shobjidl.h")]
[ComImport, Guid("B1AEC16F-2383-4852-B0E9-8F0B1DC66B4D"), ClassInterface(ClassInterfaceType.None)]
public class PackageDebugSettings { }
}
}