RPS.Screensaver.Main C# (CSharp) 메소드

Main() 개인적인 메소드

private Main ( string args ) : void
args string
리턴 void
        static void Main(string[] args) {
            //MessageBox.Show(String.Join(" ", args));
            IntPtr previewHwnd = IntPtr.Zero;
            IntPtr[] hwnds;
            Actions action = Actions.Screensaver;
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            hwnds = null;
            if (args.Length > 0) {
                string arg1 = args[0].ToLower().Trim();
                string arg2 = null;
                if (arg1.Length > 2) {
                    arg2 = arg1.Substring(3).Trim();
                    arg1 = arg1.Substring(0, 2);
                } else if (args.Length > 1) {
                    arg2 = args[1];
                }
                switch (arg1[1]) {
                    case 'a':
                        string path="";
                        for (int i = 1; i < args.Length; i++) path += args[i] + " ";
                        path = path.Trim();
                        //MessageBox.Show(path);
                        Screensaver.setAsCurrentScreensaver(path);
                        /*
                        MessageBox.Show("IsAdmin: " + Convert.ToString(Screensaver.IsRunAsAdmin()) + Environment.NewLine + Path.Combine(
                            Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), 
                            Constants.AppFolderName,
                            Constants.DataFolder));*/
//                        MessageBox.Show("IsAdmin: " + Convert.ToString(Screensaver.IsRunAsAdmin()));
                        Application.Exit();
                        return;
                    break;
                    case 'c':
                        action = Actions.Config;
                    break;
                    case 't':
                    case 'p':
                        if (arg1[1] == 't') action = Actions.Test;
                        else action = Actions.Preview;
                        //action = Actions.Test;
                        hwnds = new IntPtr[args.Length - 1];
                        for (int i = 1; i < args.Length; i++) {
                            hwnds[i - 1] = new IntPtr(long.Parse(args[i]));
                        }
                        //previewHwnd = new IntPtr(long.Parse(arg2));
                    break;
                    case 'o':
                        string setting = "0";
                        string value = args[0].Trim("-/\\".ToCharArray());
                        if (string.Compare(value, "on", true) == 0) setting = "1";
                        string oldValue = "on";
                        if (Convert.ToString(Registry.GetValue("HKEY_CURRENT_USER\\Control Panel\\Desktop", "ScreenSaveActive", null)) == "0") oldValue = "off";
                        Registry.SetValue("HKEY_CURRENT_USER\\Control Panel\\Desktop", "ScreenSaveActive", setting);
                        MessageBox.Show("Your screensaver has been truned " + value + "." + Environment.NewLine + "(It was " + oldValue + ")", Constants.AppName, MessageBoxButtons.OK, MessageBoxIcon.Information );
                        Application.Exit();
                        return;
                    break;
                    case 'w':
                        action = Actions.Wallpaper;
                    break;
                    case 'x':
                        string wallpaperPath = args[1].Trim("-/\\".ToCharArray());
                        Wallpaper.setWallpaper(wallpaperPath);
                        Application.Exit();
                        return;
                    break;

                }
            }
            bool readOnly = Screensaver.singleProcess(action);
            if (!Screensaver.checkBrowserVersionOk()) {
                Application.Exit();
                return;
            }

            Screensaver screensaver = new Screensaver(action, readOnly, hwnds);
            AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(screensaver.CleanUpOnException);
            switch (action) {
                case Actions.Config:
                    Application.Run(screensaver);
                break;
                case Actions.Preview:
                    //MessageBox.Show(hwnds[0].ToString());
                    screensaver.monitors = new Monitor[hwnds.Length];
                    screensaver.monitors[0] = new Monitor(hwnds[0], 0, screensaver);
                    screensaver.monitors[0].FormClosed += new FormClosedEventHandler(screensaver.OnFormClosed);
                    screensaver.monitors[0].PreviewKeyDown += new System.Windows.Forms.PreviewKeyDownEventHandler(screensaver.PreviewKeyDown);
                    screensaver.monitors[0].browser.PreviewKeyDown += new System.Windows.Forms.PreviewKeyDownEventHandler(screensaver.PreviewKeyDown);
                    Application.Run(screensaver.monitors[0]);
                break;
                default:
                    Cursor.Hide();
                    Application.AddMessageFilter(new MouseMessageFilter());
                    MouseMessageFilter.MouseMove += new MouseEventHandler(screensaver.MouseMove);
                    MouseMessageFilter.MouseClick += new MouseEventHandler(screensaver.MouseClick);

                    Application.Run(screensaver);
                break;
            }
        }
    }