コード例 #1
0
        /// <summary>
        /// Restarts Visual Studio.
        /// </summary>
        public static async Task <bool> RestartAsync()
        {
            await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();

            IVsShell4 shell = await GetRequiredServiceAsync <SVsShell, IVsShell4>();

            ((IVsShell3)shell).IsRunningElevated(out bool elevated);
            __VSRESTARTTYPE type = elevated ? __VSRESTARTTYPE.RESTART_Elevated : __VSRESTARTTYPE.RESTART_Normal;
            int             hr   = shell.Restart((uint)type);

            return(ErrorHandler.Succeeded(hr));
        }
コード例 #2
0
ファイル: Restart.cs プロジェクト: stephenjwalter/Tweakster
        private static void Execute(bool forceElevated, IVsShell4 shell)
        {
            ThreadHelper.ThrowIfNotOnUIThread();

            if (forceElevated)
            {
                shell.Restart((uint)__VSRESTARTTYPE.RESTART_Elevated);
            }
            else
            {
                ((IVsShell3)shell).IsRunningElevated(out var elevated);
                __VSRESTARTTYPE type = elevated ? __VSRESTARTTYPE.RESTART_Elevated : __VSRESTARTTYPE.RESTART_Normal;
                shell.Restart((uint)type);
            }
        }
コード例 #3
0
        /// <summary>
        /// Restarts the IDE. 
        /// </summary>
        /// <param name="forceElevated">Forces the IDE to start back up elevated. 
        /// If <see langword="false"/>, it restarts in the same mode it is currently running in.
        /// </param>
        public async Task RestartAsync(bool forceElevated = false)
        {
            await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();
            IVsShell4 shell = (IVsShell4)await VS.Services.GetShellAsync();

            if (forceElevated)
            {
                shell.Restart((uint)__VSRESTARTTYPE.RESTART_Elevated);
            }
            else
            {
                ((IVsShell3)shell).IsRunningElevated(out bool elevated);
                __VSRESTARTTYPE type = elevated ? __VSRESTARTTYPE.RESTART_Elevated : __VSRESTARTTYPE.RESTART_Normal;
                shell.Restart((uint)type);
            }
        }
コード例 #4
0
        private static void Execute(RestartType restartType)
        {
            ThreadHelper.ThrowIfNotOnUIThread();
            _openInSafeMode = false;

            switch (restartType)
            {
            case RestartType.Normal:
                ((IVsShell3)_shell).IsRunningElevated(out var elevated);
                __VSRESTARTTYPE type = elevated ? __VSRESTARTTYPE.RESTART_Elevated : __VSRESTARTTYPE.RESTART_Normal;
                _shell.Restart((uint)type);
                break;

            case RestartType.Elevated:
                _shell.Restart((uint)__VSRESTARTTYPE.RESTART_Elevated);
                break;

            case RestartType.Safemode:
                _openInSafeMode = true;
                _dte.ExecuteCommand("File.Exit");
                break;
            }
        }
コード例 #5
0
 private int Restart(__VSRESTARTTYPE vsRestartMode)
 {
     return(_shell4.Restart((uint)vsRestartMode));
 }