Advertisement
Guest User

timer gui

a guest
Jan 30th, 2015
339
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. [void][System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
  2. [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
  3.  
  4. if($PSVersionTable.PSVersion.Major -ge 3)
  5. {
  6.     $scope = 2
  7. }
  8. else
  9. {
  10.     $scope = 1
  11. }
  12.  
  13. function Get-GUI()
  14. {
  15.     $returnValue = $null
  16.     $Timeleft = New-TimeSpan -Seconds 300
  17.     $ONESEC = New-TimeSpan -Seconds 1
  18.    
  19.     $objForm = New-Object -TypeName System.Windows.Forms.Form
  20.     $objForm.Text = "Shutdown"
  21.     $objForm.Size = New-Object System.Drawing.Size(300,200)
  22.     $objForm.StartPosition = "CenterScreen"
  23.     $objForm.ShowInTaskbar = $false
  24.     $objForm.ShowIcon = $false
  25.     $objForm.FormBorderStyle = "FixedDialog"
  26.     $objForm.MaximizeBox = $false
  27.     $objForm.MinimizeBox = $false
  28.     $objForm.KeyPreview = $true
  29.     $objForm.Add_KeyDown({if($_.KeyCode -eq "Enter"){Invoke-Command -ScriptBlock {Set-Variable -Name returnValue -Value $objTextBox.Text -Scope $scope; $objTimer.Stop(); $objForm.Close()}}})
  30.     $objForm.Add_KeyDown({if($_.KeyCode -eq "Escape"){Invoke-Command -ScriptBlock {Set-Variable -Name returnValue -Value "Wait" -Scope $scope; $objTimer.Stop();  $objForm.Close()}}})
  31.  
  32.     $OKbutton = New-Object System.Windows.Forms.Button
  33.     $OKbutton.Location = New-Object System.Drawing.Size(125,120)
  34.     $OKbutton.Size = New-Object System.Drawing.Size(75,23)
  35.     $OKbutton.Text = "Restart"
  36.     $OKbutton.Add_Click({Invoke-Command -ScriptBlock {Set-Variable -Name returnValue -Value "Restart" -Scope $scope; $objTimer.Stop(); $objForm.Close()}})
  37.     $objForm.Controls.Add($OKbutton)
  38.  
  39.     $Cancelbutton = New-Object System.Windows.Forms.Button
  40.     $Cancelbutton.Location = New-Object System.Drawing.Size(200,120)
  41.     $Cancelbutton.Size = New-Object System.Drawing.Size(75,23)
  42.     $Cancelbutton.Text = "Wait"
  43.     $Cancelbutton.Add_Click({Invoke-Command -ScriptBlock {Set-Variable -Name returnValue -Value "Wait" -Scope $scope; $objTimer.Stop(); $objForm.Close()}})
  44.     $objForm.Controls.Add($Cancelbutton)
  45.  
  46.     $objLabel = New-Object System.Windows.Forms.Label
  47.     $objLabel.Location = New-Object System.Drawing.Size(10,20)
  48.     $objLabel.Size = New-Object System.Drawing.Size(280,40)
  49.     $objLabel.Text = "Your computer will Restart in $($Timeleft.Minutes):$($Timeleft.Seconds) minutes.`nClick Restart to restart now.`nClick Wait to postpone for 15 minutes."
  50.     $objForm.Controls.Add($objLabel)
  51.    
  52.     <#$objTextBox = New-Object System.Windows.Forms.TextBox
  53.     $objTextBox.Size = New-Object System.Drawing.Size(100, 20)
  54.     $objTextBox.Location = New-Object System.Drawing.Size(10, 120)
  55.     $objTextBox.TextAlign = "Center"
  56.     $objTextBox.ReadOnly = $true
  57.     $objTextBox.Text = [string]$Timeleft.Minutes + ":" + $Timeleft.Seconds
  58.     $objForm.Controls.Add($objTextBox)#>
  59.    
  60.    
  61.     $objTimer = New-Object System.Windows.Forms.Timer
  62.     $objTimer.Interval = 1000
  63.     function Do-Tick()
  64.     {
  65.         $Timeleft = $Timeleft - $ONESEC
  66.         $objLabel.Text = "Your computer will Restart in $($Timeleft.Minutes):$($Timeleft.Seconds) minutes.`nClick Restart to restart now.`nClick Wait to postpone for 15 minutes."
  67.         If($Timeleft.TotalSeconds -lt 1)
  68.         {
  69.             Set-Variable -Name returnValue -Value "Restart" -Scope $scope
  70.             $objForm.Close()
  71.         }
  72.     }
  73.     $objTimer.Add_Tick({Do-Tick})
  74.     $objTimer.Start()
  75.    
  76.     $objForm.TopMost = $true
  77.    
  78.     $objForm.Add_Shown($objForm.Activate())
  79.     [Void]$objForm.ShowDialog()
  80.    
  81.     return $returnValue
  82. }
  83. Get-GUI
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement