PowerShell ile Alarm !

PowerShell ile yapılabileceklerin ne kadar geniş bir yelpazeye sahip olduğunun kanıtı sanırım en son yazdığım bu script.

Tamamen bir an için aklıma gelmesiyle birlikte uğraştığım ve başarılı bir şekilde hayata geçirdiğim GUI tabanlı bu script ile bir PowerShell Alarm programına sahip oluyorsunuz.

Standart bir geri sayım scripti yapmaktansa invoke-item komutunu kullanarak belirlediğiniz geri sayım süresi dolduğunda istediğiniz dosyanın çalıştırılmasını sağlayabiliyorsunuz.

Örneğin;

  •  Bilgisayarınızdaki bir mp3 dosyasını seçip geri sayımı başlatarak standart bir saat alarmı olarak kullanabilirsiniz.
  •  Belirli bir süre sonra ekranda diğer kullanıcıların kullanımı için bir dökümanı açabilirsiniz.
  •  Bilgisayarınızda bulunan başka bir scripti, süre dolduktan sonra çalıştırabilirsiniz.

Bu liste sizin isteklerinize göre uzayıp gider.

Aşağıda ekran görüntüsü ve kod içeriğini bulabileceğiniz bu powershell scriptini buradan indirebilirsiniz.

image

[powershell]

###############################################################                                                           
# PowerShell Alarm – Anıl ERDURAN – www.anilerduran.com                                                            
# GUI Tabanlı PowerShell scripti ile istediğiniz mp3 dosyasını                                                          
# alarm müziğiniz olarak kullanıp geri sayımı                                                                                   
# başlatabilirsiniz.                                                                                                                            
#                                                                                                                                                      
###############################################################

#GUI tabanlı formumuzu oluşturalım#

