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;
}
}
}