Created
September 19, 2016 16:07
-
-
Save Alia5/89eead9aedf5d557429d5e75d19e9fcd to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public enum ActivateOptions | |
{ | |
None = 0x00000000, // No flags set | |
DesignMode = 0x00000001, // The application is being activated for design mode, and thus will not be able to | |
// to create an immersive window. Window creation must be done by design tools which | |
// load the necessary components by communicating with a designer-specified service on | |
// the site chain established on the activation manager. The splash screen normally | |
// shown when an application is activated will also not appear. Most activations | |
// will not use this flag. | |
NoErrorUI = 0x00000002, // Do not show an error dialog if the app fails to activate. | |
NoSplashScreen = 0x00000004, // Do not show the splash screen when activating the app. | |
} | |
[ComImport, Guid("2e941141-7f97-4756-ba1d-9decde894a3d"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] | |
interface IApplicationActivationManager | |
{ | |
// Activates the specified immersive application for the "Launch" contract, passing the provided arguments | |
// string into the application. Callers can obtain the process Id of the application instance fulfilling this contract. | |
IntPtr ActivateApplication([In] String appUserModelId, [In] String arguments, [In] ActivateOptions options, [Out] out UInt32 processId); | |
IntPtr ActivateForFile([In] String appUserModelId, [In] IntPtr /*IShellItemArray* */ itemArray, [In] String verb, [Out] out UInt32 processId); | |
IntPtr ActivateForProtocol([In] String appUserModelId, [In] IntPtr /* IShellItemArray* */itemArray, [Out] out UInt32 processId); | |
} | |
[ComImport, Guid("45BA127D-10A8-46EA-8AB7-56EA9078943C")]//Application Activation Manager | |
class ApplicationActivationManager : IApplicationActivationManager | |
{ | |
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)/*, PreserveSig*/] | |
public extern IntPtr ActivateApplication([In] String appUserModelId, [In] String arguments, [In] ActivateOptions options, [Out] out UInt32 processId); | |
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] | |
public extern IntPtr ActivateForFile([In] String appUserModelId, [In] IntPtr /*IShellItemArray* */ itemArray, [In] String verb, [Out] out UInt32 processId); | |
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] | |
public extern IntPtr ActivateForProtocol([In] String appUserModelId, [In] IntPtr /* IShellItemArray* */itemArray, [Out] out UInt32 processId); | |
} | |
static class Program | |
{ | |
/// <summary> | |
/// The main entry point for the application. | |
/// </summary> | |
[STAThread] | |
static void Main() | |
{ | |
ApplicationActivationManager appActiveManager = new ApplicationActivationManager();//Class not registered | |
uint pid; | |
appActiveManager.ActivateApplication("Microsoft.ApexPG_8wekyb3d8bbwe!forzamotorsportapex", null, ActivateOptions.None, out pid); | |
//then check periodically if the PID still exists | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment