2026-06-15

Klavye vuruşları göndermek

Powershell ile bir pencereye klavye vuruşları göndermek mümkün. Bunu bir animasyon ile yapmak istedim. 3 not defteri süreci oluşturup, her birinin içine birer cümle ekleyip, sonra da bunları kapatmak istiyorum.

Açılan bir not defteri penceresinin içine bir kelime yazmak için

[System.Windows.Forms.SendKeys]::SendWait()

 kullanmam gerek. Ama bunu kullanmak için önce

Add-Type -AssemblyName System.Windows.Forms

eklemeliyim. Kapatırken de bir not defteri sürecini diğerinden ayırt etmek için pencerenin başlığına göre ayırt etmek için

[Microsoft.VisualBasic.Interaction]::AppActivate("Not Defteri")

gibi bir şey kullanmak istiyorum. Kapatırken Alt+F4 komutunun karşılığını

[System.Windows.Forms.SendKeys]::SendWait("%{F4}")

 ile göndermek, bu sorunun cevabını "Hayır" ile cevaplamak için "n" kısayolunu da

[System.Windows.Forms.SendKeys]::SendWait("n")

ile göndermek istiyorum. Her not defteri penceresinin içeriği olacak kelimeleri de aşağıdaki gibi bir değişkene koydum.

$kelimeler = "Bugun","gunlerden","pazartesi"

Hepsini tek bir betiğe koyunca:

Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName Microsoft.VisualBasic

$kelimeler = "Bugun","gunlerden","pazartesi"

$kelimeler | % {
    start notepad
    sleep -Milliseconds 500
    [System.Windows.Forms.SendKeys]::SendWait($_)
}

sleep -Milliseconds 500

try {
    $kelimeler | % {
        [Microsoft.VisualBasic.Interaction]::AppActivate("$_, Not Defteri")
        [System.Windows.Forms.SendKeys]::SendWait("%{F4}")
        sleep -Milliseconds 500
        [System.Windows.Forms.SendKeys]::SendWait("n")
        sleep -Milliseconds 500
    }
}
finally {
    ps notepad -ea silent | kill -force -ea silent
}

Kapatmak için pencere başlığına göre Alt+F4 göndermek istedim, ama Türkçe yerelleştirme dışında herhangi bir durumda AppActivate çalışmayacaktır. Bu durum için try - finally ile bütün not defteri süreçlerini sonlandırdım.

Hiç yorum yok: