diff --git a/KeyWatch++.sln b/KeyWatch++.sln new file mode 100644 index 0000000..403a0a8 --- /dev/null +++ b/KeyWatch++.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25420.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KeyWatch++", "KeyWatch++\KeyWatch++.csproj", "{6F96FBBF-CEC2-4C56-B94B-32056CCC49A3}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {6F96FBBF-CEC2-4C56-B94B-32056CCC49A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6F96FBBF-CEC2-4C56-B94B-32056CCC49A3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6F96FBBF-CEC2-4C56-B94B-32056CCC49A3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6F96FBBF-CEC2-4C56-B94B-32056CCC49A3}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/KeyWatch++/App.config b/KeyWatch++/App.config new file mode 100644 index 0000000..163ea5a --- /dev/null +++ b/KeyWatch++/App.config @@ -0,0 +1,54 @@ + + + + +
+
+ + + + + + + + + False + + + False + + + False + + + + + + + + + + + + + + False + + + False + + + False + + + + + + + + + + + + + \ No newline at end of file diff --git a/KeyWatch++/FodyWeavers.xml b/KeyWatch++/FodyWeavers.xml new file mode 100644 index 0000000..2e6d4a7 --- /dev/null +++ b/KeyWatch++/FodyWeavers.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/KeyWatch++/Form1.Designer.cs b/KeyWatch++/Form1.Designer.cs new file mode 100644 index 0000000..4aed62a --- /dev/null +++ b/KeyWatch++/Form1.Designer.cs @@ -0,0 +1,161 @@ +namespace KeyWatch__ +{ + partial class Form1 + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) { + if (disposing && (components != null)) { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() { + this.check_Numlock = new System.Windows.Forms.CheckBox(); + this.check_Capslock = new System.Windows.Forms.CheckBox(); + this.check_Scrolllock = new System.Windows.Forms.CheckBox(); + this.comboBox_numlock = new System.Windows.Forms.ComboBox(); + this.comboBox_capslock = new System.Windows.Forms.ComboBox(); + this.comboBox_scrolllock = new System.Windows.Forms.ComboBox(); + this.groupBox_check = new System.Windows.Forms.GroupBox(); + this.groupBox_combo = new System.Windows.Forms.GroupBox(); + this.groupBox_check.SuspendLayout(); + this.groupBox_combo.SuspendLayout(); + this.SuspendLayout(); + // + // check_Numlock + // + this.check_Numlock.AutoSize = true; + this.check_Numlock.Location = new System.Drawing.Point(28, 30); + this.check_Numlock.Name = "check_Numlock"; + this.check_Numlock.Size = new System.Drawing.Size(68, 17); + this.check_Numlock.TabIndex = 0; + this.check_Numlock.Text = "Numlock"; + this.check_Numlock.UseVisualStyleBackColor = true; + this.check_Numlock.CheckedChanged += new System.EventHandler(this.check_Numlock_CheckedChanged); + // + // check_Capslock + // + this.check_Capslock.AutoSize = true; + this.check_Capslock.Location = new System.Drawing.Point(28, 60); + this.check_Capslock.Name = "check_Capslock"; + this.check_Capslock.Size = new System.Drawing.Size(70, 17); + this.check_Capslock.TabIndex = 1; + this.check_Capslock.Text = "Capslock"; + this.check_Capslock.UseVisualStyleBackColor = true; + this.check_Capslock.CheckedChanged += new System.EventHandler(this.check_Capslock_CheckedChanged); + // + // check_Scrolllock + // + this.check_Scrolllock.AutoSize = true; + this.check_Scrolllock.Location = new System.Drawing.Point(28, 90); + this.check_Scrolllock.Name = "check_Scrolllock"; + this.check_Scrolllock.Size = new System.Drawing.Size(72, 17); + this.check_Scrolllock.TabIndex = 2; + this.check_Scrolllock.Text = "Scrolllock"; + this.check_Scrolllock.UseVisualStyleBackColor = true; + this.check_Scrolllock.CheckedChanged += new System.EventHandler(this.check_Scrolllock_CheckedChanged); + // + // comboBox_numlock + // + this.comboBox_numlock.FormattingEnabled = true; + this.comboBox_numlock.Items.AddRange(new object[] { + "Enabled", + "Disabled"}); + this.comboBox_numlock.Location = new System.Drawing.Point(26, 26); + this.comboBox_numlock.Name = "comboBox_numlock"; + this.comboBox_numlock.Size = new System.Drawing.Size(121, 21); + this.comboBox_numlock.TabIndex = 4; + this.comboBox_numlock.SelectedIndexChanged += new System.EventHandler(this.comboBox_numlock_SelectedIndexChanged); + // + // comboBox_capslock + // + this.comboBox_capslock.FormattingEnabled = true; + this.comboBox_capslock.Items.AddRange(new object[] { + "Enabled", + "Disabled"}); + this.comboBox_capslock.Location = new System.Drawing.Point(26, 56); + this.comboBox_capslock.Name = "comboBox_capslock"; + this.comboBox_capslock.Size = new System.Drawing.Size(121, 21); + this.comboBox_capslock.TabIndex = 5; + this.comboBox_capslock.SelectedIndexChanged += new System.EventHandler(this.comboBox_capslock_SelectedIndexChanged); + // + // comboBox_scrolllock + // + this.comboBox_scrolllock.FormattingEnabled = true; + this.comboBox_scrolllock.Items.AddRange(new object[] { + "Enabled", + "Disabled"}); + this.comboBox_scrolllock.Location = new System.Drawing.Point(26, 86); + this.comboBox_scrolllock.Name = "comboBox_scrolllock"; + this.comboBox_scrolllock.Size = new System.Drawing.Size(121, 21); + this.comboBox_scrolllock.TabIndex = 6; + this.comboBox_scrolllock.SelectedIndexChanged += new System.EventHandler(this.comboBox_scrolllock_SelectedIndexChanged); + // + // groupBox_check + // + this.groupBox_check.Controls.Add(this.check_Capslock); + this.groupBox_check.Controls.Add(this.check_Numlock); + this.groupBox_check.Controls.Add(this.check_Scrolllock); + this.groupBox_check.Location = new System.Drawing.Point(13, 12); + this.groupBox_check.Name = "groupBox_check"; + this.groupBox_check.Size = new System.Drawing.Size(134, 126); + this.groupBox_check.TabIndex = 7; + this.groupBox_check.TabStop = false; + this.groupBox_check.Text = "Keys Monitored"; + // + // groupBox_combo + // + this.groupBox_combo.Controls.Add(this.comboBox_scrolllock); + this.groupBox_combo.Controls.Add(this.comboBox_capslock); + this.groupBox_combo.Controls.Add(this.comboBox_numlock); + this.groupBox_combo.Location = new System.Drawing.Point(167, 12); + this.groupBox_combo.Name = "groupBox_combo"; + this.groupBox_combo.Size = new System.Drawing.Size(170, 126); + this.groupBox_combo.TabIndex = 8; + this.groupBox_combo.TabStop = false; + this.groupBox_combo.Text = "Desired State"; + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(350, 150); + this.Controls.Add(this.groupBox_check); + this.Controls.Add(this.groupBox_combo); + this.Name = "Form1"; + this.Text = "Configuration"; + this.groupBox_check.ResumeLayout(false); + this.groupBox_check.PerformLayout(); + this.groupBox_combo.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + public System.Windows.Forms.CheckBox check_Numlock; + public System.Windows.Forms.CheckBox check_Capslock; + public System.Windows.Forms.CheckBox check_Scrolllock; + public System.Windows.Forms.ComboBox comboBox_numlock; + public System.Windows.Forms.ComboBox comboBox_capslock; + public System.Windows.Forms.ComboBox comboBox_scrolllock; + private System.Windows.Forms.GroupBox groupBox_check; + private System.Windows.Forms.GroupBox groupBox_combo; + } +} + diff --git a/KeyWatch++/Form1.cs b/KeyWatch++/Form1.cs new file mode 100644 index 0000000..5422142 --- /dev/null +++ b/KeyWatch++/Form1.cs @@ -0,0 +1,112 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using System.Timers; +using WindowsInput; +using System.Runtime.InteropServices; +using System.Diagnostics; +using System.Xml.Serialization; +using System.IO; + +namespace KeyWatch__ +{ + public partial class Form1 : Form + { + [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true, CallingConvention = CallingConvention.Winapi)] + public static extern short GetKeyState(int keyCode); + static bool CapsLock { get { return (((ushort)GetKeyState(0x14)) & 0xffff) != 0; } } + static bool NumLock { get { return (((ushort)GetKeyState(0x90)) & 0xffff) != 0; } } + static bool ScrollLock { get { return (((ushort)GetKeyState(0x91)) & 0xffff) != 0; } } + + private string _numlockSelection; + private string _capslockSelection; + private string _scrolllockSelection; + + private System.Timers.Timer _checkKeysTimer = new System.Timers.Timer(); + public Form1() { + InitializeComponent(); + + _checkKeysTimer.Interval = 500; + _checkKeysTimer.AutoReset = true; + _checkKeysTimer.Elapsed += _checkKeysTimer_Elapsed; + _checkKeysTimer.Start(); + } + + private void _checkKeysTimer_Elapsed(object sender, ElapsedEventArgs e) { + + InputSimulator _sim = new InputSimulator(); + + bool _manageNum = check_Numlock.Checked; + bool _manageCaps = check_Capslock.Checked; + bool _manageScroll = check_Scrolllock.Checked; + + + bool watching = _manageCaps || _manageNum || _manageScroll; + if (!watching) { return; } + + + if (_manageNum) { + if (_numlockSelection != null) { + if ((_numlockSelection == "Enabled" && !NumLock) || + (_numlockSelection == "Disabled" && NumLock)){ + _sim.Keyboard.KeyPress(WindowsInput.Native.VirtualKeyCode.NUMLOCK); + Trace.WriteLine(String.Format("{0} - enable Numlock", DateTime.Now)); + } + } + } + if (_manageCaps) { + if ((_capslockSelection == "Enabled" && !CapsLock) || + (_capslockSelection == "Disabled" && CapsLock)) { + _sim.Keyboard.KeyPress(WindowsInput.Native.VirtualKeyCode.CAPITAL); + Trace.WriteLine(String.Format("{0} - disable Capslock", DateTime.Now)); + } + } + if (_manageScroll) { + if ((_scrolllockSelection == "Enabled" && !ScrollLock) || + (_scrolllockSelection == "Disabled" && ScrollLock)) + _sim.Keyboard.KeyPress(WindowsInput.Native.VirtualKeyCode.SCROLL); + Trace.WriteLine(String.Format("{0} - disable Scrolllock", DateTime.Now)); + } + } + + + private void comboBox_numlock_SelectedIndexChanged(object sender, EventArgs e) { + _numlockSelection = (string)comboBox_numlock.SelectedItem; + Properties.KeyWatch.Default.NumlockText = _numlockSelection; + Properties.KeyWatch.Default.Save(); + } + + private void comboBox_capslock_SelectedIndexChanged(object sender, EventArgs e) { + _capslockSelection = (string)comboBox_capslock.SelectedItem; + Properties.KeyWatch.Default.CapslockText = _capslockSelection; + Properties.KeyWatch.Default.Save(); + } + + private void comboBox_scrolllock_SelectedIndexChanged(object sender, EventArgs e) { + _scrolllockSelection = (string)comboBox_scrolllock.SelectedItem; + Properties.KeyWatch.Default.ScrolllockText = _scrolllockSelection; + Properties.KeyWatch.Default.Save(); + } + + private void check_Numlock_CheckedChanged(object sender, EventArgs e) { + Properties.KeyWatch.Default.Numlock = check_Numlock.Checked; + Properties.KeyWatch.Default.Save(); + } + + private void check_Capslock_CheckedChanged(object sender, EventArgs e) { + Properties.KeyWatch.Default.Capslock = check_Capslock.Checked; + Properties.KeyWatch.Default.Save(); + } + + private void check_Scrolllock_CheckedChanged(object sender, EventArgs e) { + Properties.KeyWatch.Default.Scrolllock = check_Scrolllock.Checked; + Properties.KeyWatch.Default.Save(); + } + } +} diff --git a/KeyWatch++/Form1.resx b/KeyWatch++/Form1.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/KeyWatch++/Form1.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/KeyWatch++/KeyWatch++.csproj b/KeyWatch++/KeyWatch++.csproj new file mode 100644 index 0000000..dbc50ac --- /dev/null +++ b/KeyWatch++/KeyWatch++.csproj @@ -0,0 +1,122 @@ + + + + + Debug + AnyCPU + {6F96FBBF-CEC2-4C56-B94B-32056CCC49A3} + WinExe + Properties + KeyWatch__ + KeyWatch++ + v4.6.1 + 512 + true + + + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + ..\packages\InputSimulator.1.0.4.0\lib\net20\WindowsInput.dll + True + + + + + Form + + + Form1.cs + + + True + True + KeyWatch.settings + + + + + Form1.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + PublicSettingsSingleFileGenerator + KeyWatch.Designer.cs + + + + + + + + + + + + + + + WindowsInput.dll + + + + + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + + del "$(ProjectDir)$(OutDir)WindowsInput.dll" + + + \ No newline at end of file diff --git a/KeyWatch++/Program.cs b/KeyWatch++/Program.cs new file mode 100644 index 0000000..c73ec8b --- /dev/null +++ b/KeyWatch++/Program.cs @@ -0,0 +1,65 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace KeyWatch__ +{ + static class Program + { + + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new KeyWatchContext()); + } + } + + public class KeyWatchContext : ApplicationContext + { + NotifyIcon notifyIcon = new NotifyIcon(); + Form1 configWindow = new Form1(); + + public KeyWatchContext() { + MenuItem configMenuItem = new MenuItem("Configuration", new EventHandler(ShowConfig)); + MenuItem exitMenuItem = new MenuItem("Exit", new EventHandler(Exit)); + + notifyIcon.Icon = KeyWatch__.Properties.Resources.AppIcon; + notifyIcon.ContextMenu = new ContextMenu(new MenuItem[] { configMenuItem, exitMenuItem }); + notifyIcon.Visible = true; + + LoadSettings(); + } + + void LoadSettings() { + configWindow.check_Numlock.Checked = Properties.KeyWatch.Default.Numlock; + configWindow.check_Capslock.Checked = Properties.KeyWatch.Default.Capslock; + configWindow.check_Scrolllock.Checked = Properties.KeyWatch.Default.Scrolllock; + configWindow.comboBox_numlock.SelectedItem = Properties.KeyWatch.Default.NumlockText; + configWindow.comboBox_capslock.SelectedItem = Properties.KeyWatch.Default.CapslockText; + configWindow.comboBox_scrolllock.SelectedItem = Properties.KeyWatch.Default.ScrolllockText; + } + + void ShowConfig(object sender, EventArgs e) { + // If we are already showing the window meerly focus it. + if (configWindow.Visible) + configWindow.Focus(); + else + configWindow.ShowDialog(); + } + + void Exit(object sender, EventArgs e) { + // We must manually tidy up and remove the icon before we exit. + // Otherwise it will be left behind until the user mouses over. + notifyIcon.Visible = false; + + Application.Exit(); + } + } +} + diff --git a/KeyWatch++/Properties/AssemblyInfo.cs b/KeyWatch++/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..f86707d --- /dev/null +++ b/KeyWatch++/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 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("KeyWatch++")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("KeyWatch++")] +[assembly: AssemblyCopyright("Copyright © 2017")] +[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)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("6f96fbbf-cec2-4c56-b94b-32056ccc49a3")] + +// 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")] diff --git a/KeyWatch++/Properties/KeyWatch.Designer.cs b/KeyWatch++/Properties/KeyWatch.Designer.cs new file mode 100644 index 0000000..221abf4 --- /dev/null +++ b/KeyWatch++/Properties/KeyWatch.Designer.cs @@ -0,0 +1,98 @@ +//------------------------------------------------------------------------------ +// +// 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 KeyWatch__.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")] + public sealed partial class KeyWatch : global::System.Configuration.ApplicationSettingsBase { + + private static KeyWatch defaultInstance = ((KeyWatch)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new KeyWatch()))); + + public static KeyWatch Default { + get { + return defaultInstance; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool Numlock { + get { + return ((bool)(this["Numlock"])); + } + set { + this["Numlock"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool Scrolllock { + get { + return ((bool)(this["Scrolllock"])); + } + set { + this["Scrolllock"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool Capslock { + get { + return ((bool)(this["Capslock"])); + } + set { + this["Capslock"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("")] + public string NumlockText { + get { + return ((string)(this["NumlockText"])); + } + set { + this["NumlockText"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("")] + public string CapslockText { + get { + return ((string)(this["CapslockText"])); + } + set { + this["CapslockText"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("")] + public string ScrolllockText { + get { + return ((string)(this["ScrolllockText"])); + } + set { + this["ScrolllockText"] = value; + } + } + } +} diff --git a/KeyWatch++/Properties/KeyWatch.settings b/KeyWatch++/Properties/KeyWatch.settings new file mode 100644 index 0000000..3b571b5 --- /dev/null +++ b/KeyWatch++/Properties/KeyWatch.settings @@ -0,0 +1,24 @@ + + + + + + False + + + False + + + False + + + + + + + + + + + + \ No newline at end of file diff --git a/KeyWatch++/Properties/Resources.Designer.cs b/KeyWatch++/Properties/Resources.Designer.cs new file mode 100644 index 0000000..83f6f5f --- /dev/null +++ b/KeyWatch++/Properties/Resources.Designer.cs @@ -0,0 +1,73 @@ +//------------------------------------------------------------------------------ +// +// 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 KeyWatch__.Properties { + using System; + + + /// + /// 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 (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("KeyWatch__.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; + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon). + /// + internal static System.Drawing.Icon AppIcon { + get { + object obj = ResourceManager.GetObject("AppIcon", resourceCulture); + return ((System.Drawing.Icon)(obj)); + } + } + } +} diff --git a/KeyWatch++/Properties/Resources.resx b/KeyWatch++/Properties/Resources.resx new file mode 100644 index 0000000..dd06f95 --- /dev/null +++ b/KeyWatch++/Properties/Resources.resx @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ..\Resources\live.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/KeyWatch++/Resources/AppIcon.bmp b/KeyWatch++/Resources/AppIcon.bmp new file mode 100644 index 0000000..bad10fd Binary files /dev/null and b/KeyWatch++/Resources/AppIcon.bmp differ diff --git a/KeyWatch++/Resources/live.ico b/KeyWatch++/Resources/live.ico new file mode 100644 index 0000000..7f52d0b Binary files /dev/null and b/KeyWatch++/Resources/live.ico differ diff --git a/KeyWatch++/packages.config b/KeyWatch++/packages.config new file mode 100644 index 0000000..f344d1b --- /dev/null +++ b/KeyWatch++/packages.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file