示例#1
0
        private void AssociateBtn_Click(object sender, EventArgs e)
        {
            if (!(sender is Control owner))
            {
                return;
            }
            var isNull = string.IsNullOrWhiteSpace(fileTypes.Text);

            if (!isNull)
            {
                if (fileTypes.Text.Contains(","))
                {
                    isNull = fileTypes.Text.Split(',').Where(s => !s.StartsWith(".", StringComparison.Ordinal)).ToArray().Length == 0;
                }
                else
                {
                    isNull = fileTypes.Text.StartsWith(".", StringComparison.Ordinal);
                }
            }
            if (isNull)
            {
                MessageBoxEx.Show(this, Language.GetText($"{owner.Name}Msg"), MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            if (SelectedAppData == default || FileTypesConflict())
            {
                MessageBoxEx.Show(this, Language.GetText(nameof(en_US.OperationCanceledMsg)), MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            if (!fileTypes.Text.EqualsEx(SelectedAppData.Settings.FileTypes.Join(',')))
            {
                SaveBtn_Click(saveBtn, EventArgs.Empty);
            }
            FileTypeAssoc.Associate(SelectedAppData, this);
        }
示例#2
0
        private static void Main()
        {
            Settings.Initialize();

            var instanceKey = PathEx.LocalPath.GetHashCode().ToString();

            using (new Mutex(true, instanceKey, out var newInstance))
            {
                Language.ResourcesNamespace = typeof(Program).Namespace;
                MessageBoxEx.TopMost        = true;

                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);

                if (newInstance && Arguments.ValidPaths.Any() && !ActionGuid.IsDisallowInterface)
                {
                    Application.Run(new OpenWithForm().Plus());
                    return;
                }

                if (newInstance || ActionGuid.IsAllowNewInstance)
                {
                    Application.Run(new MenuViewForm().Plus());
                    return;
                }

                if (!EnvironmentEx.CommandLineArgs(false).Any())
                {
                    return;
                }

                switch (EnvironmentEx.CommandLineArgs(false).Count)
                {
                case 1:
                {
                    var first = EnvironmentEx.CommandLineArgs(false).First();
                    switch (first)
                    {
                    case ActionGuid.FileTypeAssociationAll:
                        foreach (var appData in CacheData.CurrentAppInfo)
                        {
                            var assocData = appData.Settings?.FileTypeAssoc;
                            assocData?.SystemRegistryAccess?.AssociateFileTypes(true);
                        }
                        return;

                    case ActionGuid.RepairAppsSuite:
                        Recovery.RepairAppsSuite();
                        return;

                    case ActionGuid.RepairDirs:
                        Recovery.RepairAppsSuiteDirs();
                        return;

                    case ActionGuid.RepairVariable:
                        Recovery.RepairEnvironmentVariable();
                        return;
                    }
                    break;
                }

                case 2:
                {
                    var first = EnvironmentEx.CommandLineArgs(false).First();
                    switch (first)
                    {
                    case ActionGuid.FileTypeAssociation:
                        FileTypeAssoc.Associate(EnvironmentEx.CommandLineArgs(false).SecondOrDefault());
                        return;

                    case ActionGuid.RestoreFileTypes:
                        FileTypeAssoc.Restore(EnvironmentEx.CommandLineArgs(false).SecondOrDefault());
                        return;

                    case ActionGuid.SystemIntegration:
                        SystemIntegration.Enable(EnvironmentEx.CommandLineArgs(false).SecondOrDefault().ToBoolean());
                        return;
                    }
                    break;
                }
                }

                if (!Arguments.ValidPaths.Any())
                {
                    return;
                }

                IntPtr hWnd;
                var    stopwatch = new Stopwatch();
                stopwatch.Start();
                do
                {
                    hWnd = Reg.Read(Settings.RegistryPath, "Handle", IntPtr.Zero);
                }while (hWnd == IntPtr.Zero && stopwatch.Elapsed.TotalSeconds <= 10);
                if (hWnd != IntPtr.Zero)
                {
                    WinApi.NativeHelper.SendArgs(hWnd, Arguments.ValidPathsStr);
                }
            }
        }