From 0fa8d506f19e9705aee146b55ef105f697882e89 Mon Sep 17 00:00:00 2001 From: Artem Yurchenko Date: Mon, 7 Dec 2020 14:30:52 +0100 Subject: [PATCH 1/5] Project was moved to VS --- .../App.config => App.config | 0 .../WMR-USB-Controller/App.xaml => App.xaml | 0 App.xaml.cs | 17 +++ MainWindow.xaml | 12 +++ MainWindow.xaml.cs | 28 +++++ Properties/AssemblyInfo.cs | 55 ++++++++++ Properties/Resources.Designer.cs | 70 +++++++++++++ .../Properties => Properties}/Resources.resx | 0 Properties/Settings.Designer.cs | 29 ++++++ Properties/Settings.settings | 7 ++ WMR USB Controller Main Icon.png | Bin 0 -> 24262 bytes WMR USB Controller.csproj | 98 ++++++++++++++++++ WMR USB Controller.sln | 25 +++++ .../.idea/codeStyles/codeStyleConfig.xml | 5 - .../.idea/encodings.xml | 4 - .../.idea/indexLayout.xml | 8 -- .../.idea/projectSettingsUpdater.xml | 6 -- .../.idea.WMR-USB-Controller/.idea/vcs.xml | 6 -- WMR-USB-Controller/WMR-USB-Controller.sln | 16 --- .../WMR-USB-Controller/App.xaml.cs | 9 -- .../WMR-USB-Controller/Main.ico | Bin 258062 -> 0 bytes .../WMR-USB-Controller/MainWindow.xaml | 19 ---- .../WMR-USB-Controller/MainWindow.xaml.cs | 85 --------------- .../Properties/AssemblyInfo.cs | 55 ---------- .../Properties/Resources.Designer.cs | 69 ------------ .../WMR-USB-Controller.csproj | 93 ----------------- .../YUART/Autostart/AutostartManager.cs | 66 ------------ .../YUART/Tray Icon/TrayIconManager.cs | 93 ----------------- .../YUART/USB/USBDevicesManager.cs | 87 ---------------- .../WMR-USB-Controller/packages.config | 5 - 30 files changed, 341 insertions(+), 626 deletions(-) rename WMR-USB-Controller/WMR-USB-Controller/App.config => App.config (100%) rename WMR-USB-Controller/WMR-USB-Controller/App.xaml => App.xaml (100%) create mode 100644 App.xaml.cs create mode 100644 MainWindow.xaml create mode 100644 MainWindow.xaml.cs create mode 100644 Properties/AssemblyInfo.cs create mode 100644 Properties/Resources.Designer.cs rename {WMR-USB-Controller/WMR-USB-Controller/Properties => Properties}/Resources.resx (100%) create mode 100644 Properties/Settings.Designer.cs create mode 100644 Properties/Settings.settings create mode 100644 WMR USB Controller Main Icon.png create mode 100644 WMR USB Controller.csproj create mode 100644 WMR USB Controller.sln delete mode 100644 WMR-USB-Controller/.idea/.idea.WMR-USB-Controller/.idea/codeStyles/codeStyleConfig.xml delete mode 100644 WMR-USB-Controller/.idea/.idea.WMR-USB-Controller/.idea/encodings.xml delete mode 100644 WMR-USB-Controller/.idea/.idea.WMR-USB-Controller/.idea/indexLayout.xml delete mode 100644 WMR-USB-Controller/.idea/.idea.WMR-USB-Controller/.idea/projectSettingsUpdater.xml delete mode 100644 WMR-USB-Controller/.idea/.idea.WMR-USB-Controller/.idea/vcs.xml delete mode 100644 WMR-USB-Controller/WMR-USB-Controller.sln delete mode 100644 WMR-USB-Controller/WMR-USB-Controller/App.xaml.cs delete mode 100644 WMR-USB-Controller/WMR-USB-Controller/Main.ico delete mode 100644 WMR-USB-Controller/WMR-USB-Controller/MainWindow.xaml delete mode 100644 WMR-USB-Controller/WMR-USB-Controller/MainWindow.xaml.cs delete mode 100644 WMR-USB-Controller/WMR-USB-Controller/Properties/AssemblyInfo.cs delete mode 100644 WMR-USB-Controller/WMR-USB-Controller/Properties/Resources.Designer.cs delete mode 100644 WMR-USB-Controller/WMR-USB-Controller/WMR-USB-Controller.csproj delete mode 100644 WMR-USB-Controller/WMR-USB-Controller/YUART/Autostart/AutostartManager.cs delete mode 100644 WMR-USB-Controller/WMR-USB-Controller/YUART/Tray Icon/TrayIconManager.cs delete mode 100644 WMR-USB-Controller/WMR-USB-Controller/YUART/USB/USBDevicesManager.cs delete mode 100644 WMR-USB-Controller/WMR-USB-Controller/packages.config diff --git a/WMR-USB-Controller/WMR-USB-Controller/App.config b/App.config similarity index 100% rename from WMR-USB-Controller/WMR-USB-Controller/App.config rename to App.config diff --git a/WMR-USB-Controller/WMR-USB-Controller/App.xaml b/App.xaml similarity index 100% rename from WMR-USB-Controller/WMR-USB-Controller/App.xaml rename to App.xaml diff --git a/App.xaml.cs b/App.xaml.cs new file mode 100644 index 0000000..5267e39 --- /dev/null +++ b/App.xaml.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Configuration; +using System.Data; +using System.Linq; +using System.Threading.Tasks; +using System.Windows; + +namespace WMR_USB_Controller +{ + /// + /// Логика взаимодействия для App.xaml + /// + public partial class App : Application + { + } +} diff --git a/MainWindow.xaml b/MainWindow.xaml new file mode 100644 index 0000000..e5cd966 --- /dev/null +++ b/MainWindow.xaml @@ -0,0 +1,12 @@ + + + + + diff --git a/MainWindow.xaml.cs b/MainWindow.xaml.cs new file mode 100644 index 0000000..f9ac11b --- /dev/null +++ b/MainWindow.xaml.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace WMR_USB_Controller +{ + /// + /// Логика взаимодействия для MainWindow.xaml + /// + public partial class MainWindow : Window + { + public MainWindow() + { + InitializeComponent(); + } + } +} diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..2794ad5 --- /dev/null +++ b/Properties/AssemblyInfo.cs @@ -0,0 +1,55 @@ +using System.Reflection; +using System.Resources; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Windows; + +// Общие сведения об этой сборке предоставляются следующим набором +// набор атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("WMR USB Controller")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("WMR USB Controller")] +[assembly: AssemblyCopyright("Copyright © 2020")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// из модели COM, установите атрибут ComVisible для этого типа в значение true. +[assembly: ComVisible(false)] + +//Чтобы начать создание локализуемых приложений, задайте +//CultureYouAreCodingWith в файле .csproj +//в . Например, при использовании английского (США) +//в своих исходных файлах установите в en-US. Затем отмените преобразование в комментарий +//атрибута NeutralResourceLanguage ниже. Обновите "en-US" в +//строка внизу для обеспечения соответствия настройки UICulture в файле проекта. + +//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] + + +[assembly: ThemeInfo( + ResourceDictionaryLocation.None, //где расположены словари ресурсов по конкретным тематикам + //(используется, если ресурс не найден на странице, + // или в словарях ресурсов приложения) + ResourceDictionaryLocation.SourceAssembly //где расположен словарь универсальных ресурсов + //(используется, если ресурс не найден на странице, + // в приложении или в каких-либо словарях ресурсов для конкретной темы) +)] + + +// Сведения о версии для сборки включают четыре следующих значения: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Номер редакции +// +// Можно задать все значения или принять номера сборки и редакции по умолчанию +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Properties/Resources.Designer.cs b/Properties/Resources.Designer.cs new file mode 100644 index 0000000..56ebab5 --- /dev/null +++ b/Properties/Resources.Designer.cs @@ -0,0 +1,70 @@ +//------------------------------------------------------------------------------ +// +// Этот код был создан программным средством. +// Версия среды выполнения: 4.0.30319.42000 +// +// Изменения в этом файле могут привести к неправильному поведению и будут утрачены, если +// код создан повторно. +// +//------------------------------------------------------------------------------ + + +namespace WMR_USB_Controller.Properties +{ + /// + /// Класс ресурсов со строгим типом для поиска локализованных строк и пр. + /// + // Этот класс был автоматически создан при помощи StronglyTypedResourceBuilder + // класс с помощью таких средств, как ResGen или Visual Studio. + // Для добавления или удаления члена измените файл .ResX, а затем перезапустите ResGen + // с параметром /str или заново постройте свой VS-проект. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// Возврат кэшированного экземпляра ResourceManager, используемого этим классом. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WMR_USB_Controller.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Переопределяет свойство CurrentUICulture текущего потока для всех + /// подстановки ресурсов с помощью этого класса ресурсов со строгим типом. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + } +} diff --git a/WMR-USB-Controller/WMR-USB-Controller/Properties/Resources.resx b/Properties/Resources.resx similarity index 100% rename from WMR-USB-Controller/WMR-USB-Controller/Properties/Resources.resx rename to Properties/Resources.resx diff --git a/Properties/Settings.Designer.cs b/Properties/Settings.Designer.cs new file mode 100644 index 0000000..7f237be --- /dev/null +++ b/Properties/Settings.Designer.cs @@ -0,0 +1,29 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + + +namespace WMR_USB_Controller.Properties +{ + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/Properties/Settings.settings b/Properties/Settings.settings new file mode 100644 index 0000000..033d7a5 --- /dev/null +++ b/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/WMR USB Controller Main Icon.png b/WMR USB Controller Main Icon.png new file mode 100644 index 0000000000000000000000000000000000000000..8aa8793f04ca170d80d7e59e52ff5cc6a72bbe70 GIT binary patch literal 24262 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 literal 0 HcmV?d00001 diff --git a/WMR USB Controller.csproj b/WMR USB Controller.csproj new file mode 100644 index 0000000..0d370a3 --- /dev/null +++ b/WMR USB Controller.csproj @@ -0,0 +1,98 @@ + + + + + Debug + AnyCPU + {39E03BA3-7D0D-43A5-8CA0-FAB9E213BF66} + WinExe + WMR_USB_Controller + WMR USB Controller + v4.8 + 512 + {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + 4 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + 4.0 + + + + + + + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + + + App.xaml + Code + + + MainWindow.xaml + Code + + + + + Code + + + True + True + Resources.resx + + + True + Settings.settings + True + + + ResXFileCodeGenerator + Resources.Designer.cs + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + + + + + \ No newline at end of file diff --git a/WMR USB Controller.sln b/WMR USB Controller.sln new file mode 100644 index 0000000..032f6d3 --- /dev/null +++ b/WMR USB Controller.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.30717.126 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WMR USB Controller", "WMR USB Controller.csproj", "{39E03BA3-7D0D-43A5-8CA0-FAB9E213BF66}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {39E03BA3-7D0D-43A5-8CA0-FAB9E213BF66}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {39E03BA3-7D0D-43A5-8CA0-FAB9E213BF66}.Debug|Any CPU.Build.0 = Debug|Any CPU + {39E03BA3-7D0D-43A5-8CA0-FAB9E213BF66}.Release|Any CPU.ActiveCfg = Release|Any CPU + {39E03BA3-7D0D-43A5-8CA0-FAB9E213BF66}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {F5BBEFB4-CE7C-445F-8A78-3A46CBFEA52D} + EndGlobalSection +EndGlobal diff --git a/WMR-USB-Controller/.idea/.idea.WMR-USB-Controller/.idea/codeStyles/codeStyleConfig.xml b/WMR-USB-Controller/.idea/.idea.WMR-USB-Controller/.idea/codeStyles/codeStyleConfig.xml deleted file mode 100644 index 7ad1bf1..0000000 --- a/WMR-USB-Controller/.idea/.idea.WMR-USB-Controller/.idea/codeStyles/codeStyleConfig.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - \ No newline at end of file diff --git a/WMR-USB-Controller/.idea/.idea.WMR-USB-Controller/.idea/encodings.xml b/WMR-USB-Controller/.idea/.idea.WMR-USB-Controller/.idea/encodings.xml deleted file mode 100644 index df87cf9..0000000 --- a/WMR-USB-Controller/.idea/.idea.WMR-USB-Controller/.idea/encodings.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/WMR-USB-Controller/.idea/.idea.WMR-USB-Controller/.idea/indexLayout.xml b/WMR-USB-Controller/.idea/.idea.WMR-USB-Controller/.idea/indexLayout.xml deleted file mode 100644 index 27ba142..0000000 --- a/WMR-USB-Controller/.idea/.idea.WMR-USB-Controller/.idea/indexLayout.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/WMR-USB-Controller/.idea/.idea.WMR-USB-Controller/.idea/projectSettingsUpdater.xml b/WMR-USB-Controller/.idea/.idea.WMR-USB-Controller/.idea/projectSettingsUpdater.xml deleted file mode 100644 index 4bb9f4d..0000000 --- a/WMR-USB-Controller/.idea/.idea.WMR-USB-Controller/.idea/projectSettingsUpdater.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - \ No newline at end of file diff --git a/WMR-USB-Controller/.idea/.idea.WMR-USB-Controller/.idea/vcs.xml b/WMR-USB-Controller/.idea/.idea.WMR-USB-Controller/.idea/vcs.xml deleted file mode 100644 index 6c0b863..0000000 --- a/WMR-USB-Controller/.idea/.idea.WMR-USB-Controller/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/WMR-USB-Controller/WMR-USB-Controller.sln b/WMR-USB-Controller/WMR-USB-Controller.sln deleted file mode 100644 index 7a31e93..0000000 --- a/WMR-USB-Controller/WMR-USB-Controller.sln +++ /dev/null @@ -1,16 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WMR-USB-Controller", "WMR-USB-Controller\WMR-USB-Controller.csproj", "{F1129B7A-04E8-452A-ADA2-FF85C65D55E5}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {F1129B7A-04E8-452A-ADA2-FF85C65D55E5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F1129B7A-04E8-452A-ADA2-FF85C65D55E5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F1129B7A-04E8-452A-ADA2-FF85C65D55E5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F1129B7A-04E8-452A-ADA2-FF85C65D55E5}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal diff --git a/WMR-USB-Controller/WMR-USB-Controller/App.xaml.cs b/WMR-USB-Controller/WMR-USB-Controller/App.xaml.cs deleted file mode 100644 index 243429a..0000000 --- a/WMR-USB-Controller/WMR-USB-Controller/App.xaml.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace WMR_USB_Controller -{ - /// - /// Interaction logic for App.xaml - /// - public partial class App - { - } -} \ No newline at end of file diff --git a/WMR-USB-Controller/WMR-USB-Controller/Main.ico b/WMR-USB-Controller/WMR-USB-Controller/Main.ico deleted file mode 100644 index 191cdefd444ba7c8e595d09d47e239c8f2ff17d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 258062 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 diff --git a/WMR-USB-Controller/WMR-USB-Controller/MainWindow.xaml b/WMR-USB-Controller/WMR-USB-Controller/MainWindow.xaml deleted file mode 100644 index aa83127..0000000 --- a/WMR-USB-Controller/WMR-USB-Controller/MainWindow.xaml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - diff --git a/WMR-USB-Controller/WMR-USB-Controller/MainWindow.xaml.cs b/WMR-USB-Controller/WMR-USB-Controller/MainWindow.xaml.cs deleted file mode 100644 index be5fac7..0000000 --- a/WMR-USB-Controller/WMR-USB-Controller/MainWindow.xaml.cs +++ /dev/null @@ -1,85 +0,0 @@ -using System; -using System.Windows; -using WMR_USB_Controller.YUART.Autostart; -using WMR_USB_Controller.YUART.Tray_Icon; -using WMR_USB_Controller.YUART.USB; - -namespace WMR_USB_Controller -{ - /// - /// Interaction logic for MainWindow.xaml - /// - public partial class MainWindow - { - private readonly UsbDevicesManager _usbDevicesManager = new UsbDevicesManager(); - - private AutostartManager _autostartManager; - private TrayIconManager _trayIconManager; - - public MainWindow() - { - InitializeComponent(); - - SetupTrayIconManager(); - SetupAutostartManager(); - - _usbDevicesManager.Initialize(); - - DisableWmrDeviceOnStartup(); - } - - private void SetupTrayIconManager() - { - _trayIconManager = new TrayIconManager(this); - _trayIconManager.Initialize(); - } - - private void SetupAutostartManager() - { - _autostartManager = new AutostartManager(AutostartCheckbox); - _autostartManager.Initialize(); - } - - private void DisableWmrDeviceOnStartup() - { - ChangeWmrDeviceState(false); - } - - protected override void OnStateChanged(EventArgs e) - { - if (WindowState == WindowState.Minimized) - { - Hide(); - - _trayIconManager.ShowIcon(); - } - - base.OnStateChanged(e); - } - - private void DisableWmrDeviceAction(object sender, RoutedEventArgs e) - { - ChangeWmrDeviceState(false); - } - - private void EnableWmrDeviceAction(object sender, RoutedEventArgs e) - { - ChangeWmrDeviceState(true); - } - - /// - /// Switch WMR device status (active/disabled). - /// - /// New active status of WMR device. - public void ChangeWmrDeviceState(bool newState) - { - _usbDevicesManager.ActivateWmrDevice(newState); - WmrStatusToggle.IsChecked = !newState; - } - - private void SwitchAutostartStatus(object sender, RoutedEventArgs e) - { - _autostartManager.SetToAutostart(); - } - } -} \ No newline at end of file diff --git a/WMR-USB-Controller/WMR-USB-Controller/Properties/AssemblyInfo.cs b/WMR-USB-Controller/WMR-USB-Controller/Properties/AssemblyInfo.cs deleted file mode 100644 index 9a57305..0000000 --- a/WMR-USB-Controller/WMR-USB-Controller/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,55 +0,0 @@ -using System.Reflection; -using System.Resources; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; -using System.Windows; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("WMR_USB_Controller")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("WMR_USB_Controller")] -[assembly: AssemblyCopyright("Copyright © 2020")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -//In order to begin building localizable applications, set -//CultureYouAreCodingWith in your .csproj file -//inside a . For example, if you are using US english -//in your source files, set the to en-US. Then uncomment -//the NeutralResourceLanguage attribute below. Update the "en-US" in -//the line below to match the UICulture setting in the project file. - -//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] - - -[assembly: ThemeInfo( - ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located - //(used if a resource is not found in the page, - // or application resource dictionaries) - ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located - //(used if a resource is not found in the page, - // app, or any theme specific resource dictionaries) -)] - - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] \ No newline at end of file diff --git a/WMR-USB-Controller/WMR-USB-Controller/Properties/Resources.Designer.cs b/WMR-USB-Controller/WMR-USB-Controller/Properties/Resources.Designer.cs deleted file mode 100644 index d9d53d2..0000000 --- a/WMR-USB-Controller/WMR-USB-Controller/Properties/Resources.Designer.cs +++ /dev/null @@ -1,69 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace WMR_USB_Controller.Properties -{ - /// - /// A strongly-typed resource class, for looking up localized strings, etc. - /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", - "4.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources - { - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", - "CA1811:AvoidUncalledPrivateCode")] - internal Resources() - { - } - - /// - /// Returns the cached ResourceManager instance used by this class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState - .Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager - { - get - { - if ((resourceMan == null)) - { - global::System.Resources.ResourceManager temp = - new global::System.Resources.ResourceManager("WMR_USB_Controller.Properties.Resources", - typeof(Resources).Assembly); - resourceMan = temp; - } - - return resourceMan; - } - } - - /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState - .Advanced)] - internal static global::System.Globalization.CultureInfo Culture - { - get { return resourceCulture; } - set { resourceCulture = value; } - } - } -} \ No newline at end of file diff --git a/WMR-USB-Controller/WMR-USB-Controller/WMR-USB-Controller.csproj b/WMR-USB-Controller/WMR-USB-Controller/WMR-USB-Controller.csproj deleted file mode 100644 index 6ef131a..0000000 --- a/WMR-USB-Controller/WMR-USB-Controller/WMR-USB-Controller.csproj +++ /dev/null @@ -1,93 +0,0 @@ - - - - - Debug - AnyCPU - {F1129B7A-04E8-452A-ADA2-FF85C65D55E5} - WinExe - WMR_USB_Controller - WMR_USB_Controller - v4.8 - 512 - {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - 4 - true - latest - - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - - - - - 4.0 - - - - - - - - MSBuild:Compile - Designer - - - - - - MSBuild:Compile - Designer - - - App.xaml - Code - - - MainWindow.xaml - Code - - - - - Code - - - True - True - Resources.resx - - - ResXFileCodeGenerator - Resources.Designer.cs - - - - - - - - - - - \ No newline at end of file diff --git a/WMR-USB-Controller/WMR-USB-Controller/YUART/Autostart/AutostartManager.cs b/WMR-USB-Controller/WMR-USB-Controller/YUART/Autostart/AutostartManager.cs deleted file mode 100644 index f11c154..0000000 --- a/WMR-USB-Controller/WMR-USB-Controller/YUART/Autostart/AutostartManager.cs +++ /dev/null @@ -1,66 +0,0 @@ -using System.Windows.Controls; -using Microsoft.Win32; -using Application = System.Windows.Application; - -namespace WMR_USB_Controller.YUART.Autostart -{ - /// - /// Class, that controls app's autostart. - /// - public sealed class AutostartManager - { - private const string PathToAutostartRegKey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"; - - private readonly RegistryKey _autostartRegKey = Registry.CurrentUser.OpenSubKey(PathToAutostartRegKey, true); - private readonly string _appExecutionPath = System.Reflection.Assembly.GetExecutingAssembly().Location; - private readonly CheckBox _autostartCheckbox; - - private string _appName; - - public AutostartManager(CheckBox autostartCheckbox) - { - _autostartCheckbox = autostartCheckbox; - } - - /// - /// Initialize manager data. - /// - public void Initialize() - { - SetApplicationName(); - - SetAutostartCheckboxValue(); - } - - private void SetApplicationName() - { - _appName = Application.Current.MainWindow?.Title; - } - - private void SetAutostartCheckboxValue() - { - if (_autostartCheckbox.IsChecked == null) return; - - var startupAutostartValue = _autostartRegKey.GetValue(_appName); - - _autostartCheckbox.IsChecked = startupAutostartValue != null; - } - - /// - /// Sets/removes app from autostart (depends from the value of autostart checkbox). - /// - public void SetToAutostart() - { - if (_autostartCheckbox.IsChecked == null || _autostartRegKey == null) return; - - if (_autostartCheckbox.IsChecked.Value) - { - _autostartRegKey.SetValue(_appName, _appExecutionPath); - } - else - { - _autostartRegKey.DeleteValue(_appName, false); - } - } - } -} \ No newline at end of file diff --git a/WMR-USB-Controller/WMR-USB-Controller/YUART/Tray Icon/TrayIconManager.cs b/WMR-USB-Controller/WMR-USB-Controller/YUART/Tray Icon/TrayIconManager.cs deleted file mode 100644 index 7d167a9..0000000 --- a/WMR-USB-Controller/WMR-USB-Controller/YUART/Tray Icon/TrayIconManager.cs +++ /dev/null @@ -1,93 +0,0 @@ -using System; -using System.Windows; -using System.Windows.Forms; - -namespace WMR_USB_Controller.YUART.Tray_Icon -{ - /// - /// Class, that manages behaviour of the application in tray. - /// - public sealed class TrayIconManager - { - private const string PathToTrayIcon = "Main.ico"; - private const string ToolTipText = "WMR USB Controller"; - private const string DisableWmrMenuItemText = "Disable WMR Device"; - private const string EnableWmrMenuItemText = "Enable WMR Device"; - - private readonly NotifyIcon _trayIcon = new NotifyIcon - { - Icon = new System.Drawing.Icon(PathToTrayIcon), - Visible = false, - Text = ToolTipText - }; - - private readonly MainWindow _mainWindow; - - private ContextMenu _disableWmrMenu; - private ContextMenu _enableWmrMenu; - - public TrayIconManager(MainWindow mainWindow) - { - _mainWindow = mainWindow; - } - - /// - /// Initialize behaviour of tray icon. - /// - public void Initialize() - { - InitializeTrayOptions(); - - _trayIcon.ContextMenu = _enableWmrMenu; - - _trayIcon.DoubleClick += ShowMainWindow; - } - - private void InitializeTrayOptions() - { - _disableWmrMenu = new ContextMenu(new[] - { - new MenuItem(DisableWmrMenuItemText, DisableWmr) - }); - - _enableWmrMenu = new ContextMenu(new[] - { - new MenuItem(EnableWmrMenuItemText, ActivateWmr) - }); - } - - private void DisableWmr(object _, EventArgs eventArgs) - { - _trayIcon.ContextMenu = _enableWmrMenu; - _mainWindow.ChangeWmrDeviceState(false); - } - - private void ActivateWmr(object _, EventArgs eventArgs) - { - _trayIcon.ContextMenu = _disableWmrMenu; - _mainWindow.ChangeWmrDeviceState(true); - } - - private void ShowMainWindow(object _, EventArgs eventArgs) - { - HideIcon(); - - _mainWindow.Show(); - - _mainWindow.WindowState = WindowState.Normal; - } - - private void HideIcon() - { - _trayIcon.Visible = false; - } - - /// - /// Makes icon visible in the tray. - /// - public void ShowIcon() - { - _trayIcon.Visible = true; - } - } -} \ No newline at end of file diff --git a/WMR-USB-Controller/WMR-USB-Controller/YUART/USB/USBDevicesManager.cs b/WMR-USB-Controller/WMR-USB-Controller/YUART/USB/USBDevicesManager.cs deleted file mode 100644 index d8f0e88..0000000 --- a/WMR-USB-Controller/WMR-USB-Controller/YUART/USB/USBDevicesManager.cs +++ /dev/null @@ -1,87 +0,0 @@ -using System.Diagnostics; -using System.Management; -using System.Linq; - -namespace WMR_USB_Controller.YUART.USB -{ - /// - /// Class, that handles data about connected USB devices. - /// - public sealed class UsbDevicesManager - { - private const string UsbSeekerQueryString = @"SELECT * FROM Win32_PnPEntity where DeviceID Like ""USB%"""; - private const string UsbDescriptionParameterName = "Name"; - private const string PathToDevManViewTool = @"DevManView.exe"; - private const string EnableWmrCommand = "/enable"; - private const string DisableWmrCommand = "/disable"; - - private readonly string[] _wmrNames = { - "Windows Mixed Reality", - "WMR" - }; - - private Process _wmrOnProcess; - private Process _wmrOffProcess; - private string _wmrDeviceName; - - /// - /// Initialize UsbDevicesManager class. - /// - public void Initialize() - { - GetWmrDevice(); - PrepareControlProcesses(); - } - - private void GetWmrDevice() - { - using var usbSearcher = new ManagementObjectSearcher(UsbSeekerQueryString); - - using var collectionUsbObjects = usbSearcher.Get(); - - foreach (var deviceObject in collectionUsbObjects) - { - var deviceDescription = (string) deviceObject.GetPropertyValue(UsbDescriptionParameterName); - - if (!_wmrNames.Any(deviceDescription.Contains)) continue; - - _wmrDeviceName = deviceDescription; - - break; - } - } - - private void PrepareControlProcesses() - { - _wmrOnProcess = new Process - { - StartInfo = - { - FileName = PathToDevManViewTool, - Arguments = $"{EnableWmrCommand} \"{_wmrDeviceName}\"" - } - }; - - _wmrOffProcess = new Process - { - StartInfo = - { - FileName = PathToDevManViewTool, - Arguments = $"{DisableWmrCommand} \"{_wmrDeviceName}\"" - } - }; - } - - /// - /// Activate or disable WMR device. - /// - /// Activate WMR device? - public void ActivateWmrDevice(bool newStatus) - { - var action = newStatus ? _wmrOnProcess : _wmrOffProcess; - - action.Start(); - action.WaitForExit(); - } - } -} \ No newline at end of file diff --git a/WMR-USB-Controller/WMR-USB-Controller/packages.config b/WMR-USB-Controller/WMR-USB-Controller/packages.config deleted file mode 100644 index f1efb7a..0000000 --- a/WMR-USB-Controller/WMR-USB-Controller/packages.config +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file From 3794147e7cedda28ad369e6e494afbd2fbfe1aed Mon Sep 17 00:00:00 2001 From: Artem Yurchenko Date: Mon, 7 Dec 2020 14:58:58 +0100 Subject: [PATCH 2/5] All program scripts were moved to the new project --- MainWindow.xaml | 13 +++- MainWindow.xaml.cs | 85 ++++++++++++++++++++----- WMR USB Controller Main Icon.ico | Bin 0 -> 258062 bytes WMR USB Controller Main Icon.png | Bin 24262 -> 0 bytes WMR USB Controller.csproj | 17 ++++- YUART/Autostart/AutostartManager.cs | 66 ++++++++++++++++++++ YUART/Tray Icon/TrayIconManager.cs | 93 ++++++++++++++++++++++++++++ YUART/USB/UsbDevicesManager.cs | 87 ++++++++++++++++++++++++++ 8 files changed, 343 insertions(+), 18 deletions(-) create mode 100644 WMR USB Controller Main Icon.ico delete mode 100644 WMR USB Controller Main Icon.png create mode 100644 YUART/Autostart/AutostartManager.cs create mode 100644 YUART/Tray Icon/TrayIconManager.cs create mode 100644 YUART/USB/UsbDevicesManager.cs diff --git a/MainWindow.xaml b/MainWindow.xaml index e5cd966..6ed68ae 100644 --- a/MainWindow.xaml +++ b/MainWindow.xaml @@ -5,8 +5,17 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:WMR_USB_Controller" mc:Ignorable="d" - Title="MainWindow" Height="450" Width="800"> + Title="WMR USB Controller" + Height="512" + Width="512" + Icon="WMR USB Controller Main Icon.ico" + Background="#FF5B5B5B"> - + + + + + + diff --git a/MainWindow.xaml.cs b/MainWindow.xaml.cs index f9ac11b..8c226cb 100644 --- a/MainWindow.xaml.cs +++ b/MainWindow.xaml.cs @@ -1,28 +1,85 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Windows; -using System.Windows.Controls; -using System.Windows.Data; -using System.Windows.Documents; -using System.Windows.Input; -using System.Windows.Media; -using System.Windows.Media.Imaging; -using System.Windows.Navigation; -using System.Windows.Shapes; +using WMR_USB_Controller.YUART.Autostart; +using WMR_USB_Controller.YUART.Tray_Icon; +using WMR_USB_Controller.YUART.USB; namespace WMR_USB_Controller { /// - /// Логика взаимодействия для MainWindow.xaml + /// Interaction logic for MainWindow.xaml /// - public partial class MainWindow : Window + public partial class MainWindow { + private readonly UsbDevicesManager _usbDevicesManager = new UsbDevicesManager(); + + private AutostartManager _autostartManager; + private TrayIconManager _trayIconManager; + public MainWindow() { InitializeComponent(); + + SetupTrayIconManager(); + SetupAutostartManager(); + + _usbDevicesManager.Initialize(); + + DisableWmrDeviceOnStartup(); + } + + private void SetupTrayIconManager() + { + _trayIconManager = new TrayIconManager(this); + _trayIconManager.Initialize(); + } + + private void SetupAutostartManager() + { + _autostartManager = new AutostartManager(AutostartCheckbox); + _autostartManager.Initialize(); + } + + private void DisableWmrDeviceOnStartup() + { + ChangeWmrDeviceState(false); + } + + protected override void OnStateChanged(EventArgs e) + { + if (WindowState == WindowState.Minimized) + { + Hide(); + + _trayIconManager.ShowIcon(); + } + + base.OnStateChanged(e); + } + + private void DisableWmrDeviceAction(object sender, RoutedEventArgs e) + { + ChangeWmrDeviceState(false); + } + + private void EnableWmrDeviceAction(object sender, RoutedEventArgs e) + { + ChangeWmrDeviceState(true); + } + + /// + /// Switch WMR device status (active/disabled). + /// + /// New active status of WMR device. + public void ChangeWmrDeviceState(bool newState) + { + _usbDevicesManager.ActivateWmrDevice(newState); + WmrStatusToggle.IsChecked = !newState; + } + + private void SwitchAutostartStatus(object sender, RoutedEventArgs e) + { + _autostartManager.SetToAutostart(); } } } diff --git a/WMR USB Controller Main Icon.ico b/WMR USB Controller Main Icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..43ea24fbd71b8b2097afa6e0099457a9881632d9 GIT binary patch literal 258062 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 Cr7)}j literal 0 HcmV?d00001 diff --git a/WMR USB Controller Main Icon.png b/WMR USB Controller Main Icon.png deleted file mode 100644 index 8aa8793f04ca170d80d7e59e52ff5cc6a72bbe70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24262 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 diff --git a/WMR USB Controller.csproj b/WMR USB Controller.csproj index 0d370a3..b8344e3 100644 --- a/WMR USB Controller.csproj +++ b/WMR USB Controller.csproj @@ -9,6 +9,7 @@ WMR_USB_Controller WMR USB Controller v4.8 + 8.0 512 {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 4 @@ -16,7 +17,7 @@ true - AnyCPU + x64 true full false @@ -26,7 +27,7 @@ 4 - AnyCPU + x64 pdbonly true bin\Release\ @@ -34,9 +35,15 @@ prompt 4 + + WMR USB Controller Main Icon.ico + + + + @@ -55,6 +62,9 @@ MSBuild:Compile Designer + + + MSBuild:Compile Designer @@ -94,5 +104,8 @@ + + + \ No newline at end of file diff --git a/YUART/Autostart/AutostartManager.cs b/YUART/Autostart/AutostartManager.cs new file mode 100644 index 0000000..45d5dea --- /dev/null +++ b/YUART/Autostart/AutostartManager.cs @@ -0,0 +1,66 @@ +using System.Windows.Controls; +using Microsoft.Win32; +using Application = System.Windows.Application; + +namespace WMR_USB_Controller.YUART.Autostart +{ + /// + /// Class, that controls app's autostart. + /// + public sealed class AutostartManager + { + private const string PathToAutostartRegKey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"; + + private readonly RegistryKey _autostartRegKey = Registry.CurrentUser.OpenSubKey(PathToAutostartRegKey, true); + private readonly string _appExecutionPath = System.Reflection.Assembly.GetExecutingAssembly().Location; + private readonly CheckBox _autostartCheckbox; + + private string _appName; + + public AutostartManager(CheckBox autostartCheckbox) + { + _autostartCheckbox = autostartCheckbox; + } + + /// + /// Initialize manager data. + /// + public void Initialize() + { + SetApplicationName(); + + SetAutostartCheckboxValue(); + } + + private void SetApplicationName() + { + _appName = Application.Current.MainWindow?.Title; + } + + private void SetAutostartCheckboxValue() + { + if (_autostartCheckbox.IsChecked == null) return; + + var startupAutostartValue = _autostartRegKey.GetValue(_appName); + + _autostartCheckbox.IsChecked = startupAutostartValue != null; + } + + /// + /// Sets/removes app from autostart (depends from the value of autostart checkbox). + /// + public void SetToAutostart() + { + if (_autostartCheckbox.IsChecked == null || _autostartRegKey == null) return; + + if (_autostartCheckbox.IsChecked.Value) + { + _autostartRegKey.SetValue(_appName, _appExecutionPath); + } + else + { + _autostartRegKey.DeleteValue(_appName, false); + } + } + } +} \ No newline at end of file diff --git a/YUART/Tray Icon/TrayIconManager.cs b/YUART/Tray Icon/TrayIconManager.cs new file mode 100644 index 0000000..bcfc67e --- /dev/null +++ b/YUART/Tray Icon/TrayIconManager.cs @@ -0,0 +1,93 @@ +using System; +using System.Windows; +using System.Windows.Forms; + +namespace WMR_USB_Controller.YUART.Tray_Icon +{ + /// + /// Class, that manages behaviour of the application in tray. + /// + public sealed class TrayIconManager + { + private const string PathToTrayIcon = "WMR USB Controller Main Icon.ico"; + private const string ToolTipText = "WMR USB Controller"; + private const string DisableWmrMenuItemText = "Disable WMR Device"; + private const string EnableWmrMenuItemText = "Enable WMR Device"; + + private readonly NotifyIcon _trayIcon = new NotifyIcon + { + Icon = new System.Drawing.Icon(PathToTrayIcon), + Visible = false, + Text = ToolTipText + }; + + private readonly MainWindow _mainWindow; + + private ContextMenu _disableWmrMenu; + private ContextMenu _enableWmrMenu; + + public TrayIconManager(MainWindow mainWindow) + { + _mainWindow = mainWindow; + } + + /// + /// Initialize behaviour of tray icon. + /// + public void Initialize() + { + InitializeTrayOptions(); + + _trayIcon.ContextMenu = _enableWmrMenu; + + _trayIcon.DoubleClick += ShowMainWindow; + } + + private void InitializeTrayOptions() + { + _disableWmrMenu = new ContextMenu(new[] + { + new MenuItem(DisableWmrMenuItemText, DisableWmr) + }); + + _enableWmrMenu = new ContextMenu(new[] + { + new MenuItem(EnableWmrMenuItemText, ActivateWmr) + }); + } + + private void DisableWmr(object _, EventArgs eventArgs) + { + _trayIcon.ContextMenu = _enableWmrMenu; + _mainWindow.ChangeWmrDeviceState(false); + } + + private void ActivateWmr(object _, EventArgs eventArgs) + { + _trayIcon.ContextMenu = _disableWmrMenu; + _mainWindow.ChangeWmrDeviceState(true); + } + + private void ShowMainWindow(object _, EventArgs eventArgs) + { + HideIcon(); + + _mainWindow.Show(); + + _mainWindow.WindowState = WindowState.Normal; + } + + private void HideIcon() + { + _trayIcon.Visible = false; + } + + /// + /// Makes icon visible in the tray. + /// + public void ShowIcon() + { + _trayIcon.Visible = true; + } + } +} \ No newline at end of file diff --git a/YUART/USB/UsbDevicesManager.cs b/YUART/USB/UsbDevicesManager.cs new file mode 100644 index 0000000..2dd0ea2 --- /dev/null +++ b/YUART/USB/UsbDevicesManager.cs @@ -0,0 +1,87 @@ +using System.Diagnostics; +using System.Management; +using System.Linq; + +namespace WMR_USB_Controller.YUART.USB +{ + /// + /// Class, that handles data about connected USB devices. + /// + public sealed class UsbDevicesManager + { + private const string UsbSeekerQueryString = @"SELECT * FROM Win32_PnPEntity where DeviceID Like ""USB%"""; + private const string UsbDescriptionParameterName = "Name"; + private const string PathToDevManViewTool = @"DevManView.exe"; + private const string EnableWmrCommand = "/enable"; + private const string DisableWmrCommand = "/disable"; + + private readonly string[] _wmrNames = { + "Windows Mixed Reality", + "WMR" + }; + + private Process _wmrOnProcess; + private Process _wmrOffProcess; + private string _wmrDeviceName; + + /// + /// Initialize UsbDevicesManager class. + /// + public void Initialize() + { + GetWmrDevice(); + PrepareControlProcesses(); + } + + private void GetWmrDevice() + { + using var usbSearcher = new ManagementObjectSearcher(UsbSeekerQueryString); + + using var collectionUsbObjects = usbSearcher.Get(); + + foreach (var deviceObject in collectionUsbObjects) + { + var deviceDescription = (string)deviceObject.GetPropertyValue(UsbDescriptionParameterName); + + if (!_wmrNames.Any(deviceDescription.Contains)) continue; + + _wmrDeviceName = deviceDescription; + + break; + } + } + + private void PrepareControlProcesses() + { + _wmrOnProcess = new Process + { + StartInfo = + { + FileName = PathToDevManViewTool, + Arguments = $"{EnableWmrCommand} \"{_wmrDeviceName}\"" + } + }; + + _wmrOffProcess = new Process + { + StartInfo = + { + FileName = PathToDevManViewTool, + Arguments = $"{DisableWmrCommand} \"{_wmrDeviceName}\"" + } + }; + } + + /// + /// Activate or disable WMR device. + /// + /// Activate WMR device? + public void ActivateWmrDevice(bool newStatus) + { + var action = newStatus ? _wmrOnProcess : _wmrOffProcess; + + action.Start(); + action.WaitForExit(); + } + } +} \ No newline at end of file From b7cc303d25d18aa939c4a90105feec97e991bf9b Mon Sep 17 00:00:00 2001 From: Artem Yurchenko Date: Mon, 7 Dec 2020 15:39:36 +0100 Subject: [PATCH 3/5] New way to control WMR device was implemented --- WMR USB Controller Main Icon.ico | Bin 258062 -> 258062 bytes YUART/USB/UsbDevicesManager.cs | 79 +++++++++++++------------------ 2 files changed, 34 insertions(+), 45 deletions(-) diff --git a/WMR USB Controller Main Icon.ico b/WMR USB Controller Main Icon.ico index 43ea24fbd71b8b2097afa6e0099457a9881632d9..89cc9512e85eaae9d8904c53dec0ffbd240f9e75 100644 GIT binary patch delta 6081 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 diff --git a/YUART/USB/UsbDevicesManager.cs b/YUART/USB/UsbDevicesManager.cs index 2dd0ea2..ab92a7a 100644 --- a/YUART/USB/UsbDevicesManager.cs +++ b/YUART/USB/UsbDevicesManager.cs @@ -1,6 +1,6 @@ -using System.Diagnostics; +using System; using System.Management; -using System.Linq; +using System.Windows; namespace WMR_USB_Controller.YUART.USB { @@ -9,20 +9,11 @@ namespace WMR_USB_Controller.YUART.USB /// public sealed class UsbDevicesManager { - private const string UsbSeekerQueryString = @"SELECT * FROM Win32_PnPEntity where DeviceID Like ""USB%"""; - private const string UsbDescriptionParameterName = "Name"; - private const string PathToDevManViewTool = @"DevManView.exe"; - private const string EnableWmrCommand = "/enable"; - private const string DisableWmrCommand = "/disable"; + private const string UsbSeekerQueryString = @"SELECT * FROM Win32_PnPEntity WHERE PNPClass LIKE 'Holographic'"; + private const string PnpRootPath = "root\\CIMV2"; + private const string CantFoundWmrDeviceMessage = "Can't find WMR device!"; - private readonly string[] _wmrNames = { - "Windows Mixed Reality", - "WMR" - }; - - private Process _wmrOnProcess; - private Process _wmrOffProcess; - private string _wmrDeviceName; + private ManagementObject _wmrDevice; /// /// Initialize UsbDevicesManager class. @@ -30,46 +21,30 @@ public sealed class UsbDevicesManager public void Initialize() { GetWmrDevice(); - PrepareControlProcesses(); } private void GetWmrDevice() { - using var usbSearcher = new ManagementObjectSearcher(UsbSeekerQueryString); + using var usbSearcher = new ManagementObjectSearcher(PnpRootPath, UsbSeekerQueryString); using var collectionUsbObjects = usbSearcher.Get(); - foreach (var deviceObject in collectionUsbObjects) + if (collectionUsbObjects.Count == 0) { - var deviceDescription = (string)deviceObject.GetPropertyValue(UsbDescriptionParameterName); - - if (!_wmrNames.Any(deviceDescription.Contains)) continue; - - _wmrDeviceName = deviceDescription; - - break; + MessageBox.Show(CantFoundWmrDeviceMessage); + return; } + + GetFirstFoundedDevice(collectionUsbObjects); } - private void PrepareControlProcesses() + private void GetFirstFoundedDevice(ManagementObjectCollection collectionUsbObjects) { - _wmrOnProcess = new Process - { - StartInfo = - { - FileName = PathToDevManViewTool, - Arguments = $"{EnableWmrCommand} \"{_wmrDeviceName}\"" - } - }; - - _wmrOffProcess = new Process + foreach (ManagementObject device in collectionUsbObjects) { - StartInfo = - { - FileName = PathToDevManViewTool, - Arguments = $"{DisableWmrCommand} \"{_wmrDeviceName}\"" - } - }; + _wmrDevice = device; + break; + } } /// @@ -78,10 +53,24 @@ private void PrepareControlProcesses() /// Activate WMR device? public void ActivateWmrDevice(bool newStatus) { - var action = newStatus ? _wmrOnProcess : _wmrOffProcess; + if (newStatus) + { + EnableWmrDevice(); + } + else + { + DisableWmrDevice(); + } + } - action.Start(); - action.WaitForExit(); + private void EnableWmrDevice() + { + _wmrDevice.InvokeMethod("Enable", null, null); + } + + private void DisableWmrDevice() + { + _wmrDevice.InvokeMethod("Disable", null, null); } } } \ No newline at end of file From d53c933b9a2d102a444370c3080f56ff92be5a06 Mon Sep 17 00:00:00 2001 From: Artem Yurchenko Date: Mon, 7 Dec 2020 15:48:57 +0100 Subject: [PATCH 4/5] App manifest was added --- WMR USB Controller.csproj | 6 +++- app.manifest | 76 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 app.manifest diff --git a/WMR USB Controller.csproj b/WMR USB Controller.csproj index b8344e3..8c636d4 100644 --- a/WMR USB Controller.csproj +++ b/WMR USB Controller.csproj @@ -9,7 +9,7 @@ WMR_USB_Controller WMR USB Controller v4.8 - 8.0 + 8.0 512 {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 4 @@ -38,6 +38,9 @@ WMR USB Controller Main Icon.ico + + app.manifest + @@ -96,6 +99,7 @@ ResXFileCodeGenerator Resources.Designer.cs + SettingsSingleFileGenerator Settings.Designer.cs diff --git a/app.manifest b/app.manifest new file mode 100644 index 0000000..8184cd9 --- /dev/null +++ b/app.manifest @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 4286fe4c742c644f82b8fc00baa19fc3585255e0 Mon Sep 17 00:00:00 2001 From: Artem Yurchenko Date: Mon, 7 Dec 2020 18:38:34 +0100 Subject: [PATCH 5/5] Project was cleaned --- .idea/.idea.WMR USB Controller/.idea/.name | 1 + .../.idea/codeStyles/codeStyleConfig.xml | 5 +++++ .idea/.idea.WMR USB Controller/.idea/encodings.xml | 4 ++++ .idea/.idea.WMR USB Controller/.idea/indexLayout.xml | 8 ++++++++ .../.idea/projectSettingsUpdater.xml | 6 ++++++ .idea/.idea.WMR USB Controller/.idea/vcs.xml | 6 ++++++ WMR USB Controller.csproj | 9 ++------- 7 files changed, 32 insertions(+), 7 deletions(-) create mode 100644 .idea/.idea.WMR USB Controller/.idea/.name create mode 100644 .idea/.idea.WMR USB Controller/.idea/codeStyles/codeStyleConfig.xml create mode 100644 .idea/.idea.WMR USB Controller/.idea/encodings.xml create mode 100644 .idea/.idea.WMR USB Controller/.idea/indexLayout.xml create mode 100644 .idea/.idea.WMR USB Controller/.idea/projectSettingsUpdater.xml create mode 100644 .idea/.idea.WMR USB Controller/.idea/vcs.xml diff --git a/.idea/.idea.WMR USB Controller/.idea/.name b/.idea/.idea.WMR USB Controller/.idea/.name new file mode 100644 index 0000000..319180c --- /dev/null +++ b/.idea/.idea.WMR USB Controller/.idea/.name @@ -0,0 +1 @@ +WMR USB Controller \ No newline at end of file diff --git a/.idea/.idea.WMR USB Controller/.idea/codeStyles/codeStyleConfig.xml b/.idea/.idea.WMR USB Controller/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000..7ad1bf1 --- /dev/null +++ b/.idea/.idea.WMR USB Controller/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/.idea/.idea.WMR USB Controller/.idea/encodings.xml b/.idea/.idea.WMR USB Controller/.idea/encodings.xml new file mode 100644 index 0000000..df87cf9 --- /dev/null +++ b/.idea/.idea.WMR USB Controller/.idea/encodings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/.idea.WMR USB Controller/.idea/indexLayout.xml b/.idea/.idea.WMR USB Controller/.idea/indexLayout.xml new file mode 100644 index 0000000..27ba142 --- /dev/null +++ b/.idea/.idea.WMR USB Controller/.idea/indexLayout.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/.idea.WMR USB Controller/.idea/projectSettingsUpdater.xml b/.idea/.idea.WMR USB Controller/.idea/projectSettingsUpdater.xml new file mode 100644 index 0000000..4bb9f4d --- /dev/null +++ b/.idea/.idea.WMR USB Controller/.idea/projectSettingsUpdater.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/.idea.WMR USB Controller/.idea/vcs.xml b/.idea/.idea.WMR USB Controller/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/.idea.WMR USB Controller/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/WMR USB Controller.csproj b/WMR USB Controller.csproj index 8c636d4..55ffc87 100644 --- a/WMR USB Controller.csproj +++ b/WMR USB Controller.csproj @@ -9,7 +9,7 @@ WMR_USB_Controller WMR USB Controller v4.8 - 8.0 + 8 512 {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 4 @@ -34,6 +34,7 @@ TRACE prompt 4 + false WMR USB Controller Main Icon.ico @@ -47,12 +48,6 @@ - - - - - - 4.0