diff --git a/UWPHook/MainWindow.xaml b/UWPHook/MainWindow.xaml index 6679be8..39f8163 100644 --- a/UWPHook/MainWindow.xaml +++ b/UWPHook/MainWindow.xaml @@ -5,7 +5,7 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:UWPHook" mc:Ignorable="d" - Title="UWPHook" Height="600" Width="800" Loaded="Window_Loaded" Icon="1_cJz_icon.ico"> + Title="UWPHook" Height="600" Width="800" Loaded="Window_Loaded" Icon="hook_icon.ico"> diff --git a/UWPHook/ProcessManager.cs b/UWPHook/ProcessManager.cs index fa12dd3..a0403fb 100644 --- a/UWPHook/ProcessManager.cs +++ b/UWPHook/ProcessManager.cs @@ -1,12 +1,85 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.Linq; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; namespace UWPHook { - class ProccessManager + 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] [MarshalAs(UnmanagedType.Interface, IidParameterIndex = 2)] /*IShellItemArray* */ 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] [MarshalAs(UnmanagedType.Interface, IidParameterIndex = 2)] /*IShellItemArray* */ 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); + } + + [ComImport] + [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] + [Guid("43826d1e-e718-42ee-bc55-a1e261c37bfe")] + interface IShellItem + { + } + + [ComImport] + [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] + [Guid("b63ea76d-1f85-456f-a19c-48159efa858b")] + interface IShellItemArray + { + } + + class ProcessManager + { + int StartProccess(string uri) + { + var mgr = new ApplicationActivationManager(); + uint processId; + var name = "Microsoft.WindowsSoundRecorder_8wekyb3d8bbwe!App"; + mgr.ActivateApplication(name, null, ActivateOptions.None, out processId); + + return ((int)processId); + } + + Boolean ProcessIsRunning(int id) + { + try + { + Process. + } + catch (Exception) + { + + throw; + } + } } } diff --git a/UWPHook/UWPHook.csproj b/UWPHook/UWPHook.csproj index 5178d95..3638251 100644 --- a/UWPHook/UWPHook.csproj +++ b/UWPHook/UWPHook.csproj @@ -116,7 +116,7 @@ Designer - PreserveNewest + Always diff --git a/UWPHook/games.json b/UWPHook/games.json index 8431a64..bae0e94 100644 --- a/UWPHook/games.json +++ b/UWPHook/games.json @@ -1 +1 @@ -[{"game_alias":"Halo 5","game_path":"Microsoft.Halo5Forge_1.114.4592.2_x64__8wekyb3d8bbwe!Ausar"},{"game_alias":"Forza Apex","game_path":"Microsoft.ApexPG_8wekyb3d8bbwe!forzamotorsportapex"},{"game_alias":"Forza Horizon 3", "game_path":"Microsoft.OpusPG_8wekyb3d8bbwe!App"},{"game_alias":"Killer Instinct","game_path":"Microsoft.KillerInstinct-Win10_8wekyb3d8bbwe!KillerInstinct.App"},{"game_alias":"Minecraft","game_path":"Microsoft.MinecraftUWP_8wekyb3d8bbwe!App"},{"game_alias":"Asphalt 8","game_path":"GAMELOFTSA.Asphalt8Airborne_0pp20fcewvvtj!App"},{"game_alias": "Hitman GO", "game_path":"39C668CD.HitmanGO_r7bfsmp40f67j!App"}] \ No newline at end of file +[{"game_alias":"Halo 5","game_path":"Microsoft.Halo5Forge_1.114.4592.2_x64__8wekyb3d8bbwe!Ausar"},{"game_alias":"Forza Apex","game_path":"Microsoft.ApexPG_8wekyb3d8bbwe!forzamotorsportapex"},{"game_alias":"Forza Horizon 3", "game_path":"Microsoft.OpusPG_1.0.10.2_x64__8wekyb3d8bbwe!OpusReleaseFinal"},{"game_alias":"Killer Instinct","game_path":"Microsoft.KillerInstinct-Win10_8wekyb3d8bbwe!KillerInstinct.App"},{"game_alias":"Minecraft","game_path":"Microsoft.MinecraftUWP_8wekyb3d8bbwe!App"},{"game_alias":"Asphalt 8","game_path":"GAMELOFTSA.Asphalt8Airborne_0pp20fcewvvtj!App"},{"game_alias": "Hitman GO", "game_path":"39C668CD.HitmanGO_r7bfsmp40f67j!App"}] \ No newline at end of file