├── .gitignore ├── 3x ├── Move Mouse.sln └── Move Mouse │ ├── Classes │ ├── CelebrityMouse.cs │ └── ScriptingLanguage.cs │ ├── Events │ ├── BlackoutStatusChangedEventArgs.cs │ ├── HookKeyStatusChangedEventArgs.cs │ ├── NewVersionAvailableEventArgs.cs │ ├── PowerLineStatusChangedEventArgs.cs │ └── ScheduleArrivedEventArgs.cs │ ├── Forms │ ├── AddBlackoutForm.Designer.cs │ ├── AddBlackoutForm.cs │ ├── AddBlackoutForm.resx │ ├── AddScheduleForm.Designer.cs │ ├── AddScheduleForm.cs │ ├── AddScheduleForm.resx │ ├── MouseForm.Designer.cs │ ├── MouseForm.cs │ ├── MouseForm.resx │ ├── PowerShellExecutionPolicyForm.Designer.cs │ ├── PowerShellExecutionPolicyForm.cs │ ├── PowerShellExecutionPolicyForm.resx │ ├── SystemTrayIcon.Designer.cs │ └── SystemTrayIcon.cs │ ├── Move Mouse.csproj │ ├── Move Mouse.csproj.DotSettings │ ├── Move Mouse.csproj.user │ ├── Program.cs │ ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ └── Resources.resx │ ├── Resources │ ├── ..svnbridge │ │ ├── Contact_Image.png │ │ ├── EasterEgg.png │ │ ├── Help_Image.png │ │ ├── Mouse-Pause.ico │ │ ├── Mouse-Play.ico │ │ ├── Mouse-Stop.ico │ │ ├── MouseHole_Image.gif │ │ ├── Mouse_Icon.ico │ │ ├── Mouse_Image.png │ │ ├── PayPal_Image.png │ │ ├── ScriptEditor_Icon.ico │ │ ├── Twitter_logo_blue.png │ │ └── codeplex.png │ ├── Contact_Image.png │ ├── EasterEgg.png │ ├── Help_Image.png │ ├── Mice │ │ ├── ..svnbridge │ │ │ ├── Bernard01.jpg │ │ │ ├── Bianca01.jpg │ │ │ ├── Brain01.jpg │ │ │ ├── Danger01.png │ │ │ ├── Despereaux01.jpg │ │ │ ├── FievelMousekewitz01.png │ │ │ ├── FingerMouse01.jpg │ │ │ ├── GadgetHackwrench01.png │ │ │ ├── Itchy01.png │ │ │ ├── JaqGus01.jpg │ │ │ ├── Jerry01.png │ │ │ ├── Mickey01.jpg │ │ │ ├── Mighty01.jpg │ │ │ ├── Minnie01.jpg │ │ │ ├── MontereyJack01.jpg │ │ │ ├── Pikachu01.jpg │ │ │ ├── Pinky01.jpg │ │ │ ├── PixieDixie01.jpg │ │ │ ├── Roquefort01.gif │ │ │ ├── Speedy01.jpg │ │ │ ├── StuartLittle01.jpg │ │ │ └── Timothy01.JPG │ │ ├── Bernard01.jpg │ │ ├── Bianca01.jpg │ │ ├── Brain01.jpg │ │ ├── Danger01.png │ │ ├── Despereaux01.jpg │ │ ├── FievelMousekewitz01.png │ │ ├── FingerMouse01.jpg │ │ ├── GadgetHackwrench01.png │ │ ├── Itchy01.png │ │ ├── JaqGus01.jpg │ │ ├── Jerry01.png │ │ ├── Mice.xml │ │ ├── Mickey01.jpg │ │ ├── Mighty01.jpg │ │ ├── Minnie01.jpg │ │ ├── MontereyJack01.jpg │ │ ├── Pikachu01.jpg │ │ ├── Pinky01.jpg │ │ ├── PixieDixie01.jpg │ │ ├── Roquefort01.gif │ │ ├── Speedy01.jpg │ │ ├── StuartLittle01.jpg │ │ └── Timothy01.JPG │ ├── Mouse-Pause.ico │ ├── Mouse-Play.ico │ ├── Mouse-Stop.ico │ ├── MouseHole_Image.gif │ ├── Mouse_Icon.ico │ ├── Mouse_Image.png │ ├── PayPal_Image.png │ ├── ScriptEditor_Icon.ico │ ├── Twitter_logo_blue.png │ └── codeplex.png │ ├── StaticCode.cs │ └── app.config ├── 4x ├── Libraries │ └── Windows.winmd ├── Move Mouse.sln └── Move Mouse │ ├── Actions │ ├── ActionBase.cs │ ├── ActivateApplicationAction.cs │ ├── ClickMouseAction.cs │ ├── CommandAction.cs │ ├── MoveMouseCursorAction.cs │ ├── PositionMouseCursorAction.cs │ ├── ScriptAction.cs │ ├── ScrollMouseAction.cs │ └── SleepAction.cs │ ├── App.config │ ├── App.xaml │ ├── App.xaml.cs │ ├── Classes │ ├── Arc.cs │ ├── Blackout.cs │ ├── Settings.cs │ ├── Theme.cs │ └── Update.cs │ ├── Converters │ ├── ApplicationSearchModeToBoolConverter.cs │ ├── BoolToIndexConverter.cs │ ├── CursorDirectionToStealthModeBoolConverter.cs │ ├── DoubleDividedByTwoConverter.cs │ ├── MouseStateIsSleepingConverter.cs │ ├── ObjectToTypeStringConverter.cs │ ├── ProgressToAngleConverter.cs │ ├── StartupTaskStateToBoolConverter.cs │ └── StringToFileExistsConverter.cs │ ├── FodyWeavers.xml │ ├── FodyWeavers.xsd │ ├── Jobs │ ├── CheckForUpdateJob.cs │ ├── RefreshSchedulesJob.cs │ ├── ResetUpdateStatusJob.cs │ ├── ScheduleArrivedJob.cs │ └── UpdateThemeJob.cs │ ├── Move Mouse.csproj │ ├── Move Mouse.csproj.user │ ├── Properties │ ├── Annotations.cs │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings │ ├── Resources │ ├── ActionsAdd_Dark_64x64.png │ ├── ActionsAdd_Light_64x64.png │ ├── ActionsRemove_Dark_64x64.png │ ├── ActionsRemove_Light_64x64.png │ ├── Actions_Dark_64x64.png │ ├── Actions_Light_64x64.png │ ├── ActivateWindowAction_Dark_128x128.png │ ├── ActivateWindowAction_Light_128x128.png │ ├── Appearance_Dark_64x64.png │ ├── Appearance_Light_64x64.png │ ├── Behaviour_Dark_64x64.png │ ├── Behaviour_Light_64x64.png │ ├── ClickMouseAction_Dark_128x128.png │ ├── ClickMouseAction_Light_128x128.png │ ├── Close_Dark_64x64.png │ ├── Close_Light_64x64.png │ ├── CommandAction_Dark_128x128.png │ ├── CommandAction_Light_128x128.png │ ├── Console_Dark_64x64.png │ ├── Console_Light_64x64.png │ ├── Copyright_Dark_64x64.png │ ├── Copyright_Light_64x64.png │ ├── DownArrow_Dark_64x64.png │ ├── DownArrow_Light_64x64.png │ ├── FileOpen_Dark_64x64.png │ ├── FileOpen_Light_64x64.png │ ├── GitHub_Dark_64x64.png │ ├── GitHub_Light_64x64.png │ ├── Help_Dark_64x64.png │ ├── Help_Light_64x64.png │ ├── Home_Dark_64x64.png │ ├── Home_Light_64x64.png │ ├── Information_Dark_64x64.png │ ├── Information_Light_64x64.png │ ├── Mail_Dark_64x64.png │ ├── Mail_Light_64x64.png │ ├── Moon_Dark_128x128.png │ ├── Moon_Light_128x128.png │ ├── Mouse-Pause.ico │ ├── Mouse-Play.ico │ ├── Mouse-Sleep.ico │ ├── Mouse-Stop.ico │ ├── Mouse-SystemTray-Active.ico │ ├── Mouse-SystemTray-Battery.ico │ ├── Mouse-SystemTray-Execute.ico │ ├── Mouse-SystemTray-Pause.ico │ ├── Mouse-SystemTray-Sleep.ico │ ├── Mouse.ico │ ├── MouseClosedEyes_128x128.png │ ├── MoveMouseCursorAction_Dark_128x128.png │ ├── MoveMouseCursorAction_Light_128x128.png │ ├── PayPal_Dark_64x64.png │ ├── PayPal_Light_64x64.png │ ├── PositionMouseCursorAction_Dark_128x128.png │ ├── PositionMouseCursorAction_Light_128x128.png │ ├── Refresh_Dark_64x64.png │ ├── Refresh_Light_64x64.png │ ├── Schedules_Dark_64x64.png │ ├── Schedules_Light_64x64.png │ ├── ScriptAction_Dark_128x128.png │ ├── ScriptAction_Light_128x128.png │ ├── ScrollMouseWheelAction_Dark_128x128.png │ ├── ScrollMouseWheelAction_Light_128x128.png │ ├── Settings_Dark_64x64.png │ ├── Settings_Light_64x64.png │ ├── SleepAction_Dark_128x128.png │ ├── SleepAction_Light_128x128.png │ ├── Twitter_Dark_64x64.png │ ├── Twitter_Light_64x64.png │ ├── UpArrow_Dark_64x64.png │ ├── UpArrow_Light_64x64.png │ ├── Volume_Dark_64x64.png │ ├── Volume_Light_64x64.png │ ├── Warning_128x128.png │ └── Windows_Title.png │ ├── Schedules │ ├── AdvancedSchedule.cs │ ├── ScheduleBase.cs │ └── SimpleSchedule.cs │ ├── StaticCode.cs │ ├── Styles │ ├── Colours.xaml │ └── Controls.xaml │ ├── Themes │ ├── ChristmasTheme.png │ ├── Themes.xml │ └── Themes_Test.xml │ ├── Utilities │ └── RelayCommand.cs │ ├── ViewModels │ ├── MouseWindowViewModel.cs │ └── SettingsWindowViewModel.cs │ ├── Views │ ├── MouseWindow.xaml │ ├── MouseWindow.xaml.cs │ ├── SettingsWindow.xaml │ └── SettingsWindow.xaml.cs │ ├── Wrappers │ ├── MouseCursorWrapper.cs │ └── NativeMethods.cs │ ├── app.manifest │ └── packages.config ├── Images ├── blackout.png ├── example_activatepreviouswindow_appearance.png ├── example_activatepreviouswindow_behaviour.png ├── example_activatepreviouswindow_capture.png ├── example_activatepreviouswindow_restore.png ├── example_wheninactive_activate.png ├── example_wheninactive_addaction.png ├── example_wheninactive_appearance.png ├── example_wheninactive_behaviour.png ├── example_wheninactive_click.png ├── example_wheninactive_position.png ├── example_workinghours_grid.png ├── example_workinghours_settings.png ├── mm_blue.png ├── mm_green.png ├── mm_hover.png ├── mm_orange.png ├── mm_purple.png ├── mm_red.png ├── mm_yellow.png ├── schedule_advanced.png ├── schedule_simple.png ├── settings_actioncontrols.png ├── settings_actionpanel.png ├── settings_actionproperties.png ├── settings_addaction.png ├── settings_appearance.png ├── settings_behaviour.png ├── settings_blackouts.png ├── settings_schedules.png ├── systemtray_notification.png └── watch_idle_time.png ├── LICENSE ├── Mice ├── Bernard01.jpg ├── Bianca01.jpg ├── Brain01.jpg ├── Danger01.png ├── Despereaux01.jpg ├── FievelMousekewitz01.png ├── FingerMouse01.jpg ├── GadgetHackwrench01.png ├── Itchy01.png ├── JaqGus01.jpg ├── Jerry01.png ├── Mice.xml ├── Mickey01.jpg ├── Mighty01.jpg ├── Minnie01.jpg ├── MontereyJack01.jpg ├── Pikachu01.jpg ├── Pinky01.jpg ├── PixieDixie01.jpg ├── Roquefort01.gif ├── Speedy01.jpg ├── StuartLittle01.jpg └── Timothy01.JPG ├── README.md ├── Themes ├── ChristmasTheme.png ├── HalloweenTheme.png ├── StDavidsDayTheme.png ├── Themes.xml ├── Themes_Test.xml └── UsIndependenceTheme.png ├── Update_3x.xml ├── Update_4x.xml └── Utils ├── Activate Window.ps1 ├── Capture Active Window.ps1 └── Watch Idle TIme.ps1 /.gitignore: -------------------------------------------------------------------------------- 1 | 3x/.vs/ 2 | 3x/packages/ 3 | 3x/Move Mouse/bin/ 4 | 3x/Move Mouse/obj/ 5 | 4x/.vs/ 6 | 4x/packages/ 7 | 4x/Move Mouse/bin/ 8 | 4x/Move Mouse/obj/ 9 | 4x/UWP Package/ 10 | .vs/ -------------------------------------------------------------------------------- /3x/Move Mouse.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 14 4 | VisualStudioVersion = 14.0.25420.1 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Move Mouse", "Move Mouse\Move Mouse.csproj", "{5F138C5F-255A-4B0F-BFFD-7F49993571E7}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {5F138C5F-255A-4B0F-BFFD-7F49993571E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {5F138C5F-255A-4B0F-BFFD-7F49993571E7}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {5F138C5F-255A-4B0F-BFFD-7F49993571E7}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {5F138C5F-255A-4B0F-BFFD-7F49993571E7}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(TeamFoundationVersionControl) = preSolution 23 | SccNumberOfProjects = 2 24 | SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} 25 | SccTeamFoundationServer = https://tfs.codeplex.com/tfs/tfs08 26 | SccLocalPath0 = . 27 | SccProjectUniqueName1 = Move\u0020Mouse\\Move\u0020Mouse.csproj 28 | SccProjectName1 = Move\u0020Mouse 29 | SccLocalPath1 = Move\u0020Mouse 30 | EndGlobalSection 31 | EndGlobal 32 | -------------------------------------------------------------------------------- /3x/Move Mouse/Classes/CelebrityMouse.cs: -------------------------------------------------------------------------------- 1 | namespace Ellanet.Classes 2 | { 3 | public class CelebrityMouse 4 | { 5 | public string Name { get; set; } 6 | public string ImageName { get; set; } 7 | public string ToolTip { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /3x/Move Mouse/Classes/ScriptingLanguage.cs: -------------------------------------------------------------------------------- 1 |  2 | namespace Ellanet.Classes 3 | { 4 | class ScriptingLanguage 5 | { 6 | public string Name { get; set; } 7 | public string FileExtension { get; set; } 8 | public string ScriptEngine { get; set; } 9 | public string ScriptPrefixArguments { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /3x/Move Mouse/Events/BlackoutStatusChangedEventArgs.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Ellanet.Events 4 | { 5 | public class BlackoutStatusChangedEventArgs : EventArgs 6 | { 7 | public BlackoutStatus Status { get; internal set; } 8 | public TimeSpan StartTime { get; internal set; } 9 | public TimeSpan EndTime { get; internal set; } 10 | 11 | public enum BlackoutStatus 12 | { 13 | Active, 14 | Inactive 15 | } 16 | 17 | public BlackoutStatusChangedEventArgs(BlackoutStatus status, TimeSpan startTime, TimeSpan endTime) 18 | { 19 | Status = status; 20 | StartTime = startTime; 21 | EndTime = endTime; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /3x/Move Mouse/Events/HookKeyStatusChangedEventArgs.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Ellanet.Events 4 | { 5 | public class HookKeyStatusChangedEventArgs : EventArgs 6 | { 7 | public bool Enabled { get; internal set; } 8 | public System.Windows.Forms.Keys Key { get; internal set; } 9 | 10 | public HookKeyStatusChangedEventArgs(bool enabled, System.Windows.Forms.Keys key) 11 | { 12 | Enabled = enabled; 13 | Key = key; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /3x/Move Mouse/Events/NewVersionAvailableEventArgs.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Ellanet.Events 4 | { 5 | public class NewVersionAvailableEventArgs : EventArgs 6 | { 7 | public Version Version { get; internal set; } 8 | public DateTime Released { get; internal set; } 9 | public DateTime Advertised { get; internal set; } 10 | public string[] Features { get; internal set; } 11 | public string[] Fixes { get; internal set; } 12 | public string DownloadUrl { get; internal set; } 13 | 14 | public NewVersionAvailableEventArgs(Version version, DateTime released, DateTime advertised, string[] features, string[] fixes, string downloadUrl) 15 | { 16 | Version = version; 17 | Released = released; 18 | Advertised = advertised; 19 | Features = features; 20 | Fixes = fixes; 21 | DownloadUrl = downloadUrl; 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /3x/Move Mouse/Events/PowerLineStatusChangedEventArgs.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Ellanet.Events 4 | { 5 | public class PowerLineStatusChangedEventArgs: EventArgs 6 | { 7 | public PowerLineStatus Status { get; internal set; } 8 | 9 | public enum PowerLineStatus 10 | { 11 | Online, 12 | Offline, 13 | Unknown 14 | } 15 | 16 | public PowerLineStatusChangedEventArgs(PowerLineStatus status) 17 | { 18 | Status = status; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /3x/Move Mouse/Events/ScheduleArrivedEventArgs.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Ellanet.Events 4 | { 5 | public class ScheduleArrivedEventArgs : EventArgs 6 | { 7 | public ScheduleAction Action { get; internal set; } 8 | public TimeSpan Time { get; internal set; } 9 | 10 | public enum ScheduleAction 11 | { 12 | Start, 13 | Pause 14 | } 15 | 16 | public ScheduleArrivedEventArgs(ScheduleAction action, TimeSpan time) 17 | { 18 | Action = action; 19 | Time = time; 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /3x/Move Mouse/Forms/AddBlackoutForm.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Forms; 3 | 4 | namespace Ellanet.Forms 5 | { 6 | public partial class AddBlackoutForm : Form 7 | { 8 | public TimeSpan Start { get; internal set; } 9 | public TimeSpan End { get; internal set; } 10 | 11 | public AddBlackoutForm() : this(new TimeSpan(17, 0, 0), new TimeSpan(9, 0, 0)) 12 | { 13 | } 14 | 15 | public AddBlackoutForm(TimeSpan start, TimeSpan end) 16 | { 17 | InitializeComponent(); 18 | startHourNumericUpDown.Value = start.Hours; 19 | startMinuteNumericUpDown.Value = start.Minutes; 20 | startSecondNumericUpDown.Value = start.Seconds; 21 | endHourNumericUpDown.Value = end.Hours; 22 | endMinuteNumericUpDown.Value = end.Minutes; 23 | endSecondNumericUpDown.Value = end.Seconds; 24 | okButton.Click += okButton_Click; 25 | } 26 | 27 | private void okButton_Click(object sender, EventArgs e) 28 | { 29 | Start = new TimeSpan(Convert.ToInt32(startHourNumericUpDown.Value), Convert.ToInt32(startMinuteNumericUpDown.Value), Convert.ToInt32(startSecondNumericUpDown.Value)); 30 | End = new TimeSpan(Convert.ToInt32(endHourNumericUpDown.Value), Convert.ToInt32(endMinuteNumericUpDown.Value), Convert.ToInt32(endSecondNumericUpDown.Value)); 31 | DialogResult = DialogResult.OK; 32 | Close(); 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /3x/Move Mouse/Forms/AddBlackoutForm.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | -------------------------------------------------------------------------------- /3x/Move Mouse/Forms/AddScheduleForm.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Forms; 3 | 4 | namespace Ellanet.Forms 5 | { 6 | public partial class AddScheduleForm : Form 7 | { 8 | public TimeSpan Time { get; internal set; } 9 | public string Action { get; internal set; } 10 | 11 | public AddScheduleForm() : this(DateTime.Now.TimeOfDay, "Start") 12 | { 13 | } 14 | 15 | public AddScheduleForm(TimeSpan time, string action) 16 | { 17 | InitializeComponent(); 18 | hourNumericUpDown.Value = time.Hours; 19 | minuteNumericUpDown.Value = time.Minutes; 20 | secondNumericUpDown.Value = time.Seconds; 21 | 22 | if (!String.IsNullOrEmpty(action) && (actionComboBox.Items.Contains(action))) 23 | { 24 | actionComboBox.SelectedItem = action; 25 | } 26 | else 27 | { 28 | actionComboBox.SelectedIndex = 0; 29 | } 30 | 31 | okButton.Click += okButton_Click; 32 | } 33 | 34 | private void okButton_Click(object sender, EventArgs e) 35 | { 36 | Time = new TimeSpan(Convert.ToInt32(hourNumericUpDown.Value), Convert.ToInt32(minuteNumericUpDown.Value), Convert.ToInt32(secondNumericUpDown.Value)); 37 | Action = actionComboBox.SelectedItem.ToString(); 38 | DialogResult = DialogResult.OK; 39 | Close(); 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /3x/Move Mouse/Forms/AddScheduleForm.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | -------------------------------------------------------------------------------- /3x/Move Mouse/Forms/MouseForm.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | -------------------------------------------------------------------------------- /3x/Move Mouse/Forms/PowerShellExecutionPolicyForm.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics; 3 | using System.Windows.Forms; 4 | 5 | namespace Ellanet.Forms 6 | { 7 | public partial class PowerShellExecutionPolicyForm : Form 8 | { 9 | public PowerShellExecutionPolicyForm() 10 | { 11 | InitializeComponent(); 12 | okButton.Click += okButton_Click; 13 | policyComboBox.SelectedIndex = 0; 14 | } 15 | 16 | void okButton_Click(object sender, EventArgs e) 17 | { 18 | var powershell = new Process 19 | { 20 | StartInfo = 21 | { 22 | FileName = Environment.ExpandEnvironmentVariables(@"%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe"), 23 | Arguments = String.Format("-Command \"Set-ExecutionPolicy {0}\"", policyComboBox.SelectedItem), 24 | Verb = "runas", 25 | WindowStyle = ProcessWindowStyle.Normal 26 | } 27 | }; 28 | powershell.Start(); 29 | Close(); 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /3x/Move Mouse/Forms/PowerShellExecutionPolicyForm.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | -------------------------------------------------------------------------------- /3x/Move Mouse/Forms/SystemTrayIcon.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace Ellanet.Forms 2 | { 3 | partial class SystemTrayIcon 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.components = new System.ComponentModel.Container(); 32 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 33 | this.Text = "SystemTrayIcon"; 34 | } 35 | 36 | #endregion 37 | } 38 | } -------------------------------------------------------------------------------- /3x/Move Mouse/Move Mouse.csproj.DotSettings: -------------------------------------------------------------------------------- 1 |  2 | No -------------------------------------------------------------------------------- /3x/Move Mouse/Move Mouse.csproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | /EnableToolWindowStyle 5 | 6 | -------------------------------------------------------------------------------- /3x/Move Mouse/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics; 3 | using System.IO; 4 | using System.Threading; 5 | using System.Windows.Forms; 6 | using Ellanet.Forms; 7 | using Microsoft.VisualBasic; 8 | 9 | namespace Ellanet 10 | { 11 | internal class Program 12 | { 13 | [STAThread] 14 | private static void Main(string[] args) 15 | { 16 | if (!Debugger.IsAttached) 17 | { 18 | AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; 19 | Application.ThreadException += Application_ThreadException; 20 | } 21 | 22 | try 23 | { 24 | bool createdNew; 25 | 26 | using (new Mutex(true, "d45b30b9-9e65-4d33-a2bc-d6ba6a7500bd", out createdNew)) 27 | { 28 | if (createdNew) 29 | { 30 | if ((args != null) && (args.Length > 0)) 31 | { 32 | foreach (string arg in args) 33 | { 34 | if (arg.StartsWith("/WorkingDirectory:", StringComparison.CurrentCultureIgnoreCase)) 35 | { 36 | string alternateWd = arg.Substring(18); 37 | 38 | if (!String.IsNullOrEmpty(alternateWd) && Directory.Exists(alternateWd)) 39 | { 40 | StaticCode.WorkingDirectory = alternateWd; 41 | } 42 | } 43 | else if (arg.StartsWith("/EnableToolWindowStyle", StringComparison.CurrentCultureIgnoreCase)) 44 | { 45 | StaticCode.EnableToolWindowStyle = true; 46 | } 47 | } 48 | } 49 | 50 | Application.EnableVisualStyles(); 51 | Application.DoEvents(); 52 | Application.Run(new SystemTrayIcon()); 53 | } 54 | else 55 | { 56 | foreach (var process in Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName)) 57 | { 58 | if ((process.Id != Process.GetCurrentProcess().Id) && !String.IsNullOrEmpty(process.MainWindowTitle)) 59 | { 60 | Interaction.AppActivate(process.MainWindowTitle); 61 | break; 62 | } 63 | } 64 | } 65 | } 66 | } 67 | catch (Exception ex) 68 | { 69 | CloseMoveMouseWithException(ex.Message); 70 | } 71 | } 72 | 73 | private static void Application_ThreadException(object sender, ThreadExceptionEventArgs e) 74 | { 75 | CloseMoveMouseWithException(e.Exception.Message); 76 | } 77 | 78 | private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) 79 | { 80 | CloseMoveMouseWithException(e.ExceptionObject.ToString()); 81 | } 82 | 83 | private static void CloseMoveMouseWithException(string exception) 84 | { 85 | MessageBox.Show(exception, "Move Mouse - Generic Exception", MessageBoxButtons.OK, MessageBoxIcon.Error); 86 | Application.Exit(); 87 | } 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /3x/Move Mouse/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("Move Mouse")] 9 | [assembly: AssemblyDescription("Automatic mouse activity generator. Developed by Steve Williams.")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("Ellanet Ltd")] 12 | [assembly: AssemblyProduct("Move Mouse")] 13 | [assembly: AssemblyCopyright("Copyright © Steve Williams 2010")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("8115df1f-60a4-4575-b6ba-5c3c17484d16")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | [assembly: AssemblyVersion("3.6.0.*")] 33 | [assembly: AssemblyFileVersion("3.6.0.0")] 34 | -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/..svnbridge/Contact_Image.png: -------------------------------------------------------------------------------- 1 | svn:mime-typeapplication/octet-stream -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/..svnbridge/EasterEgg.png: -------------------------------------------------------------------------------- 1 | svn:mime-typeapplication/octet-stream -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/..svnbridge/Help_Image.png: -------------------------------------------------------------------------------- 1 | svn:mime-typeapplication/octet-stream -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/..svnbridge/Mouse-Pause.ico: -------------------------------------------------------------------------------- 1 | svn:mime-typeapplication/octet-stream -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/..svnbridge/Mouse-Play.ico: -------------------------------------------------------------------------------- 1 | svn:mime-typeapplication/octet-stream -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/..svnbridge/Mouse-Stop.ico: -------------------------------------------------------------------------------- 1 | svn:mime-typeapplication/octet-stream -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/..svnbridge/MouseHole_Image.gif: -------------------------------------------------------------------------------- 1 | svn:mime-typeapplication/octet-stream -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/..svnbridge/Mouse_Icon.ico: -------------------------------------------------------------------------------- 1 | svn:mime-typeapplication/octet-stream -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/..svnbridge/Mouse_Image.png: -------------------------------------------------------------------------------- 1 | svn:mime-typeapplication/octet-stream -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/..svnbridge/PayPal_Image.png: -------------------------------------------------------------------------------- 1 | svn:mime-typeapplication/octet-stream -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/..svnbridge/ScriptEditor_Icon.ico: -------------------------------------------------------------------------------- 1 | svn:mime-typeapplication/octet-stream -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/..svnbridge/Twitter_logo_blue.png: -------------------------------------------------------------------------------- 1 | svn:mime-typeapplication/octet-stream -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/..svnbridge/codeplex.png: -------------------------------------------------------------------------------- 1 | svn:mime-typeapplication/octet-stream -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Contact_Image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/3x/Move Mouse/Resources/Contact_Image.png -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/EasterEgg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/3x/Move Mouse/Resources/EasterEgg.png -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Help_Image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/3x/Move Mouse/Resources/Help_Image.png -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mice/..svnbridge/Bernard01.jpg: -------------------------------------------------------------------------------- 1 | svn:mime-typeapplication/octet-stream -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mice/..svnbridge/Bianca01.jpg: -------------------------------------------------------------------------------- 1 | svn:mime-typeapplication/octet-stream -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mice/..svnbridge/Brain01.jpg: -------------------------------------------------------------------------------- 1 | svn:mime-typeapplication/octet-stream -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mice/..svnbridge/Danger01.png: -------------------------------------------------------------------------------- 1 | svn:mime-typeapplication/octet-stream -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mice/..svnbridge/Despereaux01.jpg: -------------------------------------------------------------------------------- 1 | svn:mime-typeapplication/octet-stream -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mice/..svnbridge/FievelMousekewitz01.png: -------------------------------------------------------------------------------- 1 | svn:mime-typeapplication/octet-stream -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mice/..svnbridge/FingerMouse01.jpg: -------------------------------------------------------------------------------- 1 | svn:mime-typeapplication/octet-stream -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mice/..svnbridge/GadgetHackwrench01.png: -------------------------------------------------------------------------------- 1 | svn:mime-typeapplication/octet-stream -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mice/..svnbridge/Itchy01.png: -------------------------------------------------------------------------------- 1 | svn:mime-typeapplication/octet-stream -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mice/..svnbridge/JaqGus01.jpg: -------------------------------------------------------------------------------- 1 | svn:mime-typeapplication/octet-stream -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mice/..svnbridge/Jerry01.png: -------------------------------------------------------------------------------- 1 | svn:mime-typeapplication/octet-stream -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mice/..svnbridge/Mickey01.jpg: -------------------------------------------------------------------------------- 1 | svn:mime-typeapplication/octet-stream -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mice/..svnbridge/Mighty01.jpg: -------------------------------------------------------------------------------- 1 | svn:mime-typeapplication/octet-stream -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mice/..svnbridge/Minnie01.jpg: -------------------------------------------------------------------------------- 1 | svn:mime-typeapplication/octet-stream -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mice/..svnbridge/MontereyJack01.jpg: -------------------------------------------------------------------------------- 1 | svn:mime-typeapplication/octet-stream -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mice/..svnbridge/Pikachu01.jpg: -------------------------------------------------------------------------------- 1 | svn:mime-typeapplication/octet-stream -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mice/..svnbridge/Pinky01.jpg: -------------------------------------------------------------------------------- 1 | svn:mime-typeapplication/octet-stream -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mice/..svnbridge/PixieDixie01.jpg: -------------------------------------------------------------------------------- 1 | svn:mime-typeapplication/octet-stream -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mice/..svnbridge/Roquefort01.gif: -------------------------------------------------------------------------------- 1 | svn:mime-typeapplication/octet-stream -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mice/..svnbridge/Speedy01.jpg: -------------------------------------------------------------------------------- 1 | svn:mime-typeapplication/octet-stream -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mice/..svnbridge/StuartLittle01.jpg: -------------------------------------------------------------------------------- 1 | svn:mime-typeapplication/octet-stream -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mice/..svnbridge/Timothy01.JPG: -------------------------------------------------------------------------------- 1 | svn:mime-typeapplication/octet-stream -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mice/Bernard01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/3x/Move Mouse/Resources/Mice/Bernard01.jpg -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mice/Bianca01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/3x/Move Mouse/Resources/Mice/Bianca01.jpg -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mice/Brain01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/3x/Move Mouse/Resources/Mice/Brain01.jpg -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mice/Danger01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/3x/Move Mouse/Resources/Mice/Danger01.png -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mice/Despereaux01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/3x/Move Mouse/Resources/Mice/Despereaux01.jpg -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mice/FievelMousekewitz01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/3x/Move Mouse/Resources/Mice/FievelMousekewitz01.png -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mice/FingerMouse01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/3x/Move Mouse/Resources/Mice/FingerMouse01.jpg -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mice/GadgetHackwrench01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/3x/Move Mouse/Resources/Mice/GadgetHackwrench01.png -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mice/Itchy01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/3x/Move Mouse/Resources/Mice/Itchy01.png -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mice/JaqGus01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/3x/Move Mouse/Resources/Mice/JaqGus01.jpg -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mice/Jerry01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/3x/Move Mouse/Resources/Mice/Jerry01.png -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mice/Mice.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | Bernard 4 | Bernard01.jpg 5 | 6 | 7 | 8 | Bianca 9 | Bianca01.jpg 10 | 11 | 12 | 13 | Brain 14 | Brain01.jpg 15 | 16 | 17 | 18 | Danger Mouse 19 | Danger01.png 20 | 21 | 22 | 23 | Despereaux 24 | Despereaux01.jpg 25 | 26 | 27 | 28 | Fievel Mousekewitz 29 | FievelMousekewitz01.png 30 | 31 | 32 | 33 | Finger Mouse 34 | FingerMouse01.jpg 35 | 36 | 37 | 38 | Gadget Hackwrench 39 | GadgetHackwrench01.png 40 | 41 | 42 | 43 | Itchy 44 | Itchy01.png 45 | 46 | 47 | 48 | Jaq & Gus 49 | JaqGus01.jpg 50 | 51 | 52 | 53 | Jerry 54 | Jerry01.png 55 | 56 | 57 | 58 | Mickey 59 | Mickey01.jpg 60 | 61 | 62 | 63 | Mighty Mouse 64 | Mighty01.jpg 65 | 66 | 67 | 68 | Minnie 69 | Minnie01.jpg 70 | 71 | 72 | 73 | Monterey Jack 74 | MontereyJack01.jpg 75 | 76 | 77 | 78 | Pikachu 79 | Pikachu01.jpg 80 | 81 | 82 | 83 | Pinky 84 | Pinky01.jpg 85 | 86 | 87 | 88 | Pixie & Dixie 89 | PixieDixie01.jpg 90 | 91 | 92 | 93 | Roquefort 94 | Roquefort01.gif 95 | 96 | 97 | 98 | Speedy Gonzales 99 | Speedy01.jpg 100 | 101 | 102 | 103 | Stuart Little 104 | StuartLittle01.jpg 105 | 106 | 107 | 108 | Timothy 109 | Timothy01.JPG 110 | 111 | 112 | -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mice/Mickey01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/3x/Move Mouse/Resources/Mice/Mickey01.jpg -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mice/Mighty01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/3x/Move Mouse/Resources/Mice/Mighty01.jpg -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mice/Minnie01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/3x/Move Mouse/Resources/Mice/Minnie01.jpg -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mice/MontereyJack01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/3x/Move Mouse/Resources/Mice/MontereyJack01.jpg -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mice/Pikachu01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/3x/Move Mouse/Resources/Mice/Pikachu01.jpg -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mice/Pinky01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/3x/Move Mouse/Resources/Mice/Pinky01.jpg -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mice/PixieDixie01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/3x/Move Mouse/Resources/Mice/PixieDixie01.jpg -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mice/Roquefort01.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/3x/Move Mouse/Resources/Mice/Roquefort01.gif -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mice/Speedy01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/3x/Move Mouse/Resources/Mice/Speedy01.jpg -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mice/StuartLittle01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/3x/Move Mouse/Resources/Mice/StuartLittle01.jpg -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mice/Timothy01.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/3x/Move Mouse/Resources/Mice/Timothy01.JPG -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mouse-Pause.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/3x/Move Mouse/Resources/Mouse-Pause.ico -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mouse-Play.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/3x/Move Mouse/Resources/Mouse-Play.ico -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mouse-Stop.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/3x/Move Mouse/Resources/Mouse-Stop.ico -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/MouseHole_Image.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/3x/Move Mouse/Resources/MouseHole_Image.gif -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mouse_Icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/3x/Move Mouse/Resources/Mouse_Icon.ico -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Mouse_Image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/3x/Move Mouse/Resources/Mouse_Image.png -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/PayPal_Image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/3x/Move Mouse/Resources/PayPal_Image.png -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/ScriptEditor_Icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/3x/Move Mouse/Resources/ScriptEditor_Icon.ico -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/Twitter_logo_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/3x/Move Mouse/Resources/Twitter_logo_blue.png -------------------------------------------------------------------------------- /3x/Move Mouse/Resources/codeplex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/3x/Move Mouse/Resources/codeplex.png -------------------------------------------------------------------------------- /3x/Move Mouse/StaticCode.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Ellanet 4 | { 5 | class StaticCode 6 | { 7 | public static string WorkingDirectory = Environment.ExpandEnvironmentVariables(@"%AppData%\Ellanet\Move Mouse"); 8 | public static bool EnableToolWindowStyle = false; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /3x/Move Mouse/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /4x/Libraries/Windows.winmd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Libraries/Windows.winmd -------------------------------------------------------------------------------- /4x/Move Mouse.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 14 4 | VisualStudioVersion = 14.0.25420.1 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Move Mouse", "Move Mouse\Move Mouse.csproj", "{D1730F60-55C4-4D12-A759-FBC0AC1D5B0F}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Debug|ARM = Debug|ARM 12 | Debug|x64 = Debug|x64 13 | Debug|x86 = Debug|x86 14 | Release|Any CPU = Release|Any CPU 15 | Release|ARM = Release|ARM 16 | Release|x64 = Release|x64 17 | Release|x86 = Release|x86 18 | EndGlobalSection 19 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 20 | {D1730F60-55C4-4D12-A759-FBC0AC1D5B0F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 21 | {D1730F60-55C4-4D12-A759-FBC0AC1D5B0F}.Debug|Any CPU.Build.0 = Debug|Any CPU 22 | {D1730F60-55C4-4D12-A759-FBC0AC1D5B0F}.Debug|ARM.ActiveCfg = Debug|Any CPU 23 | {D1730F60-55C4-4D12-A759-FBC0AC1D5B0F}.Debug|ARM.Build.0 = Debug|Any CPU 24 | {D1730F60-55C4-4D12-A759-FBC0AC1D5B0F}.Debug|x64.ActiveCfg = Debug|Any CPU 25 | {D1730F60-55C4-4D12-A759-FBC0AC1D5B0F}.Debug|x64.Build.0 = Debug|Any CPU 26 | {D1730F60-55C4-4D12-A759-FBC0AC1D5B0F}.Debug|x86.ActiveCfg = Debug|Any CPU 27 | {D1730F60-55C4-4D12-A759-FBC0AC1D5B0F}.Debug|x86.Build.0 = Debug|Any CPU 28 | {D1730F60-55C4-4D12-A759-FBC0AC1D5B0F}.Release|Any CPU.ActiveCfg = Release|Any CPU 29 | {D1730F60-55C4-4D12-A759-FBC0AC1D5B0F}.Release|Any CPU.Build.0 = Release|Any CPU 30 | {D1730F60-55C4-4D12-A759-FBC0AC1D5B0F}.Release|ARM.ActiveCfg = Release|Any CPU 31 | {D1730F60-55C4-4D12-A759-FBC0AC1D5B0F}.Release|ARM.Build.0 = Release|Any CPU 32 | {D1730F60-55C4-4D12-A759-FBC0AC1D5B0F}.Release|x64.ActiveCfg = Release|Any CPU 33 | {D1730F60-55C4-4D12-A759-FBC0AC1D5B0F}.Release|x64.Build.0 = Release|Any CPU 34 | {D1730F60-55C4-4D12-A759-FBC0AC1D5B0F}.Release|x86.ActiveCfg = Release|Any CPU 35 | {D1730F60-55C4-4D12-A759-FBC0AC1D5B0F}.Release|x86.Build.0 = Release|Any CPU 36 | {11A78D8F-5EEE-4FC6-80BA-16F063EB518F}.Debug|Any CPU.ActiveCfg = Debug|x86 37 | {11A78D8F-5EEE-4FC6-80BA-16F063EB518F}.Debug|ARM.ActiveCfg = Debug|ARM 38 | {11A78D8F-5EEE-4FC6-80BA-16F063EB518F}.Debug|ARM.Build.0 = Debug|ARM 39 | {11A78D8F-5EEE-4FC6-80BA-16F063EB518F}.Debug|ARM.Deploy.0 = Debug|ARM 40 | {11A78D8F-5EEE-4FC6-80BA-16F063EB518F}.Debug|x64.ActiveCfg = Debug|x64 41 | {11A78D8F-5EEE-4FC6-80BA-16F063EB518F}.Debug|x64.Build.0 = Debug|x64 42 | {11A78D8F-5EEE-4FC6-80BA-16F063EB518F}.Debug|x64.Deploy.0 = Debug|x64 43 | {11A78D8F-5EEE-4FC6-80BA-16F063EB518F}.Debug|x86.ActiveCfg = Debug|x86 44 | {11A78D8F-5EEE-4FC6-80BA-16F063EB518F}.Debug|x86.Build.0 = Debug|x86 45 | {11A78D8F-5EEE-4FC6-80BA-16F063EB518F}.Debug|x86.Deploy.0 = Debug|x86 46 | {11A78D8F-5EEE-4FC6-80BA-16F063EB518F}.Release|Any CPU.ActiveCfg = Release|x86 47 | {11A78D8F-5EEE-4FC6-80BA-16F063EB518F}.Release|ARM.ActiveCfg = Release|ARM 48 | {11A78D8F-5EEE-4FC6-80BA-16F063EB518F}.Release|ARM.Build.0 = Release|ARM 49 | {11A78D8F-5EEE-4FC6-80BA-16F063EB518F}.Release|ARM.Deploy.0 = Release|ARM 50 | {11A78D8F-5EEE-4FC6-80BA-16F063EB518F}.Release|x64.ActiveCfg = Release|x64 51 | {11A78D8F-5EEE-4FC6-80BA-16F063EB518F}.Release|x64.Build.0 = Release|x64 52 | {11A78D8F-5EEE-4FC6-80BA-16F063EB518F}.Release|x64.Deploy.0 = Release|x64 53 | {11A78D8F-5EEE-4FC6-80BA-16F063EB518F}.Release|x86.ActiveCfg = Release|x86 54 | {11A78D8F-5EEE-4FC6-80BA-16F063EB518F}.Release|x86.Build.0 = Release|x86 55 | {11A78D8F-5EEE-4FC6-80BA-16F063EB518F}.Release|x86.Deploy.0 = Release|x86 56 | EndGlobalSection 57 | GlobalSection(SolutionProperties) = preSolution 58 | HideSolutionNode = FALSE 59 | EndGlobalSection 60 | EndGlobal 61 | -------------------------------------------------------------------------------- /4x/Move Mouse/Actions/ActionBase.cs: -------------------------------------------------------------------------------- 1 | using ellabi.Annotations; 2 | using ellabi.Utilities; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.ComponentModel; 6 | using System.Linq; 7 | using System.Runtime.CompilerServices; 8 | using System.Xml.Serialization; 9 | 10 | namespace ellabi.Actions 11 | { 12 | public abstract class ActionBase : INotifyPropertyChanged 13 | { 14 | public event PropertyChangedEventHandler PropertyChanged; 15 | 16 | private string _name; 17 | private bool _isEnabled; 18 | private bool _repeat; 19 | private EventTrigger _trigger; 20 | private IntervalRepeatMode _repeatMode; 21 | private int _intervalThrottle; 22 | private int _intervalExecutionCount; 23 | private bool _interruptsIdleTime; 24 | 25 | public enum EventTrigger 26 | { 27 | Start, 28 | Interval, 29 | Stop 30 | } 31 | 32 | public enum IntervalRepeatMode 33 | { 34 | Forever, 35 | Throttle 36 | } 37 | 38 | public abstract bool IsValid { get; } 39 | 40 | public Guid Id { get; set; } 41 | 42 | public string Name 43 | { 44 | get => _name; 45 | set 46 | { 47 | _name = String.IsNullOrWhiteSpace(value) ? null : value; 48 | OnPropertyChanged(); 49 | } 50 | } 51 | 52 | public bool IsEnabled 53 | { 54 | get => _isEnabled; 55 | set 56 | { 57 | _isEnabled = value; 58 | OnPropertyChanged(); 59 | } 60 | } 61 | 62 | public bool Repeat 63 | { 64 | get => _repeat; 65 | set 66 | { 67 | _repeat = value; 68 | OnPropertyChanged(); 69 | } 70 | } 71 | 72 | [XmlIgnore] 73 | public RelayCommand ExecuteCommand { get; set; } 74 | 75 | public EventTrigger Trigger 76 | { 77 | get => _trigger; 78 | set 79 | { 80 | _trigger = value; 81 | OnPropertyChanged(); 82 | } 83 | } 84 | 85 | public IEnumerable EventTriggerValues => Enum.GetValues(typeof(EventTrigger)).Cast(); 86 | 87 | public IntervalRepeatMode RepeatMode 88 | { 89 | get => _repeatMode; 90 | set 91 | { 92 | _repeatMode = value; 93 | OnPropertyChanged(); 94 | } 95 | } 96 | 97 | public IEnumerable IntervalRepeatModeValues => Enum.GetValues(typeof(IntervalRepeatMode)).Cast(); 98 | 99 | public int IntervalThrottle 100 | { 101 | get => _intervalThrottle; 102 | set 103 | { 104 | _intervalThrottle = value; 105 | OnPropertyChanged(); 106 | } 107 | } 108 | 109 | [XmlIgnore] 110 | public int IntervalExecutionCount 111 | { 112 | get => _intervalExecutionCount; 113 | set 114 | { 115 | _intervalExecutionCount = value; 116 | OnPropertyChanged(); 117 | } 118 | } 119 | 120 | [XmlIgnore] 121 | public bool InterruptsIdleTime 122 | { 123 | get => _interruptsIdleTime; 124 | set 125 | { 126 | _interruptsIdleTime = value; 127 | OnPropertyChanged(); 128 | } 129 | } 130 | 131 | protected ActionBase() 132 | { 133 | Id = Guid.NewGuid(); 134 | _isEnabled = true; 135 | _repeat = true; 136 | _trigger = EventTrigger.Interval; 137 | _repeatMode = IntervalRepeatMode.Forever; 138 | _intervalThrottle = 1; 139 | ExecuteCommand = new RelayCommand(param => Execute(), param => CanExecute()); 140 | } 141 | 142 | public abstract bool CanExecute(); 143 | 144 | public abstract void Execute(); 145 | 146 | public abstract override string ToString(); 147 | 148 | [NotifyPropertyChangedInvocator] 149 | protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) 150 | { 151 | try 152 | { 153 | PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); 154 | } 155 | catch (Exception ex) 156 | { 157 | StaticCode.Logger?.Here().Error(ex.Message); 158 | } 159 | } 160 | } 161 | } -------------------------------------------------------------------------------- /4x/Move Mouse/Actions/ClickMouseAction.cs: -------------------------------------------------------------------------------- 1 | using ellabi.Wrappers; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Threading; 6 | 7 | namespace ellabi.Actions 8 | { 9 | public class ClickMouseAction : ActionBase 10 | { 11 | private MouseButton _button; 12 | private bool _hold; 13 | private double _holdInterval; 14 | 15 | public enum MouseButton 16 | { 17 | Left, 18 | Middle, 19 | Right 20 | } 21 | 22 | public IEnumerable MouseButtonValues => Enum.GetValues(typeof(MouseButton)).Cast(); 23 | 24 | public override bool IsValid => true; 25 | 26 | public MouseButton Button 27 | { 28 | get => _button; 29 | set 30 | { 31 | _button = value; 32 | OnPropertyChanged(); 33 | } 34 | } 35 | 36 | public bool Hold 37 | { 38 | get => _hold; 39 | set 40 | { 41 | _hold = value; 42 | OnPropertyChanged(); 43 | } 44 | } 45 | 46 | public double HoldInterval 47 | { 48 | get => _holdInterval; 49 | set 50 | { 51 | _holdInterval = value; 52 | OnPropertyChanged(); 53 | } 54 | } 55 | 56 | public ClickMouseAction() 57 | { 58 | _button = MouseButton.Left; 59 | InterruptsIdleTime = true; 60 | } 61 | 62 | public override bool CanExecute() 63 | { 64 | return IsValid; 65 | } 66 | 67 | public override void Execute() 68 | { 69 | try 70 | { 71 | StaticCode.Logger?.Here().Information(ToString()); 72 | 73 | switch (_button) 74 | { 75 | case MouseButton.Left: 76 | NativeMethods.mouse_event((int)NativeMethods.MouseEventFlags.LEFTDOWN, 0, 0, 0, 0); 77 | break; 78 | case MouseButton.Middle: 79 | NativeMethods.mouse_event((int)NativeMethods.MouseEventFlags.MIDDLEDOWN, 0, 0, 0, 0); 80 | break; 81 | case MouseButton.Right: 82 | NativeMethods.mouse_event((int)NativeMethods.MouseEventFlags.RIGHTDOWN, 0, 0, 0, 0); 83 | break; 84 | //case MouseButton.WheelUp: 85 | // NativeMethods.mouse_event((int)NativeMethods.MouseEventFlags.WHEEL, 0, 0, Distance, 0); 86 | // break; 87 | } 88 | 89 | if (Hold) 90 | { 91 | Thread.Sleep(Convert.ToInt32(1000 * HoldInterval)); 92 | } 93 | 94 | switch (_button) 95 | { 96 | case MouseButton.Left: 97 | NativeMethods.mouse_event((int)NativeMethods.MouseEventFlags.LEFTUP, 0, 0, 0, 0); 98 | break; 99 | case MouseButton.Middle: 100 | NativeMethods.mouse_event((int)NativeMethods.MouseEventFlags.MIDDLEUP, 0, 0, 0, 0); 101 | break; 102 | case MouseButton.Right: 103 | NativeMethods.mouse_event((int)NativeMethods.MouseEventFlags.RIGHTUP, 0, 0, 0, 0); 104 | break; 105 | } 106 | } 107 | catch (Exception ex) 108 | { 109 | StaticCode.Logger?.Here().Error(ex.Message); 110 | } 111 | } 112 | 113 | public override string ToString() 114 | { 115 | return $"{this.GetType().Name} | Name = {Name} | Button = {Button} | Hold = {Hold} | HoldInterval = {HoldInterval} | Trigger = {Trigger} | Repeat = {Repeat} | RepeatMode = {RepeatMode} | IntervalThrottle = {IntervalThrottle} | IntervalExecutionCount = {IntervalExecutionCount} | InterruptsIdleTime = {InterruptsIdleTime}"; 116 | } 117 | } 118 | } -------------------------------------------------------------------------------- /4x/Move Mouse/Actions/CommandAction.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics; 3 | using System.IO; 4 | 5 | namespace ellabi.Actions 6 | { 7 | public class CommandAction : ActionBase 8 | { 9 | private string _filePath; 10 | private string _arguments; 11 | private bool _waitForExit; 12 | private bool _hidden; 13 | 14 | public override bool IsValid => !String.IsNullOrWhiteSpace(FilePath) && File.Exists(FilePath); 15 | 16 | public string FilePath 17 | { 18 | get => _filePath; 19 | set 20 | { 21 | _filePath = value; 22 | OnPropertyChanged(); 23 | } 24 | } 25 | 26 | public string Arguments 27 | { 28 | get => _arguments; 29 | set 30 | { 31 | _arguments = value; 32 | OnPropertyChanged(); 33 | } 34 | } 35 | 36 | public bool WaitForExit 37 | { 38 | get => _waitForExit; 39 | set 40 | { 41 | _waitForExit = value; 42 | OnPropertyChanged(); 43 | } 44 | } 45 | 46 | public bool Hidden 47 | { 48 | get => _hidden; 49 | set 50 | { 51 | _hidden = value; 52 | OnPropertyChanged(); 53 | } 54 | } 55 | 56 | public override bool CanExecute() 57 | { 58 | return IsValid; 59 | } 60 | 61 | public override void Execute() 62 | { 63 | try 64 | { 65 | StaticCode.Logger?.Here().Information(ToString()); 66 | 67 | if (File.Exists(FilePath)) 68 | { 69 | var process = new Process 70 | { 71 | StartInfo = 72 | { 73 | FileName = FilePath.Trim(), 74 | Arguments = Arguments, 75 | WindowStyle = Hidden ? ProcessWindowStyle.Hidden : ProcessWindowStyle.Normal 76 | } 77 | }; 78 | 79 | process.Start(); 80 | if (WaitForExit) process.WaitForExit(); 81 | } 82 | } 83 | catch (Exception ex) 84 | { 85 | StaticCode.Logger?.Here().Error(ex.Message); 86 | } 87 | } 88 | 89 | public override string ToString() 90 | { 91 | return $"{this.GetType().Name} | Name = {Name} | FilePath = {FilePath} | Arguments = {Arguments} | WaitForExit = {WaitForExit} | Hidden = {Hidden} | Trigger = {Trigger} | Repeat = {Repeat} | RepeatMode = {RepeatMode} | IntervalThrottle = {IntervalThrottle} | IntervalExecutionCount = {IntervalExecutionCount} | InterruptsIdleTime = {InterruptsIdleTime}"; 92 | } 93 | } 94 | } -------------------------------------------------------------------------------- /4x/Move Mouse/Actions/PositionMouseCursorAction.cs: -------------------------------------------------------------------------------- 1 | using ellabi.Utilities; 2 | using ellabi.Wrappers; 3 | using System; 4 | using System.Timers; 5 | using System.Xml.Serialization; 6 | 7 | namespace ellabi.Actions 8 | { 9 | public class PositionMouseCursorAction : ActionBase 10 | { 11 | private int _x; 12 | private int _y; 13 | private TimeSpan _cursorTrackingTimeRemaining; 14 | private readonly TimeSpan _cursorTrackingTime = TimeSpan.FromSeconds(3); 15 | private Timer _cursorTrackingTimer; 16 | private bool _cursorTrackingEnabled; 17 | 18 | public override bool IsValid => true; 19 | 20 | public int X 21 | { 22 | get => _x; 23 | set 24 | { 25 | _x = value; 26 | OnPropertyChanged(); 27 | } 28 | } 29 | 30 | public int Y 31 | { 32 | get => _y; 33 | set 34 | { 35 | _y = value; 36 | OnPropertyChanged(); 37 | } 38 | } 39 | 40 | [XmlIgnore] 41 | public RelayCommand StartCursorTrackingCommand { get; set; } 42 | 43 | [XmlIgnore] 44 | public TimeSpan CursorTrackingTimeRemaining 45 | { 46 | get => _cursorTrackingTimeRemaining; 47 | set 48 | { 49 | _cursorTrackingTimeRemaining = value; 50 | OnPropertyChanged(); 51 | } 52 | } 53 | 54 | [XmlIgnore] 55 | public bool CursorTrackingEnabled 56 | { 57 | get => _cursorTrackingEnabled; 58 | set 59 | { 60 | _cursorTrackingEnabled = value; 61 | OnPropertyChanged(); 62 | } 63 | } 64 | 65 | public PositionMouseCursorAction() 66 | { 67 | StartCursorTrackingCommand = new RelayCommand(param => StartCursorTracking()); 68 | } 69 | 70 | public override bool CanExecute() 71 | { 72 | return IsValid; 73 | } 74 | 75 | public override void Execute() 76 | { 77 | try 78 | { 79 | StaticCode.Logger?.Here().Information(ToString()); 80 | NativeMethods.SetCursorPos(X, Y); 81 | } 82 | catch (Exception ex) 83 | { 84 | StaticCode.Logger?.Here().Error(ex.Message); 85 | } 86 | } 87 | 88 | public void StartCursorTracking() 89 | { 90 | try 91 | { 92 | CursorTrackingEnabled = true; 93 | _cursorTrackingTimer = new Timer { Interval = 100 }; 94 | _cursorTrackingTimer.Elapsed += _cursorTrackingTimer_Elapsed; 95 | _cursorTrackingTimer.Start(); 96 | } 97 | catch (Exception ex) 98 | { 99 | StaticCode.Logger?.Here().Error(ex.Message); 100 | } 101 | } 102 | 103 | private void _cursorTrackingTimer_Elapsed(object sender, ElapsedEventArgs e) 104 | { 105 | try 106 | { 107 | CursorTrackingTimeRemaining = _cursorTrackingTime.Subtract(StaticCode.GetLastInputTime()); 108 | 109 | if (CursorTrackingTimeRemaining.TotalMilliseconds <= 0) 110 | { 111 | _cursorTrackingTimer.Stop(); 112 | CursorTrackingEnabled = false; 113 | } 114 | else 115 | { 116 | var w32Mouse = new NativeMethods.Win32Point(); 117 | NativeMethods.GetCursorPos(ref w32Mouse); 118 | X = w32Mouse.X; 119 | Y = w32Mouse.Y; 120 | } 121 | } 122 | catch (Exception ex) 123 | { 124 | StaticCode.Logger?.Here().Error(ex.Message); 125 | } 126 | } 127 | 128 | public override string ToString() 129 | { 130 | return $"{this.GetType().Name} | Name = {Name} | X = {X} | Y = {Y} | Trigger = {Trigger} | Repeat = {Repeat} | RepeatMode = {RepeatMode} | IntervalThrottle = {IntervalThrottle} | IntervalExecutionCount = {IntervalExecutionCount} | InterruptsIdleTime = {InterruptsIdleTime}"; 131 | } 132 | } 133 | } -------------------------------------------------------------------------------- /4x/Move Mouse/Actions/ScriptAction.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics; 3 | using System.IO; 4 | 5 | namespace ellabi.Actions 6 | { 7 | public class ScriptAction : ActionBase 8 | { 9 | private const string PowerShellPath = @"%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe"; 10 | 11 | private string _scriptPath; 12 | private bool _waitForExit; 13 | private bool _hidden; 14 | 15 | public override bool IsValid => !String.IsNullOrWhiteSpace(ScriptPath) && File.Exists(ScriptPath) && ScriptPath.EndsWith(".ps1", StringComparison.CurrentCultureIgnoreCase); 16 | 17 | public string ScriptPath 18 | { 19 | get => _scriptPath; 20 | set 21 | { 22 | _scriptPath = value; 23 | OnPropertyChanged(); 24 | } 25 | } 26 | 27 | public bool WaitForExit 28 | { 29 | get => _waitForExit; 30 | set 31 | { 32 | _waitForExit = value; 33 | OnPropertyChanged(); 34 | } 35 | } 36 | 37 | public bool Hidden 38 | { 39 | get => _hidden; 40 | set 41 | { 42 | _hidden = value; 43 | OnPropertyChanged(); 44 | } 45 | } 46 | 47 | public override bool CanExecute() 48 | { 49 | return IsValid; 50 | } 51 | 52 | public override void Execute() 53 | { 54 | try 55 | { 56 | StaticCode.Logger?.Here().Information(ToString()); 57 | string powerShellPath = Environment.ExpandEnvironmentVariables(PowerShellPath); 58 | 59 | if (File.Exists(powerShellPath) && File.Exists(ScriptPath)) 60 | { 61 | var powershell = new Process 62 | { 63 | StartInfo = 64 | { 65 | FileName = powerShellPath, 66 | Arguments = String.Format("-ExecutionPolicy Bypass -File \"{0}\"", ScriptPath.Trim()), 67 | WindowStyle = Hidden ? ProcessWindowStyle.Hidden : ProcessWindowStyle.Normal 68 | } 69 | }; 70 | 71 | powershell.Start(); 72 | if (WaitForExit) powershell.WaitForExit(); 73 | } 74 | } 75 | catch (Exception ex) 76 | { 77 | StaticCode.Logger?.Here().Error(ex.Message); 78 | } 79 | } 80 | 81 | public override string ToString() 82 | { 83 | return $"{this.GetType().Name} | Name = {Name} | ScriptPath = {ScriptPath} | WaitForExit = {WaitForExit} | Hidden = {Hidden} | Trigger = {Trigger} | Repeat = {Repeat} | RepeatMode = {RepeatMode} | IntervalThrottle = {IntervalThrottle} | IntervalExecutionCount = {IntervalExecutionCount} | InterruptsIdleTime = {InterruptsIdleTime}"; 84 | } 85 | } 86 | } -------------------------------------------------------------------------------- /4x/Move Mouse/Actions/ScrollMouseAction.cs: -------------------------------------------------------------------------------- 1 | using ellabi.Wrappers; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Diagnostics; 5 | using System.Linq; 6 | 7 | namespace ellabi.Actions 8 | { 9 | public class ScrollMouseAction : ActionBase 10 | { 11 | private uint _distance; 12 | private uint _upperDistance; 13 | private bool _random; 14 | private WheelDirection _direction; 15 | 16 | public enum WheelDirection 17 | { 18 | Up, 19 | Down, 20 | Left, 21 | Right, 22 | Random 23 | } 24 | 25 | public IEnumerable WheelDirectionValues => Enum.GetValues(typeof(WheelDirection)).Cast(); 26 | 27 | public override bool IsValid => Distance > 0; 28 | 29 | public uint Distance 30 | { 31 | get => _distance; 32 | set 33 | { 34 | if (value > UpperDistance) 35 | { 36 | UpperDistance = value; 37 | } 38 | 39 | _distance = value; 40 | OnPropertyChanged(); 41 | } 42 | } 43 | 44 | public uint UpperDistance 45 | { 46 | get => _upperDistance; 47 | set 48 | { 49 | if (value < Distance) 50 | { 51 | Distance = value; 52 | } 53 | 54 | _upperDistance = value < 1 ? 1 : value; 55 | OnPropertyChanged(); 56 | } 57 | } 58 | 59 | public bool Random 60 | { 61 | get => _random; 62 | set 63 | { 64 | _random = value; 65 | OnPropertyChanged(); 66 | } 67 | } 68 | 69 | public WheelDirection Direction 70 | { 71 | get => _direction; 72 | set 73 | { 74 | _direction = value; 75 | OnPropertyChanged(); 76 | } 77 | } 78 | 79 | public ScrollMouseAction() 80 | { 81 | _distance = 100; 82 | _upperDistance = 200; 83 | _direction = WheelDirection.Down; 84 | InterruptsIdleTime = true; 85 | } 86 | 87 | public override bool CanExecute() 88 | { 89 | return IsValid; 90 | } 91 | 92 | public override void Execute() 93 | { 94 | try 95 | { 96 | StaticCode.Logger?.Here().Information(ToString()); 97 | var direction = (Direction == WheelDirection.Random) ? WheelDirectionValues.OrderBy(wd => Guid.NewGuid()).FirstOrDefault() : Direction; 98 | uint distance = Random ? (uint)(new Random().Next(Convert.ToInt32(Distance), Convert.ToInt32(UpperDistance))) : Distance; 99 | 100 | switch (direction) 101 | { 102 | case WheelDirection.Up: 103 | { 104 | NativeMethods.mouse_event((int)NativeMethods.MouseEventFlags.WHEEL, 0, 0, distance, 0); 105 | break; 106 | } 107 | case WheelDirection.Down: 108 | { 109 | NativeMethods.mouse_event((int)NativeMethods.MouseEventFlags.WHEEL, 0, 0, (uint)(distance * -1), 0); 110 | break; 111 | } 112 | case WheelDirection.Left: 113 | { 114 | NativeMethods.mouse_event((int)NativeMethods.MouseEventFlags.HWHEEL, 0, 0, distance, 0); 115 | break; 116 | } 117 | case WheelDirection.Right: 118 | { 119 | NativeMethods.mouse_event((int)NativeMethods.MouseEventFlags.HWHEEL, 0, 0, (uint)(distance * -1), 0); 120 | break; 121 | } 122 | } 123 | } 124 | catch (Exception ex) 125 | { 126 | StaticCode.Logger?.Here().Error(ex.Message); 127 | } 128 | } 129 | 130 | public override string ToString() 131 | { 132 | return $"{this.GetType().Name} | Name = {Name} | Distance = {Distance} | Direction = {Direction} | Trigger = {Trigger} | Repeat = {Repeat} | RepeatMode = {RepeatMode} | IntervalThrottle = {IntervalThrottle} | IntervalExecutionCount = {IntervalExecutionCount} | InterruptsIdleTime = {InterruptsIdleTime}"; 133 | } 134 | } 135 | } -------------------------------------------------------------------------------- /4x/Move Mouse/Actions/SleepAction.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Threading; 3 | 4 | namespace ellabi.Actions 5 | { 6 | public class SleepAction : ActionBase 7 | { 8 | private double _seconds; 9 | private double _upperSeconds; 10 | private bool _random; 11 | 12 | public override bool IsValid => Seconds > 0.0; 13 | 14 | public double Seconds 15 | { 16 | get => _seconds; 17 | set 18 | { 19 | if (value > UpperSeconds) 20 | { 21 | UpperSeconds = value; 22 | } 23 | 24 | _seconds = value < .1 ? .1 : value; 25 | OnPropertyChanged(); 26 | } 27 | } 28 | 29 | public double UpperSeconds 30 | { 31 | get => _upperSeconds; 32 | set 33 | { 34 | if (value < Seconds) 35 | { 36 | Seconds = value; 37 | } 38 | 39 | _upperSeconds = value < .1 ? .1 : value; 40 | OnPropertyChanged(); 41 | } 42 | } 43 | 44 | public bool Random 45 | { 46 | get => _random; 47 | set 48 | { 49 | _random = value; 50 | OnPropertyChanged(); 51 | } 52 | } 53 | 54 | public SleepAction() 55 | { 56 | _seconds = 1; 57 | _upperSeconds = 2; 58 | } 59 | 60 | public override bool CanExecute() 61 | { 62 | return IsValid; 63 | } 64 | 65 | public override void Execute() 66 | { 67 | try 68 | { 69 | var sleep = TimeSpan.FromSeconds(Random ? new Random().Next(Convert.ToInt32(Seconds), Convert.ToInt32(UpperSeconds)) : Seconds); 70 | StaticCode.Logger?.Here().Information(ToString()); 71 | StaticCode.Logger?.Here().Information(sleep.ToString()); 72 | Thread.Sleep(sleep); 73 | } 74 | catch (Exception ex) 75 | { 76 | StaticCode.Logger?.Here().Error(ex.Message); 77 | } 78 | } 79 | 80 | public override string ToString() 81 | { 82 | return $"{this.GetType().Name} | Name = {Name} | Random = {Random} | Seconds = {Seconds} | UpperSeconds = {UpperSeconds} | Trigger = {Trigger} | Repeat = {Repeat} | RepeatMode = {RepeatMode} | IntervalThrottle = {IntervalThrottle} | IntervalExecutionCount = {IntervalExecutionCount} | InterruptsIdleTime = {InterruptsIdleTime}"; 83 | } 84 | } 85 | } -------------------------------------------------------------------------------- /4x/Move Mouse/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /4x/Move Mouse/App.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /4x/Move Mouse/App.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Net; 6 | using System.Threading; 7 | using System.Windows; 8 | 9 | namespace ellabi 10 | { 11 | public partial class App 12 | { 13 | private void App_OnStartup(object sender, StartupEventArgs e) 14 | { 15 | try 16 | { 17 | using (new Mutex(true, "f45b30b9-9e65-4d33-a2bc-d6ba6a7500bd", out var createdNew)) 18 | { 19 | if (createdNew) 20 | { 21 | StaticCode.CreateLog(); 22 | 23 | if ((StaticCode.DownloadSource == StaticCode.MoveMouseSource.GitHub) && (e.Args != null) && e.Args.Any(a => a.StartsWith("/WorkingDirectory:", StringComparison.CurrentCultureIgnoreCase))) 24 | { 25 | var workingDirectoryArg = e.Args.First(a => a.StartsWith("/WorkingDirectory:", StringComparison.CurrentCultureIgnoreCase)); 26 | var alternateWorkingDirectory = workingDirectoryArg.Substring(workingDirectoryArg.IndexOf(':') + 1); 27 | 28 | if (Directory.Exists(alternateWorkingDirectory)) 29 | { 30 | StaticCode.WorkingDirectory = workingDirectoryArg.Substring(workingDirectoryArg.IndexOf(':') + 1); 31 | } 32 | } 33 | 34 | Directory.CreateDirectory(StaticCode.WorkingDirectory); 35 | ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls12; 36 | StartupUri = new Uri("Views/MouseWindow.xaml", UriKind.Relative); 37 | } 38 | } 39 | } 40 | catch (Exception ex) 41 | { 42 | StaticCode.Logger?.Here().Error(ex.Message); 43 | } 44 | } 45 | 46 | private void Application_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e) 47 | { 48 | StaticCode.Logger?.Here().Error(e.Exception.Message); 49 | } 50 | } 51 | } -------------------------------------------------------------------------------- /4x/Move Mouse/Classes/Arc.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics; 3 | using System.Windows; 4 | using System.Windows.Media; 5 | using System.Windows.Shapes; 6 | 7 | namespace ellabi.Classes 8 | { 9 | public class Arc : Shape 10 | { 11 | public double StartAngle 12 | { 13 | get { return (double)GetValue(StartAngleProperty); } 14 | set { SetValue(StartAngleProperty, value); } 15 | } 16 | 17 | // Using a DependencyProperty as the backing store for StartAngle. This enables animation, styling, binding, etc... 18 | public static readonly DependencyProperty StartAngleProperty = DependencyProperty.Register("StartAngle", typeof(double), typeof(Arc), new UIPropertyMetadata(0.0, UpdateArc)); 19 | 20 | public double EndAngle 21 | { 22 | get { return (double)GetValue(EndAngleProperty); } 23 | set { SetValue(EndAngleProperty, value); } 24 | } 25 | 26 | // Using a DependencyProperty as the backing store for EndAngle. This enables animation, styling, binding, etc... 27 | public static readonly DependencyProperty EndAngleProperty = DependencyProperty.Register("EndAngle", typeof(double), typeof(Arc), new UIPropertyMetadata(90.0, UpdateArc)); 28 | 29 | // This controls whether or not the progress bar goes clockwise or counterclockwise 30 | public SweepDirection Direction 31 | { 32 | get { return (SweepDirection)GetValue(DirectionProperty); } 33 | set { SetValue(DirectionProperty, value); } 34 | } 35 | 36 | public static readonly DependencyProperty DirectionProperty = DependencyProperty.Register("Direction", typeof(SweepDirection), typeof(Arc), new UIPropertyMetadata(SweepDirection.Clockwise)); 37 | 38 | // Rotate the start/endpoint of the arc a certain number of degree in the direction 39 | // ie. if you wanted it to be at 12:00 that would be 270 Clockwise or 90 counterclockwise 40 | public double OriginRotationDegrees 41 | { 42 | get { return (double)GetValue(OriginRotationDegreesProperty); } 43 | set { SetValue(OriginRotationDegreesProperty, value); } 44 | } 45 | 46 | public static readonly DependencyProperty OriginRotationDegreesProperty = DependencyProperty.Register("OriginRotationDegrees", typeof(double), typeof(Arc), new UIPropertyMetadata(270.0, UpdateArc)); 47 | 48 | protected static void UpdateArc(DependencyObject d, DependencyPropertyChangedEventArgs e) 49 | { 50 | try 51 | { 52 | Arc arc = d as Arc; 53 | arc?.InvalidateVisual(); 54 | } 55 | catch (Exception ex) 56 | { 57 | StaticCode.Logger?.Here().Error(ex.Message); 58 | } 59 | } 60 | 61 | protected override Geometry DefiningGeometry => GetArcGeometry(); 62 | 63 | protected override void OnRender(DrawingContext drawingContext) 64 | { 65 | try 66 | { 67 | drawingContext.DrawGeometry(null, new Pen(Stroke, StrokeThickness), GetArcGeometry()); 68 | } 69 | catch (Exception ex) 70 | { 71 | StaticCode.Logger?.Here().Error(ex.Message); 72 | } 73 | } 74 | 75 | private Geometry GetArcGeometry() 76 | { 77 | StreamGeometry geom = new StreamGeometry(); 78 | 79 | try 80 | { 81 | Point startPoint = PointAtAngle(Math.Min(StartAngle, EndAngle), Direction); 82 | Point endPoint = PointAtAngle(Math.Max(StartAngle, EndAngle), Direction); 83 | Size arcSize = new Size(Math.Max(0, (RenderSize.Width - StrokeThickness) / 2), Math.Max(0, (RenderSize.Height - StrokeThickness) / 2)); 84 | bool isLargeArc = Math.Abs(EndAngle - StartAngle) > 180; 85 | 86 | using (StreamGeometryContext context = geom.Open()) 87 | { 88 | context.BeginFigure(startPoint, false, false); 89 | context.ArcTo(endPoint, arcSize, 0, isLargeArc, Direction, true, false); 90 | } 91 | 92 | geom.Transform = new TranslateTransform(StrokeThickness / 2, StrokeThickness / 2); 93 | } 94 | catch (Exception ex) 95 | { 96 | StaticCode.Logger?.Here().Error(ex.Message); 97 | } 98 | 99 | return geom; 100 | } 101 | 102 | private Point PointAtAngle(double angle, SweepDirection sweep) 103 | { 104 | try 105 | { 106 | double translatedAngle = angle + OriginRotationDegrees; 107 | double radAngle = translatedAngle * (Math.PI / 180); 108 | double xr = (RenderSize.Width - StrokeThickness) / 2; 109 | double yr = (RenderSize.Height - StrokeThickness) / 2; 110 | double x = xr + xr * Math.Cos(radAngle); 111 | double y = yr * Math.Sin(radAngle); 112 | 113 | if (sweep == SweepDirection.Counterclockwise) 114 | { 115 | y = yr - y; 116 | } 117 | else 118 | { 119 | y = yr + y; 120 | } 121 | 122 | return new Point(x, y); 123 | } 124 | catch (Exception ex) 125 | { 126 | StaticCode.Logger?.Here().Error(ex.Message); 127 | } 128 | 129 | return new Point(); 130 | } 131 | } 132 | } -------------------------------------------------------------------------------- /4x/Move Mouse/Classes/Theme.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Xml.Serialization; 3 | 4 | namespace ellabi.Classes 5 | { 6 | //public class Theme 7 | //{ 8 | // public string Name { get; set; } 9 | 10 | // public DateTime StartTime { get; set; } 11 | 12 | // public DateTime EndTime { get; set; } 13 | 14 | // //todo What if not accessible? 15 | // public string ImagePath { get; set; } 16 | 17 | // [XmlArray(ElementName = "Regions")] 18 | // [XmlArrayItem("Region")] 19 | // public string[] Regions { get; set; } 20 | //} 21 | } -------------------------------------------------------------------------------- /4x/Move Mouse/Classes/Update.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace ellabi.Classes 4 | { 5 | public class Update 6 | { 7 | public Version LatestVersion { get; set; } 8 | 9 | public string DownloadUrl { get; set; } 10 | } 11 | } -------------------------------------------------------------------------------- /4x/Move Mouse/Converters/ApplicationSearchModeToBoolConverter.cs: -------------------------------------------------------------------------------- 1 | using ellabi.Actions; 2 | using System; 3 | using System.Diagnostics; 4 | using System.Globalization; 5 | using System.Windows.Data; 6 | 7 | namespace ellabi.Converters 8 | { 9 | public class ApplicationSearchModeToBoolConverter : IValueConverter 10 | { 11 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 12 | { 13 | try 14 | { 15 | if ((value != null) && value.GetType() == typeof(ActivateApplicationAction.SearchMode)) 16 | { 17 | var mode = (ActivateApplicationAction.SearchMode) value; 18 | return mode.Equals(ActivateApplicationAction.SearchMode.Window); 19 | } 20 | } 21 | catch (Exception ex) 22 | { 23 | StaticCode.Logger?.Here().Error(ex.Message); 24 | } 25 | 26 | return false; 27 | } 28 | 29 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 30 | { 31 | try 32 | { 33 | if (Boolean.TryParse(value?.ToString(), out var b)) 34 | { 35 | return b ? ActivateApplicationAction.SearchMode.Window : ActivateApplicationAction.SearchMode.Process; 36 | } 37 | } 38 | catch (Exception ex) 39 | { 40 | StaticCode.Logger?.Here().Error(ex.Message); 41 | } 42 | 43 | return ActivateApplicationAction.SearchMode.Process; 44 | } 45 | } 46 | } -------------------------------------------------------------------------------- /4x/Move Mouse/Converters/BoolToIndexConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics; 3 | using System.Globalization; 4 | using System.Windows.Data; 5 | 6 | namespace ellabi.Converters 7 | { 8 | public class BoolToIndexConverter : IValueConverter 9 | { 10 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 11 | { 12 | try 13 | { 14 | return (value != null) && (bool) value ? 0 : 1; 15 | } 16 | catch (Exception ex) 17 | { 18 | StaticCode.Logger?.Here().Error(ex.Message); 19 | } 20 | 21 | return 1; 22 | } 23 | 24 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 25 | { 26 | try 27 | { 28 | return value != null && (int) value == 0; 29 | } 30 | catch (Exception ex) 31 | { 32 | StaticCode.Logger?.Here().Error(ex.Message); 33 | } 34 | 35 | return false; 36 | } 37 | } 38 | } -------------------------------------------------------------------------------- /4x/Move Mouse/Converters/CursorDirectionToStealthModeBoolConverter.cs: -------------------------------------------------------------------------------- 1 | using ellabi.Actions; 2 | using System; 3 | using System.Diagnostics; 4 | using System.Globalization; 5 | using System.Windows.Data; 6 | 7 | namespace ellabi.Converters 8 | { 9 | public class CursorDirectionToStealthModeBoolConverter : IValueConverter 10 | { 11 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 12 | { 13 | try 14 | { 15 | if ((value != null) && value.GetType() == typeof(MoveMouseCursorAction.CursorDirection)) 16 | { 17 | var direction = (MoveMouseCursorAction.CursorDirection)value; 18 | return direction.Equals(MoveMouseCursorAction.CursorDirection.None); 19 | } 20 | } 21 | catch (Exception ex) 22 | { 23 | StaticCode.Logger?.Here().Error(ex.Message); 24 | } 25 | 26 | return false; 27 | } 28 | 29 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 30 | { 31 | try 32 | { 33 | if (Boolean.TryParse(value?.ToString(), out var b)) 34 | { 35 | return b ? MoveMouseCursorAction.CursorDirection.None : MoveMouseCursorAction.CursorDirection.Square; 36 | } 37 | } 38 | catch (Exception ex) 39 | { 40 | StaticCode.Logger?.Here().Error(ex.Message); 41 | } 42 | 43 | return MoveMouseCursorAction.CursorDirection.Square; 44 | } 45 | } 46 | } -------------------------------------------------------------------------------- /4x/Move Mouse/Converters/DoubleDividedByTwoConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics; 3 | using System.Windows.Data; 4 | 5 | namespace ellabi.Converters 6 | { 7 | public class DoubleDividedByTwoConverter : IValueConverter 8 | { 9 | public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 10 | { 11 | try 12 | { 13 | if ((value != null) && Double.TryParse(value.ToString(), out var d)) 14 | { 15 | return d / 2; 16 | } 17 | } 18 | catch (Exception ex) 19 | { 20 | StaticCode.Logger?.Here().Error(ex.Message); 21 | } 22 | 23 | return 0.0; 24 | } 25 | 26 | public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 27 | { 28 | throw new NotImplementedException(); 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /4x/Move Mouse/Converters/MouseStateIsSleepingConverter.cs: -------------------------------------------------------------------------------- 1 | using ellabi.ViewModels; 2 | using System; 3 | using System.Globalization; 4 | using System.Windows.Data; 5 | 6 | namespace ellabi.Converters 7 | { 8 | public class MouseStateIsSleepingConverter : IValueConverter 9 | { 10 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 11 | { 12 | try 13 | { 14 | return (value != null) && Enum.TryParse(value.ToString(), true, out MouseWindowViewModel.MouseState state) && state.Equals(MouseWindowViewModel.MouseState.Sleeping); 15 | } 16 | catch (Exception ex) 17 | { 18 | StaticCode.Logger?.Here().Error(ex.Message); 19 | } 20 | 21 | return false; 22 | } 23 | 24 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 25 | { 26 | throw new NotImplementedException(); 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /4x/Move Mouse/Converters/ObjectToTypeStringConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics; 3 | using System.Globalization; 4 | using System.Windows.Data; 5 | 6 | namespace ellabi.Converters 7 | { 8 | public class ObjectToTypeStringConverter : IValueConverter 9 | { 10 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 11 | { 12 | try 13 | { 14 | return value?.GetType().ToString(); 15 | } 16 | catch (Exception ex) 17 | { 18 | StaticCode.Logger?.Here().Error(ex.Message); 19 | } 20 | 21 | return null; 22 | } 23 | 24 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 25 | { 26 | throw new NotImplementedException(); 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /4x/Move Mouse/Converters/ProgressToAngleConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics; 3 | using System.Globalization; 4 | using System.Windows.Controls; 5 | using System.Windows.Data; 6 | 7 | namespace ellabi.Converters 8 | { 9 | public class ProgressToAngleConverter : IMultiValueConverter 10 | { 11 | public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) 12 | { 13 | try 14 | { 15 | double progress = (double) values[0]; 16 | if (values[1] is ProgressBar bar) return 359.999 * (progress / (bar.Maximum - bar.Minimum)); 17 | } 18 | catch (Exception ex) 19 | { 20 | StaticCode.Logger?.Here().Error(ex.Message); 21 | } 22 | 23 | return null; 24 | } 25 | 26 | public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) 27 | { 28 | throw new NotImplementedException(); 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /4x/Move Mouse/Converters/StartupTaskStateToBoolConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Globalization; 3 | using System.Windows.Data; 4 | using Windows.ApplicationModel; 5 | 6 | namespace ellabi.Converters 7 | { 8 | public class StartupTaskStateToBoolConverter : IValueConverter 9 | { 10 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 11 | { 12 | try 13 | { 14 | if ((value != null) && value.GetType() == typeof(StartupTaskState)) 15 | { 16 | var state = (StartupTaskState) value; 17 | return state.Equals(StartupTaskState.Enabled); 18 | } 19 | } 20 | catch (Exception ex) 21 | { 22 | StaticCode.Logger?.Here().Error(ex.Message); 23 | } 24 | 25 | return false; 26 | } 27 | 28 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 29 | { 30 | try 31 | { 32 | if (Boolean.TryParse(value?.ToString(), out var b)) 33 | { 34 | return b ? StartupTaskState.Enabled : StartupTaskState.Disabled; 35 | } 36 | } 37 | catch (Exception ex) 38 | { 39 | StaticCode.Logger?.Here().Error(ex.Message); 40 | } 41 | 42 | return StartupTaskState.Disabled; 43 | } 44 | } 45 | } -------------------------------------------------------------------------------- /4x/Move Mouse/Converters/StringToFileExistsConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics; 3 | using System.Globalization; 4 | using System.IO; 5 | using System.Windows.Data; 6 | 7 | namespace ellabi.Converters 8 | { 9 | public class StringToFileExistsConverter : IValueConverter 10 | { 11 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 12 | { 13 | try 14 | { 15 | return !String.IsNullOrWhiteSpace(value?.ToString()) && File.Exists(value.ToString()); 16 | } 17 | catch (Exception ex) 18 | { 19 | StaticCode.Logger?.Here().Error(ex.Message); 20 | } 21 | 22 | return false; 23 | } 24 | 25 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 26 | { 27 | throw new NotImplementedException(); 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /4x/Move Mouse/FodyWeavers.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /4x/Move Mouse/Jobs/CheckForUpdateJob.cs: -------------------------------------------------------------------------------- 1 | using ellabi.Classes; 2 | using Quartz; 3 | using System; 4 | using System.IO; 5 | using System.Reflection; 6 | using System.Threading.Tasks; 7 | using System.Xml; 8 | using System.Xml.Serialization; 9 | 10 | namespace ellabi.Jobs 11 | { 12 | public class CheckForUpdateJob : IJob 13 | { 14 | public async Task Execute(IJobExecutionContext context) 15 | { 16 | try 17 | { 18 | var update = GetUpdate(); 19 | 20 | if ((update != null) && (update.LatestVersion > Assembly.GetExecutingAssembly().GetName().Version)) 21 | { 22 | StaticCode.UpdateUrl = update.DownloadUrl; 23 | StaticCode.OnUpdateAvailablityChanged(true); 24 | } 25 | } 26 | catch (Exception ex) 27 | { 28 | StaticCode.Logger?.Here().Error(ex.Message); 29 | } 30 | 31 | await Task.CompletedTask; 32 | } 33 | 34 | private Update GetUpdate() 35 | { 36 | try 37 | { 38 | var xmlDoc = new XmlDocument(); 39 | xmlDoc.Load(StaticCode.UpdateXmlUrl); 40 | var versionNode = xmlDoc.SelectSingleNode("Update/LatestVersion"); 41 | var urlNode = xmlDoc.SelectSingleNode("Update/DownloadUrl"); 42 | 43 | if ((versionNode != null) && (urlNode != null) && !String.IsNullOrWhiteSpace(versionNode.InnerText) && !String.IsNullOrWhiteSpace(urlNode.InnerText) && Version.TryParse(versionNode.InnerText, out var version)) 44 | { 45 | return new Update 46 | { 47 | DownloadUrl = urlNode.InnerText, 48 | LatestVersion = version 49 | }; 50 | } 51 | } 52 | catch (Exception ex) 53 | { 54 | StaticCode.Logger?.Here().Error(ex.Message); 55 | } 56 | 57 | return null; 58 | } 59 | } 60 | } -------------------------------------------------------------------------------- /4x/Move Mouse/Jobs/RefreshSchedulesJob.cs: -------------------------------------------------------------------------------- 1 | using Quartz; 2 | using System.Threading.Tasks; 3 | 4 | namespace ellabi.Jobs 5 | { 6 | public class RefreshSchedulesJob : IJob 7 | { 8 | public async Task Execute(IJobExecutionContext context) 9 | { 10 | StaticCode.OnRefreshSchedules(); 11 | await Task.CompletedTask; 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /4x/Move Mouse/Jobs/ResetUpdateStatusJob.cs: -------------------------------------------------------------------------------- 1 | using Quartz; 2 | using System.Threading.Tasks; 3 | 4 | namespace ellabi.Jobs 5 | { 6 | public class ResetUpdateStatusJob : IJob 7 | { 8 | public async Task Execute(IJobExecutionContext context) 9 | { 10 | StaticCode.OnUpdateAvailablityChanged(false); 11 | await Task.CompletedTask; 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /4x/Move Mouse/Jobs/ScheduleArrivedJob.cs: -------------------------------------------------------------------------------- 1 | using ellabi.Schedules; 2 | using Quartz; 3 | using System; 4 | using System.Threading.Tasks; 5 | 6 | namespace ellabi.Jobs 7 | { 8 | public class ScheduleArrivedJob : IJob 9 | { 10 | public async Task Execute(IJobExecutionContext context) 11 | { 12 | try 13 | { 14 | var dataMap = context.JobDetail.JobDataMap; 15 | var action = (ScheduleBase.ScheduleAction)Enum.Parse(typeof(ScheduleBase.ScheduleAction), dataMap["action"].ToString()); 16 | StaticCode.OnScheduleArrived(action); 17 | } 18 | catch (Exception ex) 19 | { 20 | StaticCode.Logger?.Here().Error(ex.Message); 21 | } 22 | 23 | await Task.CompletedTask; 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /4x/Move Mouse/Jobs/UpdateThemeJob.cs: -------------------------------------------------------------------------------- 1 | using ellabi.Classes; 2 | using Quartz; 3 | using System; 4 | using System.Diagnostics; 5 | using System.Globalization; 6 | using System.IO; 7 | using System.Linq; 8 | using System.Xml; 9 | using System.Xml.Serialization; 10 | 11 | namespace ellabi.Jobs 12 | { 13 | //public class UpdateThemeJob : IJob 14 | //{ 15 | // public void Execute(IJobExecutionContext context) 16 | // { 17 | // try 18 | // { 19 | // //StaticCode.OnThemeUpdated(GetThemes()?.FirstOrDefault(theme => theme.StartTime <= DateTime.Now && theme.EndTime >= DateTime.Now && (theme.Regions == null || theme.Regions.Any(region => RegionInfo.CurrentRegion.EnglishName.Equals(region))))); 20 | // } 21 | // catch (Exception ex) 22 | // { 23 | // StaticCode.Logger?.Here().Error(ex.Message); 24 | // } 25 | // } 26 | 27 | // //private Theme[] GetThemes() 28 | // //{ 29 | // // XmlReader xr = null; 30 | 31 | // // try 32 | // // { 33 | // // var xmlDoc = new XmlDocument(); 34 | // // xmlDoc.Load(StaticCode.ThemesXmlUrl); 35 | // // var xs = new XmlSerializer(typeof(Theme[])); 36 | // // xr = XmlReader.Create(new StringReader(xmlDoc.OuterXml)); 37 | // // return (Theme[])xs.Deserialize(xr); 38 | // // } 39 | // // catch (Exception ex) 40 | // // { 41 | // // StaticCode.Logger?.Here().Error(ex.Message); 42 | // // } 43 | // // finally 44 | // // { 45 | // // xr?.Close(); 46 | // // } 47 | 48 | // // return null; 49 | // //} 50 | //} 51 | } -------------------------------------------------------------------------------- /4x/Move Mouse/Move Mouse.csproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | publish\ 9 | 10 | 11 | 12 | 13 | 14 | en-US 15 | false 16 | 17 | -------------------------------------------------------------------------------- /4x/Move Mouse/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Resources; 3 | using System.Runtime.CompilerServices; 4 | using System.Runtime.InteropServices; 5 | using System.Windows; 6 | 7 | // General Information about an assembly is controlled through the following 8 | // set of attributes. Change these attribute values to modify the information 9 | // associated with an assembly. 10 | [assembly: AssemblyTitle("Move Mouse")] 11 | [assembly: AssemblyDescription("http://www.movemouse.co.uk/")] 12 | [assembly: AssemblyConfiguration("")] 13 | [assembly: AssemblyCompany("")] 14 | [assembly: AssemblyProduct("Move Mouse")] 15 | [assembly: AssemblyCopyright("Copyright © Steve Williams 2017")] 16 | [assembly: AssemblyTrademark("")] 17 | [assembly: AssemblyCulture("")] 18 | 19 | // Setting ComVisible to false makes the types in this assembly not visible 20 | // to COM components. If you need to access a type in this assembly from 21 | // COM, set the ComVisible attribute to true on that type. 22 | [assembly: ComVisible(false)] 23 | 24 | //In order to begin building localizable applications, set 25 | //CultureYouAreCodingWith in your .csproj file 26 | //inside a . For example, if you are using US english 27 | //in your source files, set the to en-US. Then uncomment 28 | //the NeutralResourceLanguage attribute below. Update the "en-US" in 29 | //the line below to match the UICulture setting in the project file. 30 | 31 | //[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] 32 | 33 | 34 | [assembly: ThemeInfo( 35 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 36 | //(used if a resource is not found in the page, 37 | // or application resource dictionaries) 38 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 39 | //(used if a resource is not found in the page, 40 | // app, or any theme specific resource dictionaries) 41 | )] 42 | 43 | 44 | // Version information for an assembly consists of the following four values: 45 | // 46 | // Major Version 47 | // Minor Version 48 | // Build Number 49 | // Revision 50 | // 51 | // You can specify all the values or you can default the Build and Revision Numbers 52 | // by using the '*' as shown below: 53 | // [assembly: AssemblyVersion("1.0.*")] 54 | [assembly: AssemblyVersion("4.18.2.0")] 55 | [assembly: AssemblyFileVersion("4.18.2.0")] 56 | -------------------------------------------------------------------------------- /4x/Move Mouse/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace ellabi.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /4x/Move Mouse/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/ActionsAdd_Dark_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/ActionsAdd_Dark_64x64.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/ActionsAdd_Light_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/ActionsAdd_Light_64x64.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/ActionsRemove_Dark_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/ActionsRemove_Dark_64x64.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/ActionsRemove_Light_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/ActionsRemove_Light_64x64.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/Actions_Dark_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/Actions_Dark_64x64.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/Actions_Light_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/Actions_Light_64x64.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/ActivateWindowAction_Dark_128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/ActivateWindowAction_Dark_128x128.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/ActivateWindowAction_Light_128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/ActivateWindowAction_Light_128x128.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/Appearance_Dark_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/Appearance_Dark_64x64.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/Appearance_Light_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/Appearance_Light_64x64.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/Behaviour_Dark_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/Behaviour_Dark_64x64.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/Behaviour_Light_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/Behaviour_Light_64x64.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/ClickMouseAction_Dark_128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/ClickMouseAction_Dark_128x128.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/ClickMouseAction_Light_128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/ClickMouseAction_Light_128x128.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/Close_Dark_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/Close_Dark_64x64.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/Close_Light_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/Close_Light_64x64.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/CommandAction_Dark_128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/CommandAction_Dark_128x128.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/CommandAction_Light_128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/CommandAction_Light_128x128.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/Console_Dark_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/Console_Dark_64x64.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/Console_Light_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/Console_Light_64x64.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/Copyright_Dark_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/Copyright_Dark_64x64.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/Copyright_Light_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/Copyright_Light_64x64.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/DownArrow_Dark_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/DownArrow_Dark_64x64.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/DownArrow_Light_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/DownArrow_Light_64x64.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/FileOpen_Dark_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/FileOpen_Dark_64x64.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/FileOpen_Light_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/FileOpen_Light_64x64.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/GitHub_Dark_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/GitHub_Dark_64x64.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/GitHub_Light_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/GitHub_Light_64x64.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/Help_Dark_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/Help_Dark_64x64.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/Help_Light_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/Help_Light_64x64.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/Home_Dark_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/Home_Dark_64x64.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/Home_Light_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/Home_Light_64x64.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/Information_Dark_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/Information_Dark_64x64.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/Information_Light_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/Information_Light_64x64.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/Mail_Dark_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/Mail_Dark_64x64.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/Mail_Light_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/Mail_Light_64x64.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/Moon_Dark_128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/Moon_Dark_128x128.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/Moon_Light_128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/Moon_Light_128x128.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/Mouse-Pause.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/Mouse-Pause.ico -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/Mouse-Play.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/Mouse-Play.ico -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/Mouse-Sleep.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/Mouse-Sleep.ico -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/Mouse-Stop.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/Mouse-Stop.ico -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/Mouse-SystemTray-Active.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/Mouse-SystemTray-Active.ico -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/Mouse-SystemTray-Battery.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/Mouse-SystemTray-Battery.ico -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/Mouse-SystemTray-Execute.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/Mouse-SystemTray-Execute.ico -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/Mouse-SystemTray-Pause.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/Mouse-SystemTray-Pause.ico -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/Mouse-SystemTray-Sleep.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/Mouse-SystemTray-Sleep.ico -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/Mouse.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/Mouse.ico -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/MouseClosedEyes_128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/MouseClosedEyes_128x128.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/MoveMouseCursorAction_Dark_128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/MoveMouseCursorAction_Dark_128x128.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/MoveMouseCursorAction_Light_128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/MoveMouseCursorAction_Light_128x128.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/PayPal_Dark_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/PayPal_Dark_64x64.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/PayPal_Light_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/PayPal_Light_64x64.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/PositionMouseCursorAction_Dark_128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/PositionMouseCursorAction_Dark_128x128.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/PositionMouseCursorAction_Light_128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/PositionMouseCursorAction_Light_128x128.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/Refresh_Dark_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/Refresh_Dark_64x64.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/Refresh_Light_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/Refresh_Light_64x64.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/Schedules_Dark_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/Schedules_Dark_64x64.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/Schedules_Light_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/Schedules_Light_64x64.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/ScriptAction_Dark_128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/ScriptAction_Dark_128x128.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/ScriptAction_Light_128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/ScriptAction_Light_128x128.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/ScrollMouseWheelAction_Dark_128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/ScrollMouseWheelAction_Dark_128x128.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/ScrollMouseWheelAction_Light_128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/ScrollMouseWheelAction_Light_128x128.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/Settings_Dark_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/Settings_Dark_64x64.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/Settings_Light_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/Settings_Light_64x64.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/SleepAction_Dark_128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/SleepAction_Dark_128x128.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/SleepAction_Light_128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/SleepAction_Light_128x128.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/Twitter_Dark_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/Twitter_Dark_64x64.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/Twitter_Light_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/Twitter_Light_64x64.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/UpArrow_Dark_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/UpArrow_Dark_64x64.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/UpArrow_Light_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/UpArrow_Light_64x64.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/Volume_Dark_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/Volume_Dark_64x64.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/Volume_Light_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/Volume_Light_64x64.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/Warning_128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/Warning_128x128.png -------------------------------------------------------------------------------- /4x/Move Mouse/Resources/Windows_Title.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Resources/Windows_Title.png -------------------------------------------------------------------------------- /4x/Move Mouse/Schedules/AdvancedSchedule.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace ellabi.Schedules 4 | { 5 | public class AdvancedSchedule : ScheduleBase 6 | { 7 | private string _schedule; 8 | 9 | public override bool IsValid => !String.IsNullOrWhiteSpace(CronExpression) && Quartz.CronExpression.IsValidExpression(CronExpression); 10 | 11 | public override string CronExpression => Schedule; 12 | 13 | public string Schedule 14 | { 15 | get => _schedule; 16 | set 17 | { 18 | _schedule = value; 19 | OnPropertyChanged(); 20 | OnPropertyChanged(nameof(IsValid)); 21 | } 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /4x/Move Mouse/Schedules/ScheduleBase.cs: -------------------------------------------------------------------------------- 1 | using ellabi.Annotations; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.ComponentModel; 5 | using System.Linq; 6 | using System.Runtime.CompilerServices; 7 | using System.Xml.Serialization; 8 | 9 | namespace ellabi.Schedules 10 | { 11 | public abstract class ScheduleBase : INotifyPropertyChanged 12 | { 13 | public event PropertyChangedEventHandler PropertyChanged; 14 | 15 | private ScheduleAction _action; 16 | 17 | public enum ScheduleAction 18 | { 19 | Start, 20 | Stop 21 | } 22 | 23 | public abstract bool IsValid { get; } 24 | 25 | [XmlIgnore] 26 | public abstract string CronExpression { get; } 27 | 28 | public Guid Id { get; set; } 29 | 30 | public IEnumerable ScheduleActionValues => Enum.GetValues(typeof(ScheduleAction)).Cast(); 31 | 32 | public ScheduleAction Action 33 | { 34 | get => _action; 35 | set 36 | { 37 | _action = value; 38 | OnPropertyChanged(); 39 | } 40 | } 41 | 42 | protected ScheduleBase() 43 | { 44 | Id = Guid.NewGuid(); 45 | } 46 | 47 | [NotifyPropertyChangedInvocator] 48 | protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) 49 | { 50 | PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); 51 | } 52 | } 53 | } -------------------------------------------------------------------------------- /4x/Move Mouse/Schedules/SimpleSchedule.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using System.Xml.Serialization; 4 | 5 | namespace ellabi.Schedules 6 | { 7 | public class SimpleSchedule : ScheduleBase 8 | { 9 | private bool _monday; 10 | private bool _tuesday; 11 | private bool _wednesday; 12 | private bool _thursday; 13 | private bool _friday; 14 | private bool _saturday; 15 | private bool _sunday; 16 | private TimeSpan _time; 17 | private int _delay; 18 | public override bool IsValid => (Monday || Tuesday || Wednesday || Thursday || Friday || Saturday || Sunday) && (Time < TimeSpan.FromHours(24)); 19 | 20 | public override string CronExpression 21 | { 22 | get 23 | { 24 | var time = Delay == 0 ? Time : Time.Add(TimeSpan.FromSeconds(new Random().Next(0, Delay))); 25 | if (time.TotalDays >= 1) time = new TimeSpan(23, 59, 59); 26 | return String.Format("{0} {1} {2} ? * {3}", time.Seconds, time.Minutes, time.Hours, BuildDayOfWeekPart()); 27 | } 28 | } 29 | 30 | public bool Monday 31 | { 32 | get => _monday; 33 | set 34 | { 35 | _monday = value; 36 | 37 | if (!IsValid) 38 | { 39 | _monday = true; 40 | } 41 | 42 | OnPropertyChanged(); 43 | OnPropertyChanged(nameof(IsValid)); 44 | } 45 | } 46 | 47 | public bool Tuesday 48 | { 49 | get => _tuesday; 50 | set 51 | { 52 | _tuesday = value; 53 | 54 | if (!IsValid) 55 | { 56 | _tuesday = true; 57 | } 58 | 59 | OnPropertyChanged(); 60 | OnPropertyChanged(nameof(IsValid)); 61 | } 62 | } 63 | 64 | public bool Wednesday 65 | { 66 | get => _wednesday; 67 | set 68 | { 69 | _wednesday = value; 70 | 71 | if (!IsValid) 72 | { 73 | _wednesday = true; 74 | } 75 | 76 | OnPropertyChanged(); 77 | OnPropertyChanged(nameof(IsValid)); 78 | } 79 | } 80 | 81 | public bool Thursday 82 | { 83 | get => _thursday; 84 | set 85 | { 86 | _thursday = value; 87 | 88 | if (!IsValid) 89 | { 90 | _thursday = true; 91 | } 92 | 93 | OnPropertyChanged(); 94 | OnPropertyChanged(nameof(IsValid)); 95 | } 96 | } 97 | 98 | public bool Friday 99 | { 100 | get => _friday; 101 | set 102 | { 103 | _friday = value; 104 | 105 | if (!IsValid) 106 | { 107 | _friday = true; 108 | } 109 | 110 | OnPropertyChanged(); 111 | OnPropertyChanged(nameof(IsValid)); 112 | } 113 | } 114 | 115 | public bool Saturday 116 | { 117 | get => _saturday; 118 | set 119 | { 120 | _saturday = value; 121 | 122 | if (!IsValid) 123 | { 124 | _saturday = true; 125 | } 126 | 127 | OnPropertyChanged(); 128 | OnPropertyChanged(nameof(IsValid)); 129 | } 130 | } 131 | 132 | public bool Sunday 133 | { 134 | get => _sunday; 135 | set 136 | { 137 | _sunday = value; 138 | 139 | if (!IsValid) 140 | { 141 | _sunday = true; 142 | } 143 | 144 | OnPropertyChanged(); 145 | OnPropertyChanged(nameof(IsValid)); 146 | } 147 | } 148 | 149 | [XmlIgnore] 150 | public TimeSpan Time 151 | { 152 | get => _time; 153 | set 154 | { 155 | _time = value; 156 | OnPropertyChanged(); 157 | OnPropertyChanged(nameof(IsValid)); 158 | } 159 | } 160 | 161 | [XmlElement(DataType = "duration", ElementName = "Time")] 162 | public string TimeString 163 | { 164 | get => _time.ToString(); 165 | set => _time = String.IsNullOrEmpty(value) ? TimeSpan.Zero : TimeSpan.Parse(value); 166 | } 167 | 168 | public int Delay 169 | { 170 | get => _delay; 171 | set 172 | { 173 | _delay = value; 174 | OnPropertyChanged(); 175 | } 176 | } 177 | 178 | public SimpleSchedule() 179 | { 180 | Time = DateTime.Now.TimeOfDay.Add(TimeSpan.FromSeconds(-1)); 181 | Monday = true; 182 | Tuesday = true; 183 | Wednesday = true; 184 | Thursday = true; 185 | Friday = true; 186 | Saturday = true; 187 | Sunday = true; 188 | } 189 | 190 | private string BuildDayOfWeekPart() 191 | { 192 | if (Monday && Tuesday && Wednesday && Thursday && Friday && Saturday && Sunday) 193 | { 194 | return "*"; 195 | } 196 | 197 | var sb = new StringBuilder(); 198 | if (Monday) sb.Append("MON,"); 199 | if (Tuesday) sb.Append("TUE,"); 200 | if (Wednesday) sb.Append("WED,"); 201 | if (Thursday) sb.Append("THU,"); 202 | if (Friday) sb.Append("FRI,"); 203 | if (Saturday) sb.Append("SAT,"); 204 | if (Sunday) sb.Append("SUN"); 205 | return sb.ToString().Trim(','); 206 | } 207 | } 208 | } -------------------------------------------------------------------------------- /4x/Move Mouse/Styles/Colours.xaml: -------------------------------------------------------------------------------- 1 |  3 | #9BB9E3 4 | #437CAF 5 | #23262D 6 | #101216 7 | White 8 | 11 | #888888 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /4x/Move Mouse/Themes/ChristmasTheme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/4x/Move Mouse/Themes/ChristmasTheme.png -------------------------------------------------------------------------------- /4x/Move Mouse/Themes/Themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | US Independence Day 4 | 2017-07-04T00:00:00.000000+00:00 5 | 2017-07-04T23:59:59.000000+00:00 6 | https://sites.google.com/a/windandkite.co.uk/movemouse/themes/UsIndependenceTheme.png 7 | 8 | United States 9 | 10 | 11 | 12 | Christmas 13 | 2017-12-20T00:00:00.000000+00:00 14 | 2017-12-26T23:59:59.000000+00:00 15 | https://sites.google.com/a/windandkite.co.uk/movemouse/themes/ChristmasTheme.png 16 | 17 | United Kingdom 18 | United States 19 | 20 | 21 | -------------------------------------------------------------------------------- /4x/Move Mouse/Themes/Themes_Test.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | US Independence Day 4 | 2017-07-04T00:00:00.000000+00:00 5 | 2017-07-04T23:59:59.000000+00:00 6 | https://sites.google.com/a/windandkite.co.uk/movemouse/themes/UsIndependenceTheme.png 7 | 8 | United States 9 | 10 | 11 | 12 | Christmas 13 | 2017-12-20T00:00:00.000000+00:00 14 | 2017-12-26T23:59:59.000000+00:00 15 | https://sites.google.com/a/windandkite.co.uk/movemouse/themes/ChristmasTheme.png 16 | 17 | United Kingdom 18 | United States 19 | 20 | 21 | -------------------------------------------------------------------------------- /4x/Move Mouse/Utilities/RelayCommand.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Input; 3 | 4 | namespace ellabi.Utilities 5 | { 6 | /// 7 | /// Code for RelayCommand taken from the following article: 8 | /// http://msdn.microsoft.com/en-us/magazine/dd419663.aspx 9 | /// 10 | public class RelayCommand : ICommand 11 | { 12 | #region Fields 13 | 14 | readonly Action _execute; 15 | readonly Predicate _canExecute; 16 | 17 | #endregion // Fields 18 | 19 | #region Constructors 20 | 21 | public RelayCommand(Action execute) 22 | : this(execute, null) 23 | { 24 | } 25 | 26 | public RelayCommand(Action execute, Predicate canExecute) 27 | { 28 | if (execute == null) 29 | throw new ArgumentNullException("execute"); 30 | 31 | _execute = execute; 32 | _canExecute = canExecute; 33 | } 34 | #endregion // Constructors 35 | 36 | #region ICommand Members 37 | 38 | 39 | public bool CanExecute(object parameter) 40 | { 41 | return _canExecute == null ? true : _canExecute(parameter); 42 | } 43 | 44 | public event EventHandler CanExecuteChanged 45 | { 46 | add { CommandManager.RequerySuggested += value; } 47 | remove { CommandManager.RequerySuggested -= value; } 48 | } 49 | 50 | public void Execute(object parameter) 51 | { 52 | _execute(parameter); 53 | } 54 | 55 | #endregion // ICommand Members 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /4x/Move Mouse/Wrappers/MouseCursorWrapper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics; 3 | using System.Drawing; 4 | using System.Runtime.InteropServices; 5 | using System.Threading; 6 | 7 | namespace ellabi.Wrappers 8 | { 9 | public static class MouseCursorWrapper 10 | { 11 | public static void MoveFromCurrentLocation(Point point) 12 | { 13 | try 14 | { 15 | var mi = new NativeMethods.MOUSEINPUT 16 | { 17 | dx = point.X, 18 | dy = point.Y, 19 | mouseData = 0, 20 | time = 0, 21 | dwFlags = NativeMethods.MouseEventFlags.MOVE, 22 | dwExtraInfo = UIntPtr.Zero 23 | }; 24 | var input = new NativeMethods.INPUT 25 | { 26 | mi = mi, 27 | type = Convert.ToInt32(NativeMethods.Win32Consts.INPUT_MOUSE) 28 | }; 29 | NativeMethods.SendInput(1, ref input, Marshal.SizeOf(input)); 30 | } 31 | catch (Exception ex) 32 | { 33 | StaticCode.Logger?.Here().Error(ex.Message); 34 | } 35 | } 36 | 37 | public static void MoveNorth(int distance, int speed) 38 | { 39 | for (int i = 0; i < distance; i++) 40 | { 41 | MoveFromCurrentLocation(new Point(0, -1)); 42 | Thread.Sleep(speed); 43 | } 44 | } 45 | 46 | public static void MoveNorthEast(int distance, int speed) 47 | { 48 | for (int i = 0; i < distance; i++) 49 | { 50 | MoveFromCurrentLocation(new Point(1, -1)); 51 | Thread.Sleep(speed); 52 | } 53 | } 54 | 55 | public static void MoveEast(int distance, int speed) 56 | { 57 | for (int i = 0; i < distance; i++) 58 | { 59 | MoveFromCurrentLocation(new Point(1, 0)); 60 | Thread.Sleep(speed); 61 | } 62 | } 63 | 64 | public static void MoveSouthEast(int distance, int speed) 65 | { 66 | for (int i = 0; i < distance; i++) 67 | { 68 | MoveFromCurrentLocation(new Point(1, 1)); 69 | Thread.Sleep(speed); 70 | } 71 | } 72 | 73 | public static void MoveSouth(int distance, int speed) 74 | { 75 | for (int i = 0; i < distance; i++) 76 | { 77 | MoveFromCurrentLocation(new Point(0, 1)); 78 | Thread.Sleep(speed); 79 | } 80 | } 81 | 82 | public static void MoveSouthWest(int distance, int speed) 83 | { 84 | for (int i = 0; i < distance; i++) 85 | { 86 | MoveFromCurrentLocation(new Point(-1, 1)); 87 | Thread.Sleep(speed); 88 | } 89 | } 90 | 91 | public static void MoveWest(int distance, int speed) 92 | { 93 | for (int i = 0; i < distance; i++) 94 | { 95 | MoveFromCurrentLocation(new Point(-1, 0)); 96 | Thread.Sleep(speed); 97 | } 98 | } 99 | 100 | public static void MoveNorthWest(int distance, int speed) 101 | { 102 | for (int i = 0; i < distance; i++) 103 | { 104 | MoveFromCurrentLocation(new Point(-1, -1)); 105 | Thread.Sleep(speed); 106 | } 107 | } 108 | } 109 | } -------------------------------------------------------------------------------- /4x/Move Mouse/Wrappers/NativeMethods.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Drawing; 3 | using System.Runtime.InteropServices; 4 | using System.Text; 5 | // ReSharper disable InconsistentNaming 6 | // ReSharper disable MemberCanBePrivate.Local 7 | // ReSharper disable FieldCanBeMadeReadOnly.Local 8 | 9 | namespace ellabi.Wrappers 10 | { 11 | public class NativeMethods 12 | { 13 | //public const int WH_KEYBOARD_LL = 13; 14 | 15 | //public delegate IntPtr LowLevelKeyboardProc(int nCode, IntPtr wParam, IntPtr lParam); 16 | 17 | [Flags] 18 | public enum MouseEventFlags 19 | { 20 | LEFTDOWN = 0x00000002, 21 | LEFTUP = 0x00000004, 22 | MIDDLEDOWN = 0x00000020, 23 | MIDDLEUP = 0x00000040, 24 | MOVE = 0x00000001, 25 | ABSOLUTE = 0x00008000, 26 | RIGHTDOWN = 0x00000008, 27 | RIGHTUP = 0x00000010, 28 | WHEEL = 0x00000800, 29 | HWHEEL = 0x00001000, 30 | XDOWN = 0x00000080, 31 | XUP = 0x00000100 32 | } 33 | 34 | [Flags] 35 | public enum Win32Consts 36 | { 37 | INPUT_MOUSE = 0, 38 | INPUT_KEYBOARD = 1, 39 | INPUT_HARDWARE = 2, 40 | } 41 | 42 | [Flags] 43 | public enum ShowWindowCommands 44 | { 45 | Hide = 0, 46 | Normal = 1, 47 | ShowMinimized = 2, 48 | Maximize = 3, 49 | ShowMaximized = 3, 50 | ShowNoActivate = 4, 51 | Show = 5, 52 | Minimize = 6, 53 | ShowMinNoActive = 7, 54 | ShowNa = 8, 55 | Restore = 9, 56 | ShowDefault = 10, 57 | ForceMinimize = 11 58 | } 59 | 60 | [Flags] 61 | public enum ExtendedWindowStyles 62 | { 63 | // ... 64 | WS_EX_TOOLWINDOW = 0x00000080, 65 | // ... 66 | } 67 | 68 | public enum GetWindowLongFields 69 | { 70 | GWL_HWNDPARENT = (-8), 71 | GWL_ID = (-12), 72 | GWL_STYLE = (-16), 73 | GWL_EXSTYLE = (-20) 74 | } 75 | 76 | [StructLayout(LayoutKind.Sequential)] 77 | public struct LASTINPUTINFO 78 | { 79 | private static readonly int SizeOf = Marshal.SizeOf(typeof(LASTINPUTINFO)); 80 | [MarshalAs(UnmanagedType.U4)] public int cbSize; 81 | [MarshalAs(UnmanagedType.U4)] public int dwTime; 82 | } 83 | 84 | [StructLayout(LayoutKind.Sequential)] 85 | public struct INPUT 86 | { 87 | public int type; 88 | public MOUSEINPUT mi; 89 | } 90 | 91 | [StructLayout(LayoutKind.Sequential)] 92 | public struct MOUSEINPUT 93 | { 94 | public int dx; 95 | public int dy; 96 | public int mouseData; 97 | public MouseEventFlags dwFlags; 98 | public uint time; 99 | public UIntPtr dwExtraInfo; 100 | } 101 | 102 | [StructLayout(LayoutKind.Sequential)] 103 | public struct Win32Point 104 | { 105 | public int X; 106 | public int Y; 107 | }; 108 | 109 | [Serializable] 110 | [StructLayout(LayoutKind.Sequential)] 111 | public struct WINDOWPLACEMENT 112 | { 113 | public int length; 114 | public readonly int flags; 115 | public readonly ShowWindowCommands showCmd; 116 | public readonly Point ptMinPosition; 117 | public readonly Point ptMaxPosition; 118 | public readonly Rectangle rcNormalPosition; 119 | } 120 | 121 | [DllImport("user32.dll")] 122 | public static extern uint SendInput( 123 | uint nInputs, 124 | ref INPUT pInputs, 125 | int cbSize); 126 | 127 | [DllImport("User32.dll")] 128 | public static extern bool SetCursorPos( 129 | int X, 130 | int Y); 131 | 132 | [DllImport("user32.dll")] 133 | public static extern bool GetCursorPos( 134 | ref Win32Point pt); 135 | 136 | [DllImport("user32.dll")] 137 | public static extern bool GetLastInputInfo( 138 | ref LASTINPUTINFO plii); 139 | 140 | [DllImport("user32.dll")] 141 | public static extern void mouse_event( 142 | uint dwFlags, 143 | uint dx, 144 | uint dy, 145 | uint dwData, 146 | int dwExtraInfo); 147 | 148 | [DllImport("user32.dll", SetLastError = true)] 149 | public static extern IntPtr FindWindow( 150 | string lpClassName, 151 | string lpWindowName); 152 | 153 | [DllImport("user32.dll")] 154 | public static extern bool ShowWindow( 155 | IntPtr hWnd, 156 | ShowWindowCommands nCmdShow); 157 | 158 | [DllImport("user32.dll", SetLastError = true)] 159 | public static extern bool GetWindowPlacement( 160 | IntPtr hWnd, 161 | ref WINDOWPLACEMENT lpwndpl); 162 | 163 | [DllImport("kernel32.dll", EntryPoint = "SetLastError")] 164 | public static extern void SetLastError( 165 | int dwErrorCode); 166 | 167 | [DllImport("user32.dll")] 168 | public static extern IntPtr GetWindowLong( 169 | IntPtr hWnd, 170 | int nIndex); 171 | 172 | [DllImport("user32.dll")] 173 | public static extern IntPtr SetWindowLong( 174 | IntPtr hWnd, 175 | int nIndex, 176 | int dwNewLong); 177 | 178 | [DllImport("user32.dll")] 179 | public static extern IntPtr GetForegroundWindow(); 180 | 181 | [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] 182 | public static extern int GetWindowText( 183 | IntPtr hWnd, 184 | StringBuilder lpString, 185 | int nMaxCount); 186 | } 187 | } -------------------------------------------------------------------------------- /4x/Move Mouse/app.manifest: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 54 | 62 | 63 | 64 | 65 | true/pm 66 | PerMonitorV2, PerMonitor, System 67 | 68 | 69 | 70 | 71 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /4x/Move Mouse/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /Images/blackout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Images/blackout.png -------------------------------------------------------------------------------- /Images/example_activatepreviouswindow_appearance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Images/example_activatepreviouswindow_appearance.png -------------------------------------------------------------------------------- /Images/example_activatepreviouswindow_behaviour.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Images/example_activatepreviouswindow_behaviour.png -------------------------------------------------------------------------------- /Images/example_activatepreviouswindow_capture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Images/example_activatepreviouswindow_capture.png -------------------------------------------------------------------------------- /Images/example_activatepreviouswindow_restore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Images/example_activatepreviouswindow_restore.png -------------------------------------------------------------------------------- /Images/example_wheninactive_activate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Images/example_wheninactive_activate.png -------------------------------------------------------------------------------- /Images/example_wheninactive_addaction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Images/example_wheninactive_addaction.png -------------------------------------------------------------------------------- /Images/example_wheninactive_appearance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Images/example_wheninactive_appearance.png -------------------------------------------------------------------------------- /Images/example_wheninactive_behaviour.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Images/example_wheninactive_behaviour.png -------------------------------------------------------------------------------- /Images/example_wheninactive_click.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Images/example_wheninactive_click.png -------------------------------------------------------------------------------- /Images/example_wheninactive_position.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Images/example_wheninactive_position.png -------------------------------------------------------------------------------- /Images/example_workinghours_grid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Images/example_workinghours_grid.png -------------------------------------------------------------------------------- /Images/example_workinghours_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Images/example_workinghours_settings.png -------------------------------------------------------------------------------- /Images/mm_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Images/mm_blue.png -------------------------------------------------------------------------------- /Images/mm_green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Images/mm_green.png -------------------------------------------------------------------------------- /Images/mm_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Images/mm_hover.png -------------------------------------------------------------------------------- /Images/mm_orange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Images/mm_orange.png -------------------------------------------------------------------------------- /Images/mm_purple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Images/mm_purple.png -------------------------------------------------------------------------------- /Images/mm_red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Images/mm_red.png -------------------------------------------------------------------------------- /Images/mm_yellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Images/mm_yellow.png -------------------------------------------------------------------------------- /Images/schedule_advanced.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Images/schedule_advanced.png -------------------------------------------------------------------------------- /Images/schedule_simple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Images/schedule_simple.png -------------------------------------------------------------------------------- /Images/settings_actioncontrols.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Images/settings_actioncontrols.png -------------------------------------------------------------------------------- /Images/settings_actionpanel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Images/settings_actionpanel.png -------------------------------------------------------------------------------- /Images/settings_actionproperties.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Images/settings_actionproperties.png -------------------------------------------------------------------------------- /Images/settings_addaction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Images/settings_addaction.png -------------------------------------------------------------------------------- /Images/settings_appearance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Images/settings_appearance.png -------------------------------------------------------------------------------- /Images/settings_behaviour.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Images/settings_behaviour.png -------------------------------------------------------------------------------- /Images/settings_blackouts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Images/settings_blackouts.png -------------------------------------------------------------------------------- /Images/settings_schedules.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Images/settings_schedules.png -------------------------------------------------------------------------------- /Images/systemtray_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Images/systemtray_notification.png -------------------------------------------------------------------------------- /Images/watch_idle_time.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Images/watch_idle_time.png -------------------------------------------------------------------------------- /Mice/Bernard01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Mice/Bernard01.jpg -------------------------------------------------------------------------------- /Mice/Bianca01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Mice/Bianca01.jpg -------------------------------------------------------------------------------- /Mice/Brain01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Mice/Brain01.jpg -------------------------------------------------------------------------------- /Mice/Danger01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Mice/Danger01.png -------------------------------------------------------------------------------- /Mice/Despereaux01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Mice/Despereaux01.jpg -------------------------------------------------------------------------------- /Mice/FievelMousekewitz01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Mice/FievelMousekewitz01.png -------------------------------------------------------------------------------- /Mice/FingerMouse01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Mice/FingerMouse01.jpg -------------------------------------------------------------------------------- /Mice/GadgetHackwrench01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Mice/GadgetHackwrench01.png -------------------------------------------------------------------------------- /Mice/Itchy01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Mice/Itchy01.png -------------------------------------------------------------------------------- /Mice/JaqGus01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Mice/JaqGus01.jpg -------------------------------------------------------------------------------- /Mice/Jerry01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Mice/Jerry01.png -------------------------------------------------------------------------------- /Mice/Mice.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | Bernard 4 | Bernard01.jpg 5 | 6 | 7 | 8 | Bianca 9 | Bianca01.jpg 10 | 11 | 12 | 13 | Brain 14 | Brain01.jpg 15 | 16 | 17 | 18 | Danger Mouse 19 | Danger01.png 20 | 21 | 22 | 23 | Despereaux 24 | Despereaux01.jpg 25 | 26 | 27 | 28 | Fievel Mousekewitz 29 | FievelMousekewitz01.png 30 | 31 | 32 | 33 | Finger Mouse 34 | FingerMouse01.jpg 35 | 36 | 37 | 38 | Gadget Hackwrench 39 | GadgetHackwrench01.png 40 | 41 | 42 | 43 | Itchy 44 | Itchy01.png 45 | 46 | 47 | 48 | Jaq & Gus 49 | JaqGus01.jpg 50 | 51 | 52 | 53 | Jerry 54 | Jerry01.png 55 | 56 | 57 | 58 | Mickey 59 | Mickey01.jpg 60 | 61 | 62 | 63 | Mighty Mouse 64 | Mighty01.jpg 65 | 66 | 67 | 68 | Minnie 69 | Minnie01.jpg 70 | 71 | 72 | 73 | Monterey Jack 74 | MontereyJack01.jpg 75 | 76 | 77 | 78 | Pikachu 79 | Pikachu01.jpg 80 | 81 | 82 | 83 | Pinky 84 | Pinky01.jpg 85 | 86 | 87 | 88 | Pixie & Dixie 89 | PixieDixie01.jpg 90 | 91 | 92 | 93 | Roquefort 94 | Roquefort01.gif 95 | 96 | 97 | 98 | Speedy Gonzales 99 | Speedy01.jpg 100 | 101 | 102 | 103 | Stuart Little 104 | StuartLittle01.jpg 105 | 106 | 107 | 108 | Timothy 109 | Timothy01.JPG 110 | 111 | 112 | -------------------------------------------------------------------------------- /Mice/Mickey01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Mice/Mickey01.jpg -------------------------------------------------------------------------------- /Mice/Mighty01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Mice/Mighty01.jpg -------------------------------------------------------------------------------- /Mice/Minnie01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Mice/Minnie01.jpg -------------------------------------------------------------------------------- /Mice/MontereyJack01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Mice/MontereyJack01.jpg -------------------------------------------------------------------------------- /Mice/Pikachu01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Mice/Pikachu01.jpg -------------------------------------------------------------------------------- /Mice/Pinky01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Mice/Pinky01.jpg -------------------------------------------------------------------------------- /Mice/PixieDixie01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Mice/PixieDixie01.jpg -------------------------------------------------------------------------------- /Mice/Roquefort01.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Mice/Roquefort01.gif -------------------------------------------------------------------------------- /Mice/Speedy01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Mice/Speedy01.jpg -------------------------------------------------------------------------------- /Mice/StuartLittle01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Mice/StuartLittle01.jpg -------------------------------------------------------------------------------- /Mice/Timothy01.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Mice/Timothy01.JPG -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # About 2 | Move Mouse is a simple piece of software that is designed to simulate user activity. 3 | 4 | Originally designed to prevent Windows from locking the user session or going to sleep, Move Mouse can be deployed in a wide range of [Scenarios](https://github.com/sw3103/movemouse/wiki/Scenarios). 5 | 6 | 7 | 8 | # Donate 9 | Move Mouse will always be free, but if you would like to buy me a beer to show your appreciation, you can do so using the following link. Thanks! 10 | 11 | [PayPal Donate](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QZTWHD9CRW5XN) 12 | 13 | # Wiki 14 | Head over to the [Wiki](https://github.com/sw3103/movemouse/wiki) where you will find a bunch of articles for [Installation](https://github.com/sw3103/movemouse/wiki/installation), [Troubleshooting](https://github.com/sw3103/movemouse/wiki/troubleshooting), etc. 15 | 16 | # Contact 17 | Please feel free to contact me via [Twitter](https://twitter.com/movemouse) or [email](mailto:contact@movemouse.co.uk) for any suggestions or issues you may have. A lot of the features which are included in Move Mouse today exist because of feedback I have received. 18 | -------------------------------------------------------------------------------- /Themes/ChristmasTheme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Themes/ChristmasTheme.png -------------------------------------------------------------------------------- /Themes/HalloweenTheme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Themes/HalloweenTheme.png -------------------------------------------------------------------------------- /Themes/StDavidsDayTheme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Themes/StDavidsDayTheme.png -------------------------------------------------------------------------------- /Themes/Themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | US Independence Day 4 | 2021-07-04T00:00:00.000000+00:00 5 | 2021-07-04T23:59:59.000000+00:00 6 | https://raw.githubusercontent.com/sw3103/movemouse/master/Themes/UsIndependenceTheme.png 7 | 8 | United States 9 | 10 | 11 | 12 | Christmas 13 | 2020-12-20T00:00:00.000000+00:00 14 | 2020-12-26T23:59:59.000000+00:00 15 | https://raw.githubusercontent.com/sw3103/movemouse/master/Themes/ChristmasTheme.png 16 | 17 | 18 | Halloween 19 | 2020-10-26T00:00:00.000000+00:00 20 | 2020-11-01T23:59:59.000000+00:00 21 | https://raw.githubusercontent.com/sw3103/movemouse/master/Themes/HalloweenTheme.png 22 | 23 | 24 | St David's Day 25 | 2021-03-01T00:00:00.000000+00:00 26 | 2021-03-01T23:59:59.000000+00:00 27 | https://raw.githubusercontent.com/sw3103/movemouse/master/Themes/StDavidsDayTheme.png 28 | 29 | United Kingdom 30 | 31 | 32 | -------------------------------------------------------------------------------- /Themes/Themes_Test.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | US Independence Day 4 | 2021-07-04T00:00:00.000000+00:00 5 | 2021-07-04T23:59:59.000000+00:00 6 | https://raw.githubusercontent.com/sw3103/movemouse/master/Themes/UsIndependenceTheme.png 7 | 8 | United States 9 | 10 | 11 | 12 | Christmas 13 | 2020-12-20T00:00:00.000000+00:00 14 | 2020-12-26T23:59:59.000000+00:00 15 | https://raw.githubusercontent.com/sw3103/movemouse/master/Themes/ChristmasTheme.png 16 | 17 | 18 | Halloween 19 | 2020-10-26T00:00:00.000000+00:00 20 | 2021-11-01T23:59:59.000000+00:00 21 | https://razw.githubusercontent.com/sw3103/movemouse/master/Themes/HalloweenTheme_.png 22 | 23 | 24 | St David's Day 25 | 2021-03-01T00:00:00.000000+00:00 26 | 2021-03-01T23:59:59.000000+00:00 27 | https://raw.githubusercontent.com/sw3103/movemouse/master/Themes/StDavidsDayTheme.png 28 | 29 | United Kingdom 30 | 31 | 32 | -------------------------------------------------------------------------------- /Themes/UsIndependenceTheme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sw3103/movemouse/5e1f819e7b57dc84c39d3de3c8c7340f6e64078b/Themes/UsIndependenceTheme.png -------------------------------------------------------------------------------- /Update_3x.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 4 | 16 5 | 1 6 | 01-Feb-2023 7 | 01-Feb-2023 8 | SELECT * FROM Win32_OperatingSystem 9 | https://github.com/sw3103/movemouse/releases/tag/v4.16.1 10 | 11 | 12 | Now the version that was previously only available on the Microsoft Store is downloadable on GitHub 13 | 14 | 15 | -------------------------------------------------------------------------------- /Update_4x.xml: -------------------------------------------------------------------------------- 1 | 2 | 4.18.2 3 | https://github.com/sw3103/movemouse/releases/tag/v4.18.2 4 | -------------------------------------------------------------------------------- /Utils/Activate Window.ps1: -------------------------------------------------------------------------------- 1 | # https://github.com/sw3103/movemouse/wiki/Scenarios#reactivate-previous-active-window-on-pausestop 2 | 3 | $TextFilePath = Join-Path -Path:$env:TEMP -ChildPath:"MoveMouseWindowPid.txt" 4 | 5 | if (Test-Path -Path:$TextFilePath) { 6 | $WindowPid = Get-Content -Path:$TextFilePath 7 | 8 | if (![System.String]::IsNullOrWhiteSpace($WindowPid)) { 9 | Add-Type -AssemblyName:"Microsoft.VisualBasic" 10 | [Microsoft.VisualBasic.Interaction]::AppActivate([int]$WindowPid) 11 | } 12 | else { 13 | throw "$TextFilePath was empty." 14 | } 15 | } 16 | else { 17 | throw "$TextFilePath does not exist. You need to run this script with the -Capture parameter first." 18 | } -------------------------------------------------------------------------------- /Utils/Capture Active Window.ps1: -------------------------------------------------------------------------------- 1 | # https://github.com/sw3103/movemouse/wiki/Scenarios#reactivate-previous-active-window-on-pausestop 2 | 3 | Add-Type -TypeDefinition @" 4 | using System; 5 | using System.Runtime.InteropServices; 6 | 7 | public class NativeMethods 8 | { 9 | [DllImport("user32.dll")] 10 | public static extern IntPtr GetForegroundWindow(); 11 | 12 | [DllImport("user32.dll", SetLastError=true)] 13 | public static extern uint GetWindowThreadProcessId( 14 | IntPtr hWnd, 15 | out uint lpdwProcessId); 16 | } 17 | "@ 18 | 19 | $TextFilePath = Join-Path -Path:$env:TEMP -ChildPath:"MoveMouseWindowPid.txt" 20 | $Hwnd = [NativeMethods]::GetForegroundWindow() 21 | $WindowPid = 0 22 | 23 | if ([NativeMethods]::GetWindowThreadProcessId($Hwnd, [ref]$WindowPid) -gt 0) { 24 | $WindowPid | Out-File -FilePath:$TextFilePath -Append:$false -Force 25 | } 26 | else { 27 | throw "Error capturing active window process ID." 28 | } -------------------------------------------------------------------------------- /Utils/Watch Idle TIme.ps1: -------------------------------------------------------------------------------- 1 | # https://github.com/sw3103/movemouse/wiki/Troubleshooting#idle-time 2 | 3 | Add-Type @' 4 | using System; 5 | using System.Diagnostics; 6 | using System.Runtime.InteropServices; 7 | 8 | namespace PInvoke.Win32 9 | { 10 | public static class UserInput 11 | { 12 | [DllImport("user32.dll", SetLastError=false)] 13 | private static extern bool GetLastInputInfo(ref LASTINPUTINFO plii); 14 | 15 | [StructLayout(LayoutKind.Sequential)] 16 | private struct LASTINPUTINFO { 17 | public uint cbSize; 18 | public int dwTime; 19 | } 20 | 21 | public static DateTime LastInput 22 | { 23 | get 24 | { 25 | DateTime bootTime = DateTime.UtcNow.AddMilliseconds(-Environment.TickCount); 26 | DateTime lastInput = bootTime.AddMilliseconds(LastInputTicks); 27 | return lastInput; 28 | } 29 | } 30 | 31 | public static TimeSpan IdleTime 32 | { 33 | get 34 | { 35 | return DateTime.UtcNow.Subtract(LastInput); 36 | } 37 | } 38 | 39 | public static int LastInputTicks 40 | { 41 | get 42 | { 43 | LASTINPUTINFO lii = new LASTINPUTINFO(); 44 | lii.cbSize = (uint)Marshal.SizeOf(typeof(LASTINPUTINFO)); 45 | GetLastInputInfo(ref lii); 46 | return lii.dwTime; 47 | } 48 | } 49 | } 50 | } 51 | '@ 52 | 53 | while ($true) { 54 | Write-Progress -Activity:"Watching idle time" -Status:"Last input: $([PInvoke.Win32.UserInput]::LastInput) | Idle time: $([PInvoke.Win32.UserInput]::IdleTime)" 55 | Start-Sleep -Milliseconds:100 56 | } --------------------------------------------------------------------------------