Untitled
unknown
powershell
3 years ago
3.4 kB
4
Indexable
[reflection.assembly]::LoadWithPartialName("System.Windows.Forms") | Out-Null [reflection.assembly]::LoadWithPartialName("System.Drawing") | Out-Null [System.Windows.Forms.Application]::EnableVisualStyles() $form = New-Object 'System.Windows.Forms.Form' $buttonRunProcess = New-Object 'System.Windows.Forms.Button' $richtextboxOutput = New-Object 'System.Windows.Forms.RichTextBox' $buttonExit = New-Object 'System.Windows.Forms.Button' $buttonExit_Click={ $form.Close() } $buttonRunProcess_Click = { $buttonRunProcess.Enabled = $false $richtextboxOutput.Clear() $process = New-Object System.Diagnostics.Process $process.StartInfo.FileName = 'ping.exe' $process.StartInfo.Arguments = '127.0.0.1' $process.StartInfo.UseShellExecute = $false $process.StartInfo.CreateNoWindow = $true $process.StartInfo.RedirectStandardInput = $false $process.StartInfo.RedirectStandardOutput = $true $process.EnableRaisingEvents = $true $process.SynchronizingObject = $form # this is the important line $process.add_OutputDataReceived( { # Use $_.Data to access the output text $richtextboxOutput.AppendText($_.Data) $richtextboxOutput.AppendText("`r`n") } ) $process.Start() | Out-Null $process.BeginOutputReadLine() } $Form_Closed={ try { $buttonRunProcess.remove_Click($buttonRunProcess_Click) $buttonExit.remove_Click($buttonExit_Click) $form.remove_Form_Closed($processTracker_Form_Closed) $form.remove_Form_Closed($Form_Closed) } catch { Out-Null <# Prevent PSScriptAnalyzer warning #> } } $form.SuspendLayout() $form.Controls.Add($buttonRunProcess) $form.Controls.Add($richtextboxOutput) $form.Controls.Add($buttonExit) $form.ClientSize = [System.Drawing.Size]::new(584, 362) $form.Margin = '4, 4, 4, 4' $form.MinimumSize = [System.Drawing.Size]::new(304, 315) $form.Name = 'Redirect Process Output' $form.StartPosition = 'CenterScreen' $form.Text = 'Redirect Process Output' $buttonRunProcess.Anchor = 'Bottom, Left' $buttonRunProcess.Location = [System.Drawing.Point]::new(12, 327) $buttonRunProcess.Name = 'buttonRunProcess' $buttonRunProcess.Size = [System.Drawing.Size]::new(75, 23) $buttonRunProcess.TabIndex = 0 $buttonRunProcess.Text = 'Run' $buttonRunProcess.UseCompatibleTextRendering = $True $buttonRunProcess.UseVisualStyleBackColor = $True $buttonRunProcess.add_Click($buttonRunProcess_Click) $richtextboxOutput.Anchor = 'Top, Bottom, Left, Right' $richtextboxOutput.HideSelection = $False $richtextboxOutput.Location = [System.Drawing.Point]::new(12, 12) $richtextboxOutput.Name = 'richtextboxOutput' $richtextboxOutput.ReadOnly = $True $richtextboxOutput.Size = [System.Drawing.Size]::new(559, 305) $richtextboxOutput.TabIndex = 6 $richtextboxOutput.Text = '' $richtextboxOutput.WordWrap = $False $buttonExit.Anchor = 'Bottom, Right' $buttonExit.Location = [System.Drawing.Point]::new(497, 327) $buttonExit.Name = 'buttonExit' $buttonExit.Size = [System.Drawing.Size]::new(75, 23) $buttonExit.TabIndex = 2 $buttonExit.Text = 'E&xit' $buttonExit.UseCompatibleTextRendering = $True $buttonExit.UseVisualStyleBackColor = $True $buttonExit.add_Click($buttonExit_Click) $form.ResumeLayout() $form.add_Closed($Form_Closed) $form.ShowDialog()
Editor is loading...