diff --git a/UWPHook/App.config b/UWPHook/App.config
index c4f65a2..843156f 100644
--- a/UWPHook/App.config
+++ b/UWPHook/App.config
@@ -14,7 +14,7 @@
False
-
+
5
@@ -23,7 +23,7 @@
False
-
+
0
@@ -43,6 +43,9 @@
READY TO PLAY,XBOX
+
+ 0
+
@@ -91,8 +94,11 @@
-
- 0
+
+ False
+
+
+
diff --git a/UWPHook/AppManager.cs b/UWPHook/AppManager.cs
index 23afe60..4e2129f 100644
--- a/UWPHook/AppManager.cs
+++ b/UWPHook/AppManager.cs
@@ -187,7 +187,7 @@ public static List GetInstalledApps()
/// Whether this is a known app
public static bool IsKnownApp(string appName, out string readableName)
{
- string appsJson = File.ReadAllText(@"Resources\KnownApps.json");
+ string appsJson = GetEmbeddedResource("KnownApps.json");
var apps = Newtonsoft.Json.JsonConvert.DeserializeObject>(appsJson);
foreach (var kvp in apps)
@@ -203,6 +203,17 @@ public static bool IsKnownApp(string appName, out string readableName)
return false;
}
+ static string GetEmbeddedResource(string resourceName)
+ {
+ var assembly = Assembly.GetExecutingAssembly();
+ resourceName = assembly.GetManifestResourceNames().First(r => r.Contains(resourceName));
+ using (Stream stream = assembly.GetManifestResourceStream(resourceName))
+ using (StreamReader reader = new StreamReader(stream))
+ {
+ return reader.ReadToEnd();
+ }
+ }
+
[DllImport("user32.dll")]
private static extern
bool SetForegroundWindow(IntPtr hWnd);
diff --git a/UWPHook/GamesWindow.xaml.cs b/UWPHook/GamesWindow.xaml.cs
index 1c3c9af..2d8e3e6 100644
--- a/UWPHook/GamesWindow.xaml.cs
+++ b/UWPHook/GamesWindow.xaml.cs
@@ -1,7 +1,6 @@
using Force.Crc32;
using Serilog;
using Serilog.Core;
-using SharpSteam;
using System;
using System.Collections.Generic;
using System.ComponentModel;
@@ -114,6 +113,12 @@ private async Task LauncherAsync(string[] args)
ScriptManager.RunScript("Set-WinUILanguageOverride " + Properties.Settings.Default.TargetLanguage);
}
+ if (Settings.Default.ChangeResolution && !String.IsNullOrEmpty(Settings.Default.TargetResolution))
+ {
+ var targetResolution = ExtractDimensions(Settings.Default.TargetResolution);
+ ScriptManager.RunScript("Set-DisplayResolution -Width " + targetResolution.Width + " - Height " + targetResolution.Height + " -Force");
+ }
+
//The only other parameter Steam will send is the app AUMID
AppManager.LaunchUWPApp(args);
@@ -140,6 +145,19 @@ private async Task LauncherAsync(string[] args)
}
}
+ static (int Width, int Height) ExtractDimensions(string resolution)
+ {
+ var parts = resolution.Split('x');
+ if (parts.Length == 2)
+ {
+ if (int.TryParse(parts[0].Trim(), out int width) && int.TryParse(parts[1].Trim(), out int height))
+ {
+ return (width, height);
+ }
+ }
+ throw new FormatException("Invalid resolution format.");
+ }
+
///
/// Generates a CRC32 hash expected by Steam to link an image with a game in the library
/// See https://blog.yo1.dog/calculate-id-for-non-steam-games-js/ for an example
@@ -385,8 +403,9 @@ private async Task ExportGames()
{
var users = SteamManager.GetUsers(steam_folder);
var selected_apps = Apps.Entries.Where(app => app.Selected);
- var exePath = @"""" + System.Reflection.Assembly.GetExecutingAssembly().Location + @"""";
- var exeDir = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
+ var processModule = Process.GetCurrentProcess().MainModule;
+ var exePath = processModule?.FileName;
+ var exeDir = Path.GetDirectoryName(exePath);
List gridImagesDownloadTasks = new List();
bool downloadGridImages = !String.IsNullOrEmpty(Properties.Settings.Default.SteamGridDbApiKey);
@@ -745,6 +764,9 @@ private void Bwr_DoWork(object sender, DoWorkEventArgs e)
{
try
{
+ //For some reason I need to enforce Set-ExecutionPolicy none
+ ScriptManager.RunScript("Set-ExecutionPolicy RemoteSigned -Scope Process -Force");
+
//Get all installed apps on the system excluding frameworks
List installedApps = AppManager.GetInstalledApps();
diff --git a/UWPHook/ProcessManager.cs b/UWPHook/ProcessManager.cs
deleted file mode 100644
index 4e23f85..0000000
--- a/UWPHook/ProcessManager.cs
+++ /dev/null
@@ -1,92 +0,0 @@
-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 AppManager
- {
- private int id;
-
- public void LaunchUWPApp(string uri)
- {
- var mgr = new ApplicationActivationManager();
- uint processId;
- mgr.ActivateApplication(uri, null, ActivateOptions.None, out processId);
-
- id = (int)processId;
- }
-
- public Boolean IsRunning()
- {
- if (id == 0)
- {
- return false;
- }
-
- try
- {
- Process.GetProcessById(id);
- }
- catch (Exception)
- {
- return false;
- }
-
- return true;
- }
- }
-
- 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
- {
- }
-}
\ No newline at end of file
diff --git a/UWPHook/Properties/Settings.Designer.cs b/UWPHook/Properties/Settings.Designer.cs
index 24c2a03..d465e0d 100644
--- a/UWPHook/Properties/Settings.Designer.cs
+++ b/UWPHook/Properties/Settings.Designer.cs
@@ -12,7 +12,7 @@ namespace UWPHook.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.9.0.0")]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.8.0.0")]
public sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
@@ -155,6 +155,18 @@ public string Tags {
}
}
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("0")]
+ public string SelectedLogLevel {
+ get {
+ return ((string)(this["SelectedLogLevel"]));
+ }
+ set {
+ this["SelectedLogLevel"] = value;
+ }
+ }
+
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute(@"
@@ -237,13 +249,25 @@ public string Tags {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Configuration.DefaultSettingValueAttribute("0")]
- public string SelectedLogLevel {
+ [global::System.Configuration.DefaultSettingValueAttribute("False")]
+ public bool ChangeResolution {
get {
- return ((string)(this["SelectedLogLevel"]));
+ return ((bool)(this["ChangeResolution"]));
}
set {
- this["SelectedLogLevel"] = value;
+ this["ChangeResolution"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("")]
+ public string TargetResolution {
+ get {
+ return ((string)(this["TargetResolution"]));
+ }
+ set {
+ this["TargetResolution"] = value;
}
}
}
diff --git a/UWPHook/Properties/Settings.settings b/UWPHook/Properties/Settings.settings
index 75865b4..90d4705 100644
--- a/UWPHook/Properties/Settings.settings
+++ b/UWPHook/Properties/Settings.settings
@@ -35,6 +35,9 @@
READY TO PLAY,XBOX
+
+ 0
+
<?xml version="1.0" encoding="utf-16"?>
<ArrayOfString xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -78,8 +81,11 @@
<string>TRACE</string>
</ArrayOfString>
-
- 0
+
+ False
+
+
+
\ No newline at end of file
diff --git a/UWPHook/SettingsWindow.xaml b/UWPHook/SettingsWindow.xaml
index c52e02d..46e138e 100644
--- a/UWPHook/SettingsWindow.xaml
+++ b/UWPHook/SettingsWindow.xaml
@@ -12,6 +12,15 @@
TextElement.FontSize="14"
FontFamily="Segoe UI Light"
Title="Settings" Height="750" Width="800" Icon="Resources/hook2.ico">
+
+
+
@@ -52,14 +61,14 @@
-
+
-
+
-
+
diff --git a/UWPHook/SettingsWindow.xaml.cs b/UWPHook/SettingsWindow.xaml.cs
index 4ecd9e7..0ee968f 100644
--- a/UWPHook/SettingsWindow.xaml.cs
+++ b/UWPHook/SettingsWindow.xaml.cs
@@ -1,6 +1,11 @@
using System;
+using System.Diagnostics;
using System.Globalization;
+using System.Management;
+using System.Security.Policy;
using System.Windows;
+using UWPHook.Properties;
+using static System.Net.WebRequestMethods;
namespace UWPHook
{
@@ -13,28 +18,23 @@ public SettingsWindow()
{
InitializeComponent();
- this.Title = "UWPHook version " + System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();
+ Title = "UWPHook version " + System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();
- foreach (var culture in CultureInfo.GetCultures(CultureTypes.AllCultures))
- {
- cultures_comboBox.Items.Add(culture.TextInfo.CultureName);
- }
+ cultures_comboBox.ItemsSource = CultureInfo.GetCultures(CultureTypes.AllCultures).Select(c => c.TextInfo.CultureName);
+ cultures_comboBox.SelectedItem = string.IsNullOrEmpty(Settings.Default.TargetLanguage) ? CultureInfo.CurrentCulture.TextInfo.CultureName : Properties.Settings.Default.TargetLanguage;
- for (int i = 0; i < 10; i++)
- {
- seconds_comboBox.Items.Add(i + " seconds");
- if (i == Properties.Settings.Default.Seconds)
- {
- seconds_comboBox.SelectedIndex = i;
- }
- }
+ seconds_comboBox.ItemsSource = Enumerable.Range(0, 10).Select(i => i + " seconds");
+ seconds_comboBox.SelectedIndex = Properties.Settings.Default.Seconds;
+
+ resolution_comboBox.ItemsSource = GetResolutions();
+ resolution_comboBox.SelectedItem = string.IsNullOrEmpty(Settings.Default.TargetResolution) ? GetCurrentResolution() : Properties.Settings.Default.TargetResolution;
int logLevel_index = 0;
int.TryParse(Properties.Settings.Default.SelectedLogLevel, out logLevel_index);
- cultures_comboBox.SelectedItem = Properties.Settings.Default.TargetLanguage;
language_toggle.IsChecked = Properties.Settings.Default.ChangeLanguage;
streaming_toggle.IsChecked = Properties.Settings.Default.StreamMode;
+ change_resolution_toggle.IsChecked = Properties.Settings.Default.ChangeResolution;
logLevel_comboBox.SelectedIndex = logLevel_index;
steamgriddb_api_key.Text = Properties.Settings.Default.SteamGridDbApiKey;
style_comboBox.SelectedIndex = Properties.Settings.Default.SelectedSteamGridDB_Style;
@@ -44,12 +44,45 @@ public SettingsWindow()
tags_textBox.Text = Properties.Settings.Default.Tags;
}
+#pragma warning disable CA1416 // Validate platform compatibility
+ private IEnumerable GetResolutions()
+ {
+
+ using var searcher = new ManagementObjectSearcher("SELECT * FROM CIM_VideoControllerResolution");
+ foreach (var resolution in searcher.Get())
+ {
+ uint horizontalResolution = (uint)resolution["HorizontalResolution"];
+ uint verticalResolution = (uint)resolution["VerticalResolution"];
+ yield return horizontalResolution + " x " + verticalResolution;
+ }
+
+ }
+
+ private string GetCurrentResolution()
+ {
+ using var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_VideoController");
+ foreach (var mo in searcher.Get())
+ {
+ var currentHorizontalResolution = mo["CurrentHorizontalResolution"];
+ var currentVerticalResolution = mo["CurrentVerticalResolution"];
+ if (currentHorizontalResolution != null && currentVerticalResolution != null)
+ {
+ return $"{currentHorizontalResolution} x {currentVerticalResolution}";
+ }
+ }
+
+ return string.Empty;
+ }
+#pragma warning restore CA1416 // Validate platform compatibility
+
private void saveButton_Click(object sender, RoutedEventArgs e)
{
Properties.Settings.Default.ChangeLanguage = (bool)language_toggle.IsChecked;
Properties.Settings.Default.TargetLanguage = cultures_comboBox.SelectedItem.ToString();
Properties.Settings.Default.Seconds = Int32.Parse(seconds_comboBox.SelectedItem.ToString().Substring(0, 1));
Properties.Settings.Default.StreamMode = (bool)streaming_toggle.IsChecked;
+ Properties.Settings.Default.ChangeResolution = (bool)change_resolution_toggle.IsChecked;
+ Properties.Settings.Default.TargetResolution = resolution_comboBox.SelectedItem.ToString();
Properties.Settings.Default.SelectedLogLevel = logLevel_comboBox.SelectedIndex.ToString();
Properties.Settings.Default.SteamGridDbApiKey = steamgriddb_api_key.Text.Trim('\r', '\n');
Properties.Settings.Default.SelectedSteamGridDB_Style = style_comboBox.SelectedIndex;
@@ -64,27 +97,27 @@ private void saveButton_Click(object sender, RoutedEventArgs e)
private void Chip_Click(object sender, RoutedEventArgs e)
{
- System.Diagnostics.Process.Start("http://twitter.com/brianostorm");
+ OpenUrl("http://twitter.com/brianostorm");
}
private void Chip1_Click(object sender, RoutedEventArgs e)
{
- System.Diagnostics.Process.Start("http://github.com/brianlima");
+ OpenUrl("http://github.com/brianlima");
}
private void Chip2_Click(object sender, RoutedEventArgs e)
{
- System.Diagnostics.Process.Start("https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=9YPV3FHEFRAUQ");
+ OpenUrl("https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=9YPV3FHEFRAUQ");
}
private void update_button_Click(object sender, RoutedEventArgs e)
{
- System.Diagnostics.Process.Start("https://github.com/BrianLima/UWPHook/releases");
+ OpenUrl("https://github.com/BrianLima/UWPHook/releases");
}
private void help_button_Click(object sender, RoutedEventArgs e)
{
- System.Diagnostics.Process.Start("https://reddit.com/r/UWPHook/");
+ OpenUrl("https://reddit.com/r/UWPHook/");
}
private void clearAll_button_Click(object sender, RoutedEventArgs e)
@@ -99,8 +132,18 @@ private void clearAll_button_Click(object sender, RoutedEventArgs e)
private void key_Button_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show(messageBoxText: "You are being redirected to SteamGridDB website!\r\n" +
- "Log-in, or create your account, go to your profile preferences and click 'Generate API Key', then paste the key back on UWPHook.", "Attention!", MessageBoxButton.OK, MessageBoxImage.Information );
- System.Diagnostics.Process.Start("https://www.steamgriddb.com/profile/preferences/api");
+ "Log-in, or create your account, go to your profile preferences and click 'Generate API Key', then paste the key back on UWPHook.", "Attention!", MessageBoxButton.OK, MessageBoxImage.Information);
+ OpenUrl("https://www.steamgriddb.com/profile/preferences/api");
+ }
+
+ private void OpenUrl(string url)
+ {
+ var psi = new ProcessStartInfo
+ {
+ FileName = url,
+ UseShellExecute = true
+ };
+ Process.Start(psi);
}
}
}
\ No newline at end of file
diff --git a/UWPHook/SteamManager.cs b/UWPHook/SteamManager.cs
new file mode 100644
index 0000000..16bdc7f
--- /dev/null
+++ b/UWPHook/SteamManager.cs
@@ -0,0 +1,108 @@
+using Microsoft.Win32;
+using System;
+using System.IO;
+using VDFParser;
+using VDFParser.Models;
+
+namespace UWPHook
+{
+ public static class SteamManager
+ {
+ ///
+ /// Returns Steam's current installed path
+ ///
+ ///
+ public static string GetSteamFolder()
+ {
+ string registryPath = @"SOFTWARE\Valve\Steam";
+
+ // Check 64-bit registry view
+ using (RegistryKey localKey64 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64))
+ using (RegistryKey key64 = localKey64.OpenSubKey(registryPath))
+ {
+ if (key64 != null)
+ {
+ string path64 = key64.GetValue("InstallPath") as string;
+ if (!string.IsNullOrEmpty(path64))
+ {
+ return path64;
+ }
+ }
+ }
+
+ // Check 32-bit registry view
+ using (RegistryKey localKey32 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32))
+ using (RegistryKey key32 = localKey32.OpenSubKey(registryPath))
+ {
+ if (key32 != null)
+ {
+ string path32 = key32.GetValue("InstallPath") as string;
+ if (!string.IsNullOrEmpty(path32))
+ {
+ return path32;
+ }
+ }
+ }
+
+ return null;
+ }
+
+ ///
+ /// Returns all the users on userdata
+ ///
+ /// Steam's current installed path
+ /// ListString of users path
+ public static string[] GetUsers(string steamInstallPath)
+ {
+ return Directory.GetDirectories(steamInstallPath + "\\userdata");
+ }
+
+ ///
+ /// Reads the shortcuts present in the shortcuts.vdf file for a given user path
+ ///
+ /// The path to which search for shortcuts
+ /// An array of VDFEntries
+ public static VDFEntry[] ReadShortcuts(string userPath)
+ {
+ string shortcutFile = userPath + "\\config\\shortcuts.vdf";
+ VDFEntry[] shortcuts = new VDFEntry[0];
+
+ //Some users don't seem to have the config directory at all or the shortcut file, return a empty entry for those
+ if (!Directory.Exists(userPath + "\\config\\") || !File.Exists(shortcutFile))
+ {
+ return shortcuts;
+ }
+
+ shortcuts = VDFParser.VDFParser.Parse(shortcutFile);
+
+ return shortcuts;
+ }
+
+ ///
+ /// Writes the received list of shortcuts to the specified path
+ ///
+ /// The array of shortcuts to write
+ /// The full path to which to write the shortcuts, including filename
+ public static void WriteShortcuts(VDFEntry[] vdf, string vdfPath)
+ {
+ try
+ {
+ File.WriteAllBytes(vdfPath, VDFToBytes(vdf));
+ }
+ catch (Exception e)
+ {
+ throw e;
+ }
+ }
+
+ ///
+ /// Converts a VDFEntry array to a byte array
+ ///
+ /// The array of VDFEntry to convert to byte
+ /// byte[]
+ public static byte[] VDFToBytes(VDFEntry[] vdf_array)
+ {
+ return VDFSerializer.Serialize(vdf_array);
+ }
+ }
+}
\ No newline at end of file
diff --git a/UWPHook/UWPHook.csproj b/UWPHook/UWPHook.csproj
index 14e1ea1..4d5d343 100644
--- a/UWPHook/UWPHook.csproj
+++ b/UWPHook/UWPHook.csproj
@@ -1,203 +1,40 @@
-
-
-
-
- Debug
- AnyCPU
- {AFE09BCF-28A4-48EE-876B-FEF080D04D5F}
- WinExe
- Properties
- UWPHook
- UWPHook
- v4.8.1
- 512
- {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- 4
- true
- false
-
-
-
- publish\
- true
- Disk
- false
- Foreground
- 7
- Days
- false
- false
- true
- 0
- 1.0.0.%2a
- false
- true
-
-
- AnyCPU
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE
- prompt
- 4
-
-
- AnyCPU
- pdbonly
- true
- bin\Release\
- TRACE
- prompt
- 4
-
-
- Resources\hook2.ico
-
-
- UWPHook.App
-
-
-
- ..\..\SharpSteam\SharpSteam\bin\Release\SharpSteam.dll
-
-
- ..\..\..\..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.2\System.dll
-
-
-
-
-
- ..\..\..\..\..\..\Windows\assembly\GAC_MSIL\System.Management.Automation\1.0.0.0__31bf3856ad364e35\System.Management.Automation.dll
- False
-
-
-
-
-
-
-
-
- 4.0
-
-
- ..\..\SharpSteam\SharpSteam\bin\Release\VDFParser.dll
-
-
-
-
-
-
-
- MSBuild:Compile
- Designer
-
-
-
-
- FullScreenLauncher.xaml
-
-
- GamesWindow.xaml
-
-
-
-
- SettingsWindow.xaml
-
-
-
-
-
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- App.xaml
- Code
-
-
-
- Designer
- MSBuild:Compile
-
-
-
-
- Code
-
-
- True
- True
- Resources.resx
-
-
- True
- Settings.settings
- True
-
-
- PublicResXFileCodeGenerator
- Resources.Designer.cs
- Designer
-
-
-
- PublicSettingsSingleFileGenerator
- Settings.Designer.cs
-
-
-
- Always
-
-
-
-
-
-
-
- False
- Microsoft .NET Framework 4.6.1 %28x86 and x64%29
- true
-
-
- False
- .NET Framework 3.5 SP1
- false
-
-
-
-
-
-
-
-
-
-
-
- {F935DC20-1CF0-11D0-ADB9-00C04FD58A0B}
- 1
- 0
- 0
- tlbimp
- False
- True
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ UWPHook
+ UWPHook
+ WinExe
+ net8.0-windows
+ enable
+ enable
+ true
+ false
+ Resources\hook2.ico
+ true
+ win-x64
+ true
+
+
+
+
+ ..\..\SharpSteam\SharpSteam\bin\Release\VDFParser.dll
+
+
+
+
+
+ Always
+
+
+
+
+
+
+
+
+
+
+
1.2.0
@@ -210,6 +47,7 @@
6.0.0
+
13.0.3
@@ -222,13 +60,33 @@
6.0.0
+
+
+ 4.6.0
+
+
+ 5.0.0
+
-
-
-
\ No newline at end of file
+
+
+
+ ..\..\VDFParser\VDFParser\bin\Debug\VDFParser.dll
+
+
+
+
+
+ True
+ True
+ Settings.settings
+
+
+
+
+
+ SettingsSingleFileGenerator
+ Settings.Designer.cs
+
+
+