protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); StartupPath = System.Windows.Forms.Application.StartupPath + '\\'; DockIcon.Register(StartupPath + "Container-Empty.png", null, false); if (!DockIcon.IsRegistered) { Shutdown(); return; } DockIcon.KeepInDock = true; DockIcon.Exposable = false; DockIcon.Activatable = true; Settings.Initialize(DockIcon.SettingsPath + "settings.xml"); #region Get Previous Icon var iconName = DockIcon.IconName; if (string.IsNullOrEmpty(iconName)) { iconName = StartupPath + "Container-Empty.png"; } if (string.IsNullOrEmpty(Settings.Icon) || ((iconName != StartupPath + "Container-Empty.png") && (iconName != StartupPath + "Container-Opened.png"))) { Settings.Icon = iconName; Settings.Save(); } #endregion #region Init Path Path = Settings.Path; if (!Directory.Exists(Path)) { Path = StartupPath; } if (Path.LastIndexOf('\\') < Path.Length - 1) { Path += '\\'; } #endregion #region Start With View Mode if ((e.Args.Length >= 3) && (e.Args[0] == "-viewMode")) { Path = e.Args[2]; if (Path.LastIndexOf('\\') < Path.Length - 1) { Path += '\\'; } if (!((e.Args.Length == 4) && (e.Args[3] == "-notSetPath"))) { Settings.Path = Path; } Directories = Directory.GetDirectories(Path); Files = Directory.GetFiles(Path); DockIcon.Title = null; DockIcon.AddFolderWatcher(1, DockIcon.FolderWatcherActions.FileAdded | DockIcon.FolderWatcherActions.FileModified | DockIcon.FolderWatcherActions.FolderAdded, Path); switch (e.Args[1]) { case "fan": ViewMode = ViewModeEnum.Fan; MainWindow = new ContainerPublic.FanView(); break; case "list": ViewMode = ViewModeEnum.List; Shutdown(); return; //break; default: ViewMode = ViewModeEnum.Grid; MainWindow = new ContainerPublic.GridView(); break; } MainWindow.Show(); return; } #endregion #region Dropped files & directories into the stack if ((e.Args.Length > 0) && !((e.Args.Length == 1) && Directory.Exists(e.Args[0]))) { var droppedFiles = true; foreach (var file in e.Args) { if (!File.Exists(file) && !Directory.Exists(file)) { droppedFiles = false; break; } } if (droppedFiles) { var fileOperation = new SHFileOpStruct(); fileOperation.hwnd = IntPtr.Zero; fileOperation.wFunc = FO_Func.FO_MOVE; if ((System.Windows.Forms.Control.ModifierKeys & System.Windows.Forms.Keys.Control) == System.Windows.Forms.Keys.Control) { fileOperation.wFunc = FO_Func.FO_COPY; } fileOperation.pFrom = StringArrayToMultiString(e.Args); fileOperation.pTo = StringArrayToMultiString(new string[] { Path }); fileOperation.hNameMappings = IntPtr.Zero; fileOperation.fAnyOperationsAborted = 0; fileOperation.fFlags = 0; fileOperation.lpszProgressTitle = null; SHFileOperation(ref fileOperation); Shutdown(); return; } } #endregion #region Start With Directory if ((e.Args.Length > 0) && Directory.Exists(e.Args[0])) { Path = e.Args[0]; if (Path.LastIndexOf('\\') < Path.Length - 1) { Path += '\\'; } if (!((e.Args.Length == 2) && (e.Args[1] == "-notSetPath"))) { Settings.Path = Path; } } #endregion #region Default Directories = Directory.GetDirectories(Path); Files = Directory.GetFiles(Path); if (Directories.Length + Files.Length <= FanView.MaxItems) { ViewMode = ViewModeEnum.Fan; } else if (Directories.Length + Files.Length <= GridView.MaxItems) { ViewMode = ViewModeEnum.Grid; } else { //ViewMode = ViewModeEnum.List; ViewMode = ViewModeEnum.Grid; } DockIcon.Title = null; DockIcon.AddFolderWatcher(1, DockIcon.FolderWatcherActions.FileAdded | DockIcon.FolderWatcherActions.FileModified | DockIcon.FolderWatcherActions.FolderAdded, Path); switch (ViewMode) { case ViewModeEnum.Fan: MainWindow = new ContainerPublic.FanView(); break; case ViewModeEnum.List: Shutdown(); return; //break; default: MainWindow = new ContainerPublic.GridView(); break; } MainWindow.Show(); #endregion }