コード例 #1
0
        static public void FileFound(object source, FileSystemEventArgs e)
        {
            string file   = e.FullPath
            , action      = null
            , parameter   = null
            , fullContent = null;

            if (!MainProgram.isPerformingAction)
            {
                MainProgram.isPerformingAction = true;
                MainProgram.DoDebug("File exists, checking the content...");

                while (FileInUse(file))
                {
                    ;
                }
                if (!File.Exists(file))
                {
                    MainProgram.isPerformingAction = false;
                    return;
                }
                if (new FileInfo(file).Length != 0)
                {
                    MainProgram.DoDebug("Action set. File is not empty...");
                    action = "empty file";

                    string line = File.ReadAllText(file);
                    MainProgram.DoDebug("Read complete, content: " + line);
                    DateTime lastModified = File.GetLastWriteTime(file);
                    action      = line;
                    fullContent = line;
                    string assistantParam = null;

                    if (lastModified.AddSeconds(Properties.Settings.Default.FileEditedMargin) > DateTime.Now)
                    {
                        //If file has been modified recently - check for action
                        MainProgram.DoDebug("File modified within the last " + Properties.Settings.Default.FileEditedMargin + " seconds...");

                        //Whether it's Google Assistant or Amazon Alexa (included in the default IFTTT applets)
                        if (line.Contains("[") && line.Contains("]"))
                        {
                            action         = line.Split('[')[0];
                            assistantParam = line.Split('[')[1];
                            assistantParam = assistantParam.Split(']')[0];

                            MainProgram.DoDebug("Executed using; " + assistantParam);
                        }

                        if (action.Contains(":"))
                        {
                            //Contains a parameter
                            action    = line.Split(':')[0];
                            parameter = line.Split(':')[1];
                            if (parameter == "")
                            {
                                parameter = null;
                            }
                        }

                        if (MainProgram.testingAction)
                        {
                            MainProgram.DoDebug("Test went through: " + action);
                        }

                        //TO-DO; Optimize action-execution (less code) & make it its own function
                        int?actionNumber = null;
                        switch (action)
                        {
                        case "shutdown":
                            //Shuts down the computer
                            string shutdownParameters = "/s /t 0";
                            if (parameter != null)
                            {
                                if (parameter == "abort")
                                {
                                    shutdownParameters = "abort";
                                }
                                else
                                {
                                    if (parameter.Contains("/t"))
                                    {
                                        shutdownParameters = !parameter.Contains("/s") ? "/s " : "" + parameter;
                                    }
                                    else
                                    {
                                        shutdownParameters = !parameter.Contains("/s") ? "/s " : "" + parameter + " /t 0";
                                    }
                                }
                            }

                            if (MainProgram.testingAction)
                            {
                                successMessage = "Simulated shutdown";
                            }
                            else
                            {
                                if (shutdownParameters != "abort")
                                {
                                    MainProgram.DoDebug("Shutting down computer...");
                                    successMessage = "Shutting down";
                                    Process.Start("shutdown", shutdownParameters);
                                }
                                else
                                {
                                    MainProgram.DoDebug("Cancelling shutdown...");
                                    Process.Start("shutdown", "/a");
                                    successMessage = "Aborted shutdown";
                                }
                            }
                            break;

                        case "restart":
                            //Restart the computer
                            string restartParameters = "/r /t 0";
                            if (parameter != null)
                            {
                                if (parameter == "abort")
                                {
                                    restartParameters = "abort";
                                }
                                else
                                {
                                    if (parameter.Contains("/t"))
                                    {
                                        restartParameters = !parameter.Contains("/r") ? "/s " : "" + parameter;
                                    }
                                    else
                                    {
                                        restartParameters = !parameter.Contains("/r") ? "/s " : "" + parameter + " /t 0";
                                    }
                                }
                            }
                            if (MainProgram.testingAction)
                            {
                                successMessage = "Simulated restart";
                            }
                            else
                            {
                                if (restartParameters != "abort")
                                {
                                    MainProgram.DoDebug("Restarting computer...");
                                    successMessage = "Restarting";
                                    Process.Start("shutdown", restartParameters);
                                }
                                else
                                {
                                    MainProgram.DoDebug("Cancelling restart...");
                                    Process.Start("shutdown", "/a");
                                    successMessage = "Aborted restart";
                                }
                            }
                            break;

                        case "sleep":
                            //Puts computer to sleep
                            if (parameter == null)
                            {
                                if (!MainProgram.testingAction)
                                {
                                    MainProgram.DoDebug("Sleeping computer...");
                                    Application.SetSuspendState(PowerState.Suspend, true, true);
                                }
                            }
                            else
                            {
                                bool doForce = true;
                                switch (parameter)
                                {
                                case "true":
                                    doForce = true;
                                    break;

                                case "false":
                                    doForce = false;
                                    break;

                                default:
                                    MainProgram.DoDebug("ERROR: Parameter (" + parameter + ") is invalid for \"" + action + "\". Accepted parameters: \"true\" and \"false\"");
                                    MainProgram.errorMessage = "Parameter \"" + parameter + "\" is invalid for the \"" + action + "\" action. Accepted parameters: \"true\" and \"false\")";
                                    break;
                                }
                                if (!MainProgram.testingAction)
                                {
                                    MainProgram.DoDebug("Sleeping computer...");
                                    Application.SetSuspendState(PowerState.Suspend, doForce, true);
                                }
                            }

                            if (MainProgram.testingAction)
                            {
                                successMessage = "Simulated PC sleep";
                            }
                            else
                            {
                                successMessage = "Put computer to sleep";
                            }
                            break;

                        case "hibernate":
                            //Hibernates computer
                            actionNumber = 12;
                            if (parameter == null)
                            {
                                if (!MainProgram.testingAction)
                                {
                                    MainProgram.DoDebug("Hibernating computer...");
                                    Application.SetSuspendState(PowerState.Hibernate, true, true);
                                }
                            }
                            else
                            {
                                bool doForce = true;
                                switch (parameter)
                                {
                                case "true":
                                    doForce = true;
                                    break;

                                case "false":
                                    doForce = false;
                                    break;

                                default:
                                    MainProgram.DoDebug("ERROR: Parameter (" + parameter + ") is invalid for \"" + action + "\". Accepted parameters: \"true\" and \"false\"");
                                    MainProgram.errorMessage = "Parameter \"" + parameter + "\" is invalid for the \"" + action + "\" action. Accepted parameters: \"true\" and \"false\")";
                                    break;
                                }
                                if (!MainProgram.testingAction)
                                {
                                    MainProgram.DoDebug("Hibernating computer...");
                                    Application.SetSuspendState(PowerState.Hibernate, doForce, true);
                                }
                            }

                            if (MainProgram.testingAction)
                            {
                                successMessage = "Simulated PC hibernate";
                            }
                            else
                            {
                                successMessage = "Put computer in hibernation";
                            }
                            break;

                        case "logout":
                            //Logs out of the current user
                            if (MainProgram.testingAction)
                            {
                                successMessage = "Simulated logout";
                            }
                            else
                            {
                                MainProgram.DoDebug("Logging out of user...");
                                successMessage = "Logged out of user";
                                ExitWindowsEx(0, 0);
                            }
                            break;

                        case "lock":
                            //Lock computer
                            if (MainProgram.testingAction)
                            {
                                successMessage = "Simulated PC lock";
                            }
                            else
                            {
                                MainProgram.DoDebug("Locking computer...");
                                LockWorkStation();
                                successMessage = "Locked pc";
                            }
                            break;

                        case "mute":
                            //Mutes windows
                            //Parameter optional (true/false)
                            bool doMute = true;

                            if (parameter == null)
                            {
                                //No parameter - toggle
                                doMute = !AudioManager.GetMasterVolumeMute();
                            }
                            else
                            {
                                //Parameter set;
                                switch (parameter)
                                {
                                case "true":
                                    doMute = true;
                                    break;

                                case "false":
                                    doMute = false;
                                    break;

                                default:
                                    MainProgram.DoDebug("ERROR: Parameter (" + parameter + ") is invalid for \"" + action + "\". Accepted parameters: \"true\" and \"false\"");
                                    MainProgram.errorMessage = "Parameter \"" + parameter + "\" is invalid for the \"" + action + "\" action. Accepted parameters: \"true\" and \"false\")";
                                    break;
                                }
                            }

                            if (MainProgram.testingAction)
                            {
                                successMessage = "Simulated PC" + (doMute ? "muted " : "unmute");
                            }
                            else
                            {
                                AudioManager.SetMasterVolumeMute(doMute);
                                successMessage = (doMute ? "Muted " : "Unmuted") + " pc";
                            }
                            break;

                        case "set_volume":
                            //Sets volume to a specific percent
                            //Requires parameter (percent, int)
                            if (requireParameter(parameter))
                            {
                                if (double.TryParse(parameter, out double volumeLevel))
                                {
                                    if (volumeLevel >= 0 && volumeLevel <= 100)
                                    {
                                        if (!MainProgram.testingAction)
                                        {
                                            if (Properties.Settings.Default.UnmuteOnVolumeChange)
                                            {
                                                AudioManager.SetMasterVolumeMute(false);
                                            }
                                            AudioManager.SetMasterVolume((float)volumeLevel);
                                        }
                                        if (AudioManager.GetMasterVolume() != volumeLevel)
                                        {
                                            //Something went wrong... Audio not set to parameter-level
                                            MainProgram.DoDebug("ERROR: Volume was not sat");
                                            MainProgram.errorMessage = "Something went wrong when setting the volume";
                                        }
                                        else
                                        {
                                            if (!MainProgram.testingAction)
                                            {
                                                successMessage = "Set volume to " + volumeLevel + "%";
                                            }
                                            else
                                            {
                                                successMessage = "Simulated setting system volume to " + volumeLevel + "%";
                                            }
                                        }
                                    }
                                    else
                                    {
                                        MainProgram.DoDebug("ERROR: Parameter is an invalid number, range; 0-100 (" + volumeLevel + ")");
                                        MainProgram.errorMessage = "Can't set volume to " + volumeLevel + "%, has to be a number from 0-100";
                                    }
                                }
                                else
                                {
                                    MainProgram.DoDebug("ERROR: Parameter (" + parameter + ") not convertable to double");
                                    MainProgram.errorMessage = "Not a valid parameter (has to be a number)";
                                }
                            }
                            break;

                        case "music":
                            if (requireParameter(parameter))
                            {
                                switch (parameter)
                                {
                                case "previous":
                                    actionNumber = 8;

                                    if (MainProgram.testingAction)
                                    {
                                        successMessage = "MUSIC: Simulated skipping song";
                                    }
                                    else
                                    {
                                        keybd_event(VK_MEDIA_PREV_TRACK, 0, KEYEVENTF_EXTENTEDKEY, 0);
                                        successMessage = "MUSIC: Skipped song";
                                    }
                                    break;

                                /*case "previousx2": //WIP
                                 *  keybd_event(VK_MEDIA_PREV_TRACK, 0, KEYEVENTF_EXTENTEDKEY, 0);
                                 *  keybd_event(VK_MEDIA_PREV_TRACK, 0, KEYEVENTF_EXTENTEDKEY, 0);
                                 *  success_message = "MUSIC: Skipped song (x2)";
                                 *  break;*/
                                case "next":
                                    actionNumber = 10;

                                    if (MainProgram.testingAction)
                                    {
                                        successMessage = "MUSIC: Simulated going to next song";
                                    }
                                    else
                                    {
                                        keybd_event(VK_MEDIA_NEXT_TRACK, 0, KEYEVENTF_EXTENTEDKEY, 0);
                                        successMessage = "MUSIC: Next song";
                                    }
                                    break;

                                case "play_pause":
                                    actionNumber = 9;

                                    if (MainProgram.testingAction)
                                    {
                                        successMessage = "MUSIC: Simulated play/pause";
                                    }
                                    else
                                    {
                                        keybd_event(VK_MEDIA_PLAY_PAUSE, 0, KEYEVENTF_EXTENTEDKEY, 0);
                                        successMessage = "MUSIC: Played/Paused";
                                    }
                                    break;

                                default:
                                    MainProgram.DoDebug("ERROR: Unknown parameter");
                                    MainProgram.errorMessage = "Unknown parameter \"" + parameter + "\"";
                                    break;
                                }
                            }
                            break;

                        case "open":
                            if (requireParameter(parameter))
                            {
                                string fileLocation = (!parameter.Contains(@":\")) ? Path.Combine(MainProgram.shortcutLocation, parameter) : parameter;
                                if (File.Exists(fileLocation))
                                {
                                    if (!MainProgram.testingAction)
                                    {
                                        Process.Start(fileLocation);
                                        successMessage = "OPEN: opened file; " + fileLocation;
                                    }
                                    else
                                    {
                                        successMessage = "OPEN: simulated opening file; " + fileLocation;
                                    }
                                }
                                else
                                {
                                    MainProgram.DoDebug("ERROR: file doesn't exist (" + fileLocation + ")");
                                    MainProgram.errorMessage = "File doesn't exist (" + fileLocation + ")";
                                }
                            }
                            break;

                        case "die":
                            //Exit ACC
                            if (!MainProgram.testingAction)
                            {
                                successMessage = "Shutting down ACC";
                                Application.Exit();
                            }
                            else
                            {
                                successMessage = "Simulated shutting down ACC";
                            }
                            break;

                        default:
                            //Unknown action
                            MainProgram.DoDebug("ERROR: Unknown action");
                            MainProgram.errorMessage = "Unknown action \"" + action + "\"";
                            break;
                        }
                        if (successMessage != "")
                        {
                            if (actionNumber != null)
                            {
                                //Has specified number
                                AnalyticsSettings.AddCount((int)actionNumber, assistantParam);
                            }
                            else
                            {
                                //YOLO
                                AnalyticsSettings.AddCount(action, assistantParam);
                            }

                            MainProgram.DoDebug("\nSUCCESS: " + successMessage + "\n");
                        }
                    }
                    else
                    {
                        MainProgram.DoDebug("No action set within the last " + Properties.Settings.Default.FileEditedMargin + " seconds. File last edited; " + lastModified + ". PC time; " + DateTime.Now);
                        MainProgram.errorMessage = "No action set within the last " + Properties.Settings.Default.FileEditedMargin + " seconds. File last edited; " + lastModified + ". PC time; " + DateTime.Now;
                    }
                }
                else
                {
                    MainProgram.DoDebug("File is empty");
                    MainProgram.errorMessage = "No action set (file is empty)";
                }

                MainProgram.ClearFile(file);
                if (MainProgram.errorMessage.Length != 0 && !MainProgram.debug)
                {
                    MessageBox.Show(MainProgram.errorMessage, "Error | " + MainProgram.messageBoxTitle);
                    MainProgram.errorMessage = "";
                }
                MainProgram.isPerformingAction = false;
            }
            else
            {
                MainProgram.DoDebug("Already performing an action");
                MainProgram.errorMessage = "Already performing an action";
            }

            if (MainProgram.testingAction)
            {
                MainProgram.testActionWindow.ActionExecuted(successMessage, MainProgram.errorMessage, action, parameter, fullContent);
            }
            successMessage = "";
        }
コード例 #2
0
        static public void FileFound(object source, FileSystemEventArgs e)
        {
            string file = e.FullPath;

            if (!MainProgram.isPerformingAction)
            {
                MainProgram.isPerformingAction = true;
                MainProgram.DoDebug("File exists, checking the content...");

                while (FileInUse(file))
                {
                    ;
                }
                if (new FileInfo(file).Length != 0)
                {
                    MainProgram.DoDebug("Action set. File is not empty...");

                    string line = File.ReadAllText(file);
                    MainProgram.DoDebug("Read complete, content: " + line);
                    DateTime lastModified = File.GetLastWriteTime(file);
                    string   action       = line;
                    string   parameter    = null;
                    string   timeParam    = null;

                    if (lastModified.AddSeconds(Properties.Settings.Default.FileEditedMargin) > DateTime.Now)
                    {
                        //If file has been modified recently - check for action
                        MainProgram.DoDebug("File modified within the last " + Properties.Settings.Default.FileEditedMargin + " seconds...");

                        //Check for timestamp param - for future use (possibly) to calculate how long the request took -
                        //however Google Assistant doesn't return second-stamp, only hour and minute, so unless they implement it; can't be used
                        if (line.Contains("[") && line.Contains("]"))
                        {
                            action    = line.Split('[')[0];
                            timeParam = line.Split('[')[1];
                            timeParam.Replace("]", "");

                            if (timeParam.Contains("time;"))
                            {
                                timeParam = timeParam.Split(';')[1];
                                MainProgram.DoDebug("Action has time parameter; " + timeParam);
                            }
                        }

                        if (action.Contains(":"))
                        {
                            //Contains a parameter
                            action    = line.Split(':')[0];
                            parameter = line.Split(':')[1];
                            if (parameter == "")
                            {
                                parameter = null;
                            }
                        }

                        if (MainProgram.testingAction)
                        {
                            MainProgram.DoDebug("Test went through: " + action);
                        }

                        switch (action)
                        {
                        case "shutdown":
                            //Shuts down the computer
                            string shutdownParameters = "/s /t 0";
                            if (parameter != null)
                            {
                                if (parameter == "abort")
                                {
                                    shutdownParameters = "abort";
                                }
                                else
                                {
                                    if (parameter.Contains("/t"))
                                    {
                                        shutdownParameters = !parameter.Contains("/s") ? "/s " : "" + parameter;
                                    }
                                    else
                                    {
                                        shutdownParameters = !parameter.Contains("/s") ? "/s " : "" + parameter + " /t 0";
                                    }
                                }
                            }

                            if (MainProgram.testingAction)
                            {
                                MainProgram.testActionMessage = shutdownParameters;
                            }
                            else
                            {
                                if (shutdownParameters != "abort")
                                {
                                    MainProgram.DoDebug("Shutting down computer...");
                                    successMessage = "Shutting down";
                                    Process.Start("shutdown", shutdownParameters);
                                }
                                else
                                {
                                    MainProgram.DoDebug("Cancelling shutdown...");
                                    Process.Start("shutdown", "/a");
                                    successMessage = "Aborted shutdown";
                                }
                            }
                            break;

                        case "restart":
                            //Restart the computer
                            string restartParameters = "/r /t 0";
                            if (parameter != null)
                            {
                                if (parameter == "abort")
                                {
                                    restartParameters = "abort";
                                }
                                else
                                {
                                    if (parameter.Contains("/t"))
                                    {
                                        restartParameters = !parameter.Contains("/r") ? "/r " : "" + parameter;
                                    }
                                    else
                                    {
                                        restartParameters = !parameter.Contains("/r") ? "/r " : "" + parameter + " /t 0";
                                    }
                                }
                            }

                            if (MainProgram.testingAction)
                            {
                                MainProgram.testActionMessage = restartParameters;
                            }
                            else
                            {
                                if (restartParameters != "abort")
                                {
                                    MainProgram.DoDebug("Restarting computer...");
                                    successMessage = "Restarting";
                                    Process.Start("shutdown", restartParameters);
                                }
                                else
                                {
                                    MainProgram.DoDebug("Cancelling restart...");
                                    Process.Start("shutdown", "/a");
                                    successMessage = "Aborted restart";
                                }
                            }
                            break;

                        case "sleep":
                            //Puts computer to sleep
                            if (MainProgram.testingAction)
                            {
                            }
                            MainProgram.DoDebug("Putting computer to sleep...");

                            if (parameter == null)
                            {
                                Application.SetSuspendState(PowerState.Suspend, true, true);
                            }
                            else
                            {
                                bool doForce = true;
                                switch (parameter)
                                {
                                case "true":
                                    doForce = true;
                                    break;

                                case "false":
                                    doForce = false;
                                    break;

                                default:
                                    MainProgram.DoDebug("ERROR: Parameter (" + parameter + ") is invalid for \"" + action + "\". Accepted parameters: \"true\" and \"false\"");
                                    MainProgram.errorMessage = "Parameter \"" + parameter + "\" is invalid for the \"" + action + "\" action. Accepted parameters: \"true\" and \"false\")";
                                    break;
                                }
                                Application.SetSuspendState(PowerState.Suspend, doForce, true);
                            }

                            successMessage = "Put computer to sleep";
                            break;

                        case "logout":
                            //Logs out of the current user
                            MainProgram.DoDebug("Logging out of user...");

                            ExitWindowsEx(0, 0);
                            successMessage = "Logged out of user";
                            break;

                        case "lock":
                            //Lock computer
                            if (MainProgram.testingAction)
                            {
                                successMessage = "Simulated PC lock";
                            }
                            else
                            {
                                MainProgram.DoDebug("Locking computer...");
                                LockWorkStation();
                                successMessage = "Locked pc";
                            }
                            break;

                        case "mute":
                            //Mutes windows
                            //Parameter optional (true/false)
                            bool doMute = true;

                            if (parameter == null)
                            {
                                //No parameter - toggle
                                doMute = !AudioManager.GetMasterVolumeMute();
                            }
                            else
                            {
                                //Parameter set;
                                switch (parameter)
                                {
                                case "true":
                                    doMute = true;
                                    break;

                                case "false":
                                    doMute = false;
                                    break;

                                default:
                                    MainProgram.DoDebug("ERROR: Parameter (" + parameter + ") is invalid for \"" + action + "\". Accepted parameters: \"true\" and \"false\"");
                                    MainProgram.errorMessage = "Parameter \"" + parameter + "\" is invalid for the \"" + action + "\" action. Accepted parameters: \"true\" and \"false\")";
                                    break;
                                }
                            }

                            AudioManager.SetMasterVolumeMute(doMute);
                            successMessage = (doMute ? "Muted " : "Unmuted") + "pc";
                            break;

                        case "set_volume":
                            //Sets volume to a specific percent
                            //Requires parameter (percent, int)
                            if (requireParameter(parameter))
                            {
                                if (double.TryParse(parameter, out double volumeLevel))
                                {
                                    if (volumeLevel >= 0 && volumeLevel <= 100)
                                    {
                                        if (Properties.Settings.Default.UnmuteOnVolumeChange)
                                        {
                                            AudioManager.SetMasterVolumeMute(false);
                                        }
                                        AudioManager.SetMasterVolume((float)volumeLevel);
                                        if (AudioManager.GetMasterVolume() != volumeLevel)
                                        {
                                            //Something went wrong... Audio not set to parameter-level
                                            MainProgram.DoDebug("ERROR: Volume was not sat");
                                            MainProgram.errorMessage = "Something went wrong when setting the volume";
                                        }
                                        else
                                        {
                                            successMessage = "Set volume to " + volumeLevel + "%";
                                        }
                                    }
                                    else
                                    {
                                        MainProgram.DoDebug("ERROR: Parameter is an invalid number, range; 0-100 (" + volumeLevel + ")");
                                        MainProgram.errorMessage = "Can't set volume to " + volumeLevel + "%, has to be a number from 0-100";
                                    }
                                }
                                else
                                {
                                    MainProgram.DoDebug("ERROR: Parameter (" + parameter + ") not convertable to double");
                                    MainProgram.errorMessage = "Not a valid parameter (has to be a number)";
                                }
                            }
                            break;

                        case "music":
                            if (requireParameter(parameter))
                            {
                                switch (parameter)
                                {
                                case "previous":
                                    keybd_event(VK_MEDIA_PREV_TRACK, 0, KEYEVENTF_EXTENTEDKEY, 0);
                                    successMessage = "MUSIC: Skipped song";
                                    break;

                                /*case "previousx2": //WIP
                                 *  keybd_event(VK_MEDIA_PREV_TRACK, 0, KEYEVENTF_EXTENTEDKEY, 0);
                                 *  keybd_event(VK_MEDIA_PREV_TRACK, 0, KEYEVENTF_EXTENTEDKEY, 0);
                                 *  success_message = "MUSIC: Skipped song (x2)";
                                 *  break;*/
                                case "next":
                                    keybd_event(VK_MEDIA_NEXT_TRACK, 0, KEYEVENTF_EXTENTEDKEY, 0);
                                    successMessage = "MUSIC: Next song";
                                    break;

                                case "play_pause":
                                    keybd_event(VK_MEDIA_PLAY_PAUSE, 0, KEYEVENTF_EXTENTEDKEY, 0);
                                    successMessage = "MUSIC: Played/Paused";
                                    break;

                                default:
                                    MainProgram.DoDebug("ERROR: Unknown parameter");
                                    MainProgram.errorMessage = "Unknown parameter \"" + parameter + "\"";
                                    break;
                                }
                            }
                            break;

                        case "open":
                            if (requireParameter(parameter))
                            {
                                string fileLocation = Path.Combine(MainProgram.shortcutLocation, parameter);
                                if (File.Exists(fileLocation))
                                {
                                    Process.Start(fileLocation);
                                    successMessage = "OPEN: opened file; " + fileLocation;
                                }
                                else
                                {
                                    MainProgram.DoDebug("ERROR: file doesn't exist (" + fileLocation + ")");
                                    MainProgram.errorMessage = "File doesn't exist (" + fileLocation + ")";
                                }
                            }
                            break;

                        case "die":
                            //Exit ACC
                            Application.Exit();
                            break;

                        default:
                            //Unknown action
                            MainProgram.DoDebug("ERROR: Unknown action");
                            MainProgram.errorMessage = "Unknown action \"" + action + "\"";
                            break;
                        }
                        if (successMessage != "")
                        {
                            MainProgram.DoDebug("\nSUCCESS: " + successMessage + "\n");
                        }

                        if (MainProgram.testingAction)
                        {
                            MainProgram.testActionWindow.ActionExecuted(successMessage, MainProgram.errorMessage, action, parameter);
                        }
                        successMessage = "";
                    }
                    else
                    {
                        MainProgram.DoDebug("No action set within the last " + Properties.Settings.Default.FileEditedMargin + " seconds. File last edited; " + lastModified + ". PC time; " + DateTime.Now);
                        MainProgram.errorMessage = "No action set lately";
                    }
                }
                else
                {
                    MainProgram.DoDebug("File is empty");
                    MainProgram.errorMessage = "No action set (file is empty)";
                }
                MainProgram.ClearFile(file);
                if (MainProgram.errorMessage.Length != 0 && !MainProgram.debug)
                {
                    MessageBox.Show(MainProgram.errorMessage, "Error | " + MainProgram.messageBoxTitle);
                    MainProgram.errorMessage = "";
                }
                MainProgram.isPerformingAction = false;
            }
            else
            {
                MainProgram.DoDebug("Already performing an action");
            }
        }
コード例 #3
0
        static public void FileFound(object source, FileSystemEventArgs e)
        {
            string file             = e.FullPath;
            string originalFileName = file;

            if (!File.Exists(file) || inProgressFileNames.Contains(e.FullPath) || file.Contains("in_progress"))
            {
                return;
            }
            inProgressFileNames.Add(originalFileName);

            MainProgram.DoDebug("\n[ -- DOING ACTION(S) -- ]");
            MainProgram.DoDebug(file);
            MainProgram.DoDebug("File exists, checking the content...");

            while (FileInUse(file))
            {
                ;
            }
            string newFileName = Path.Combine(MainProgram.CheckPath(), "in_progress_" + Guid.NewGuid().ToString("n").Substring(0, 8) + "." + Properties.Settings.Default.ActionFileExtension);

            try {
                File.Move(file, newFileName);
                inProgressFileNames.Add(newFileName);
            } catch {
                //File in use
                inProgressFileNames.Remove(file);
                inProgressFileNames.Remove(originalFileName);
                MainProgram.DoDebug("Can't move file - used by another process");
                return;
            }
            file = newFileName;
            while (File.Exists(originalFileName) && !File.Exists(newFileName))
            {
                ;
            }

            if (new FileInfo(file).Length != 0)
            {
                MainProgram.DoDebug("Action set. File is not empty...");
                //string line = Regex.Replace(File.ReadAllText(file), @"\t|\n|\r", "");
                string fullContent = Regex.Replace(File.ReadAllText(file), @"\t|\r", "");
                MainProgram.DoDebug("Read complete, content: " + fullContent);

                using (StringReader reader = new StringReader(fullContent)) {
                    string theLine = string.Empty;
                    do
                    {
                        theLine = reader.ReadLine();
                        if (theLine != null)
                        {
                            MainProgram.DoDebug("\n[EXECUTING ACTION]");
                            CheckAction(theLine);
                        }
                    } while (theLine != null);
                }
            }
            else
            {
                MainProgram.DoDebug("File is empty");
                MainProgram.errorMessage = "No action set (file is empty)";
            }

            MainProgram.ClearFile(file);
            while (File.Exists(file))
            {
                ;
            }
            inProgressFileNames.Remove(file);
            inProgressFileNames.Remove(originalFileName);
            MainProgram.DoDebug("[ -- DONE -- ]");

            if (MainProgram.errorMessage.Length != 0 && !MainProgram.debug)
            {
                MessageBox.Show(MainProgram.errorMessage, "Error | " + MainProgram.messageBoxTitle);
                MainProgram.errorMessage = "";
            }
        }
コード例 #4
0
        static public void FileFound(object source, FileSystemEventArgs e)
        {
            string file = e.FullPath;

            if (!MainProgram.isPerformingAction)
            {
                MainProgram.isPerformingAction = true;
                MainProgram.DoDebug("File exists, checking the content...");

                while (fileInUse(file))
                {
                    ;
                }
                if (new FileInfo(file).Length != 0)
                {
                    MainProgram.DoDebug("Action set. File is not empty...");

                    string line = File.ReadAllText(file);
                    MainProgram.DoDebug("Read complete, content: " + line);
                    DateTime lastModified = File.GetLastWriteTime(file);
                    string   action;
                    string   parameter = null;

                    if (lastModified.AddSeconds(MainProgram.fileEditedSecondMargin) > DateTime.Now)
                    {
                        //If file has been modified recently - check for action
                        MainProgram.DoDebug("File modified within the last " + MainProgram.fileEditedSecondMargin + " seconds...");

                        if (line.Contains(":"))
                        {
                            //Contains a parameter
                            action    = line.Split(':')[0];
                            parameter = line.Split(':')[1];
                        }
                        else
                        {
                            action = line;
                        }

                        switch (action)
                        {
                        case "shutdown":
                            //Shuts down the computer
                            MainProgram.DoDebug("Shutting down computer...");
                            if (parameter == null)
                            {
                                Process.Start("shutdown", "/s /t 0");
                            }
                            else
                            {
                                if (parameter.Contains("/t"))
                                {
                                    Process.Start("shutdown", "/s " + parameter);
                                }
                                else
                                {
                                    Process.Start("shutdown", "/s " + parameter + " /t 0");
                                }
                            }
                            successMessage = "Shutting down";
                            break;

                        case "restart":
                            //Restart the computer
                            MainProgram.DoDebug("Restarting computer...");

                            if (parameter == null)
                            {
                                Process.Start("shutdown", "/r /t 0");
                            }
                            else
                            {
                                if (parameter == "abort")
                                {
                                    Process.Start("shutdown", "/a");
                                }
                                else
                                {
                                    if (parameter.Contains("/t"))
                                    {
                                        Process.Start("shutdown", "/r " + parameter);
                                    }
                                    else
                                    {
                                        Process.Start("shutdown", "/r " + parameter + " /t 0");
                                    }
                                }
                            }
                            successMessage = "Restarting";
                            break;

                        case "sleep":
                            //Puts computer to sleep
                            MainProgram.DoDebug("Sleeping computer...");

                            if (parameter == null)
                            {
                                Application.SetSuspendState(PowerState.Suspend, true, true);
                            }
                            else
                            {
                                bool doForce = true;
                                switch (parameter)
                                {
                                case "true":
                                    doForce = true;
                                    break;

                                case "false":
                                    doForce = false;
                                    break;

                                default:
                                    MainProgram.DoDebug("ERROR: Parameter (" + parameter + ") is invalid for \"" + action + "\". Accepted parameters: \"true\" and \"false\"");
                                    MainProgram.errorMessage = "Parameter \"" + parameter + "\" is invalid for the \"" + action + "\" action. Accepted parameters: \"true\" and \"false\")";
                                    break;
                                }
                                Application.SetSuspendState(PowerState.Suspend, doForce, true);
                            }

                            successMessage = "Put computer to sleep";
                            break;

                        case "logout":
                            //Logs out of the current user
                            MainProgram.DoDebug("Logging out of user...");

                            ExitWindowsEx(0, 0);
                            successMessage = "Logged out of user";
                            break;

                        case "lock":
                            //Lock computer
                            MainProgram.DoDebug("Locking computer...");

                            LockWorkStation();
                            successMessage = "Locked pc";
                            break;

                        case "mute":
                            //Mutes windows
                            //Parameter optional (true/false)
                            updateDefaultPlaybackDevice();
                            bool doMute = false;

                            if (parameter == null)
                            {
                                //No parameter - toggle
                                doMute = !defaultPlaybackDevice.IsMuted;
                            }
                            else
                            {
                                //Parameter set;
                                switch (parameter)
                                {
                                case "true":
                                    doMute = true;
                                    break;

                                case "false":
                                    doMute = false;
                                    break;

                                default:
                                    MainProgram.DoDebug("ERROR: Parameter (" + parameter + ") is invalid for \"" + action + "\". Accepted parameters: \"true\" and \"false\"");
                                    MainProgram.errorMessage = "Parameter \"" + parameter + "\" is invalid for the \"" + action + "\" action. Accepted parameters: \"true\" and \"false\")";
                                    break;
                                }
                            }
                            defaultPlaybackDevice.Mute(!defaultPlaybackDevice.IsMuted);
                            successMessage = (defaultPlaybackDevice.IsMuted ? "Muted " : "Unmuted") + "pc";
                            break;

                        case "set_volume":
                            //Sets volume to a specific percent
                            //Requires parameter (percent, int)
                            updateDefaultPlaybackDevice();

                            if (requireParameter(parameter))
                            {
                                double volumeLevel;
                                if (double.TryParse(parameter, out volumeLevel))
                                {
                                    if (volumeLevel >= 0 && volumeLevel <= 100)
                                    {
                                        if (MainProgram.unmuteVolumeChange)
                                        {
                                            defaultPlaybackDevice.Mute(false);
                                        }
                                        defaultPlaybackDevice.Volume = volumeLevel;
                                        if (defaultPlaybackDevice.Volume != volumeLevel)
                                        {
                                            //Something went wrong... Audio not set to parameter-level
                                            MainProgram.DoDebug("ERROR: Volume was not sat");
                                            MainProgram.errorMessage = "Something went wrong when setting the volume";
                                        }
                                        else
                                        {
                                            successMessage = "Set volume to " + volumeLevel + "%";
                                        }
                                    }
                                    else
                                    {
                                        MainProgram.DoDebug("ERROR: Parameter is an invalid number, range; 0-100 (" + volumeLevel + ")");
                                        MainProgram.errorMessage = "Can't set volume to " + volumeLevel + "%, has to be a number from 0-100";
                                    }
                                }
                                else
                                {
                                    MainProgram.DoDebug("ERROR: Parameter (" + parameter + ") not convertable to double");
                                    MainProgram.errorMessage = "Not a valid parameter (has to be a number)";
                                }
                            }
                            break;

                        case "music":
                            if (requireParameter(parameter))
                            {
                                switch (parameter)
                                {
                                case "previous":
                                    keybd_event(VK_MEDIA_PREV_TRACK, 0, KEYEVENTF_EXTENTEDKEY, 0);
                                    successMessage = "MUSIC: Skipped song";
                                    break;

                                /*case "previousx2": //WIP
                                 *  keybd_event(VK_MEDIA_PREV_TRACK, 0, KEYEVENTF_EXTENTEDKEY, 0);
                                 *  keybd_event(VK_MEDIA_PREV_TRACK, 0, KEYEVENTF_EXTENTEDKEY, 0);
                                 *  success_message = "MUSIC: Skipped song (x2)";
                                 *  break;*/
                                case "next":
                                    keybd_event(VK_MEDIA_NEXT_TRACK, 0, KEYEVENTF_EXTENTEDKEY, 0);
                                    successMessage = "MUSIC: Next song";
                                    break;

                                case "play_pause":
                                    keybd_event(VK_MEDIA_PLAY_PAUSE, 0, KEYEVENTF_EXTENTEDKEY, 0);
                                    successMessage = "MUSIC: Played/Paused";
                                    break;

                                default:
                                    MainProgram.DoDebug("ERROR: Unknown parameter");
                                    MainProgram.errorMessage = "Unknown parameter \"" + parameter + "\"";
                                    break;
                                }
                            }
                            break;

                        case "open":
                            if (requireParameter(parameter))
                            {
                                string fileLocation = Path.Combine(MainProgram.shortcutLocation, parameter);
                                if (File.Exists(fileLocation))
                                {
                                    Process.Start(fileLocation);
                                    successMessage = "OPEN: opened file; " + fileLocation;
                                }
                                else
                                {
                                    MainProgram.DoDebug("ERROR: file doesn't exist (" + fileLocation + ")");
                                    MainProgram.errorMessage = "File doesn't exist (" + fileLocation + ")";
                                }
                            }
                            break;

                        case "die":
                            //Exit ACC
                            Application.Exit();
                            break;

                        default:
                            //Unknown action
                            MainProgram.DoDebug("ERROR: Unknown action");
                            MainProgram.errorMessage = "Unknown action \"" + action + "\"";
                            break;
                        }
                        if (successMessage != "")
                        {
                            MainProgram.DoDebug("\nSUCCESS: " + successMessage + "\n");
                        }
                    }
                    else
                    {
                        MainProgram.DoDebug("No action set within the last " + MainProgram.fileEditedSecondMargin + " seconds. File last edited; " + lastModified + ". PC time; " + DateTime.Now);
                        MainProgram.errorMessage = "No action set lately";
                    }
                }
                else
                {
                    MainProgram.DoDebug("File is empty");
                    MainProgram.errorMessage = "No action set (file is empty)";
                }
                MainProgram.ClearFile(file);
                if (MainProgram.errorMessage.Length != 0 && !MainProgram.debug)
                {
                    MessageBox.Show(MainProgram.errorMessage, "Error | " + MainProgram.messageBoxTitle);
                    MainProgram.errorMessage = "";
                }
                MainProgram.isPerformingAction = false;
            }
            else
            {
                MainProgram.DoDebug("Already performing an action");
            }
        }