//----------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All rights reserved. // // // Implements HelpWindowHelper // //----------------------------------------------------------------------- namespace Microsoft.PowerShell.Commands.Internal { using System; using System.Diagnostics.CodeAnalysis; using System.Management.Automation; using System.Threading; using System.Windows; using Microsoft.Management.UI; using Microsoft.PowerShell.Commands.ShowCommandInternal; /// /// Implements the WPF window part of the the ShowWindow option of get-help /// internal static class HelpWindowHelper { /// /// Shows the help window /// /// object with help information /// cmdlet calling this method [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Called from methods called using reflection")] private static void ShowHelpWindow(PSObject helpObj, PSCmdlet cmdlet) { Window ownerWindow = ShowCommandHelper.GetHostWindow(cmdlet); if (ownerWindow != null) { ownerWindow.Dispatcher.Invoke( new SendOrPostCallback( delegate(object ignored) { HelpWindow helpWindow = new HelpWindow(helpObj); helpWindow.Owner = ownerWindow; helpWindow.Show(); helpWindow.Closed += new EventHandler(delegate(object sender, EventArgs e) { ownerWindow.Focus(); }); }), String.Empty); return; } Thread guiThread = new Thread( (ThreadStart)delegate { HelpWindow helpWindow = new HelpWindow(helpObj); helpWindow.ShowDialog(); }); guiThread.SetApartmentState(ApartmentState.STA); guiThread.Start(); } } }