function GenerateForm {

[reflection.assembly]::loadwithpartialname(“System.Windows.Forms”) | Out-Null
[reflection.assembly]::loadwithpartialname(“System.Drawing”) | Out-Null

$form1 = New-Object System.Windows.Forms.Form
$baslat_button = New-Object System.Windows.Forms.Button
$Muzik_Desc_Label = New-Object System.Windows.Forms.Label
$gerisayim_buton = New-Object System.Windows.Forms.Button
$numericUpDown1 = New-Object System.Windows.Forms.NumericUpDown
$sarkisec_button = New-Object System.Windows.Forms.Button
$kalanlabel = New-Object System.Windows.Forms.Label
$kalanlabel2 = New-Object System.Windows.Forms.Label
$kalanlabel3 = New-Object System.Windows.Forms.Label
$kalan_buton = New-Object System.Windows.Forms.Button
$timer1 = New-Object System.Windows.Forms.Timer
$progressBar1 = New-Object System.Windows.Forms.ProgressBar
$InitialFormWindowState = New-Object System.Windows.Forms.FormWindowState

#Mp3 dosyası seçebilmek için gerekli olan Dialog fonksiyonunu oluşturalım#
function Select-FileDialog
{
    param([string]$Title,[string]$Directory,[string]$Filter=”All Files (*.*)|*.*”)
    [System.Reflection.Assembly]::LoadWithPartialName(“System.Windows.Forms”) | Out-Null
    $objForm = New-Object System.Windows.Forms.OpenFileDialog
    $objForm.InitialDirectory = $Directory
    $objForm.Filter = $Filter
    $objForm.Title = $Title
        $objForm.showhelp = $true
    $Show = $objForm.ShowDialog()
    If ($Show -eq “OK”)
    {
        Return $objForm.FileName
    }
    Else
    {
    #Dosya seçilmez ise bir uyarı verelim#
        [system.Windows.Forms.MessageBox]::show(‘Sessiz alarm biraz garip olur değil mi?’)
    }
}

#Seçim işlemi C: dizini altından başlasın#
$sarkisec_button_OnClick=
{
$file = Select-FileDialog -Title “Dosya Seçin” -Directory “c:”

$kalanlabel.Text = “Seçilen Şarkı : $file”

}
$baslat_button_OnClick=
{

#Geri sayım için StopWatch Net objesini kullanıyoruz#

$ElapsedTime = [System.Diagnostics.Stopwatch]::StartNew()

$a = $numericUpDown1.text

$b = $a * 1

$kalanlabel2.Text = “Geri Sayım : $a dakikadan geri sayılmaya başlandı”

for ($i=1; $i -gt 1; $i++) {
}
function CountDown($waitMinutes) {

    $startTime = get-date
    $endTime   = $startTime.addminutes($waitMinutes)
    $timeSpan = new-timespan $startTime $endTime
   
    while ($timeSpan -gt 0) {
        $timeSpan = new-timespan $(get-date) $endTime
        
        sleep 1
          
        }
    write-host “”
   
    }
   
    Countdown $b
   
    Invoke-Item $file

}

$OnLoadForm_StateCorrection=
{
    $form1.WindowState = $InitialFormWindowState
}

#region Generated Form Code
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 192
$System_Drawing_Size.Width = 461
$form1.ClientSize = $System_Drawing_Size
$form1.DataBindings.DefaultDataSourceUpdateMode = 0
$form1.Name = “form1”
$form1.Text = “PowerShell Alarm”

$baslat_button.DataBindings.DefaultDataSourceUpdateMode = 0

$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 312
$System_Drawing_Point.Y = 140
$baslat_button.Location = $System_Drawing_Point
$baslat_button.Name = “baslat_button”
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 40
$System_Drawing_Size.Width = 137
$baslat_button.Size = $System_Drawing_Size
$baslat_button.TabIndex = 5
$baslat_button.Text = “BAŞLAT”
$baslat_button.UseVisualStyleBackColor = $True
$baslat_button.add_Click($baslat_button_OnClick)

$form1.Controls.Add($baslat_button)

$Muzik_Desc_Label.DataBindings.DefaultDataSourceUpdateMode = 0

$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 178
$System_Drawing_Point.Y = 13
$Muzik_Desc_Label.Location = $System_Drawing_Point
$Muzik_Desc_Label.Name = “Muzik_Desc_Label”
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 34
$System_Drawing_Size.Width = 210
$Muzik_Desc_Label.Size = $System_Drawing_Size
$Muzik_Desc_Label.TabIndex = 4
$Muzik_Desc_Label.Text = “Örn: Bilgisayarınızda yüklü bir Mp3 Dosyası seçebilirsiniz.”
$Muzik_Desc_Label.add_Click($handler_Muzik_Desc_Label_Click)

$form1.Controls.Add($Muzik_Desc_Label)

$gerisayim_buton.DataBindings.DefaultDataSourceUpdateMode = 0

$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 12
$System_Drawing_Point.Y = 64
$gerisayim_buton.Location = $System_Drawing_Point
$gerisayim_buton.Name = “gerisayim_buton”
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 38
$System_Drawing_Size.Width = 147
$gerisayim_buton.Size = $System_Drawing_Size
$gerisayim_buton.TabIndex = 3
$gerisayim_buton.Text = “Geri Sayım Dakikası Belirleyin”
$gerisayim_buton.UseVisualStyleBackColor = $True
$gerisayim_buton.add_Click($gerisayim_buton_OnClick)

$form1.Controls.Add($gerisayim_buton)

$numericUpDown1.DataBindings.DefaultDataSourceUpdateMode = 0
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 178
$System_Drawing_Point.Y = 74
$numericUpDown1.Location = $System_Drawing_Point
$numericUpDown1.Name = “numericUpDown1”
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 20
$System_Drawing_Size.Width = 120
$numericUpDown1.Size = $System_Drawing_Size
$numericUpDown1.TabIndex = 2

$form1.Controls.Add($numericUpDown1)

$sarkisec_button.DataBindings.DefaultDataSourceUpdateMode = 0

$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 12
$System_Drawing_Point.Y = 12
$sarkisec_button.Location = $System_Drawing_Point
$sarkisec_button.Name = “sarkisec_button”
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 35
$System_Drawing_Size.Width = 147
$sarkisec_button.Size = $System_Drawing_Size
$sarkisec_button.TabIndex = 1
$sarkisec_button.Text = “Alarm Dosyası Seçin”
$sarkisec_button.UseVisualStyleBackColor = $True
$sarkisec_button.add_Click($sarkisec_button_OnClick)

$form1.Controls.Add($sarkisec_button)

$kalanlabel.DataBindings.DefaultDataSourceUpdateMode = 0
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 12
$System_Drawing_Point.Y = 125
$kalanlabel.Location = $System_Drawing_Point
$kalanlabel.Name = “kalanlabel”
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 52
$System_Drawing_Size.Width = 256
$kalanlabel.Size = $System_Drawing_Size
$kalanlabel.TabIndex = 0
$kalanlabel.Text = “Seçilen Dosya : $file”

$form1.Controls.Add($kalanlabel)

$sarkisec_button.DataBindings.DefaultDataSourceUpdateMode = 0

$InitialFormWindowState = $form1.WindowState

$form1.add_Load($OnLoadForm_StateCorrection)

$form1.ShowDialog()| Out-Null

}

GenerateForm

[/powershell]

Leave a Reply

Your email address will not be published. Required fields are marked *

4 + 5 =