AHK-Makro-Programı-Komutları-ve-Açıklamaları

AHK Makro Programı Komutları ve Açıklamaları

 AHK makrosu oluşturmak için:

https://www.aklimagelmisken.xyz/autohotkey-ahk-nedir/


AHK Makro Programı Komutları, komutların Türkçe açıklamaları ve örneklerde kullanımı
* Bu listede, site içinde geçen yazılarda kullanılan komutlar ele alınacaktır. Tam liste için autohotkey sayfasını ziyaret ediniz:
https://autohotkey.com/docs/commands/

Ahk Komutları (Alfabetik sırada)

Break:

Döngüden çık komutu

Örnek:

 Loop {

...

if x > 25

break

...

if  x <= 5

continue

}

* x değişkeni 25'den büyükse döngüden çık

ExitApp :

scripti tamemen kapatıp çıkar.

FileAppend:

Dosya oluşturma komutu

Örnek:

Fileappend, %Contents%, Yazı.txt

* Yazı.txt dosyasını oluştur ve Contents değişkenini içine yaz

FileEncoding :

Dosya Kodlaması

Örnek:

FileEncoding, UTF-8 

UTF-8 olarak kodla

FileRead :

Dosya okuma komutu

Örnek:

FileRead, Contents, Yazı.txt

* Yazı.txt içeriğini oku ve Contents değişkenine aktar

FileDelete :

Dosya sil komutu

Örnek:

FileDelete, Yazı.txt

* Yazı.txt dosyasını SİL

If var contains :

"var" değişkeninin içinde, verilen string değerinin olup olmadığını kontrol eder.

Parametrelerin ayrıntılı kullanımı için ahk'nın sayfasına bakınız.

Örnek:

if kaynak not contains http

Eğer "kaynak" değişkeninin içinde "http" stringi yoksa ...

 

InputBox :

Kullanıcının giriş yapacağı bir kutu açar.

Ahk komut sayfası ve parametrelerin kullanımını görmek için tıklayın

Örnek:

InputBox, link, URL Adresi, Web Sayfası 

InStr :

Dizgide yerini bul komutu.

Örnek:

MsgBox % InStr("123abc789","abc")

* Sonuç : 4 olur, çünkü  "abc"nin ilk karakteri,  "123abc789" içinde 4 sıradadır.

Eğer aranan dizgi içinde bulunamazsa sonuç "0" olur.

Loop :

Döngü oluşturur.

Örneğin,

Loop, 3 ; Döngü 3 kez gerçekleşir

{

MsgBox, Sayı = %A_Index% ; "A_Index" 1,2,3 şeklinde artarak gider

Sleep, 100

}

* {} işaretleri şart değildir ama döngüyü kontrol etmenizi kolaylaştırır.

Msgbox:

Mesaj kutusuyla bildirim yapar.

Parametrelerin ayrıntılı kullanımı için ahk'nın sayfasına bakınız.

Örnek:

msgbox % StrLen(Başlangıç)

"Başlangıç" değişkenindeki karakter sayısını mesaj kutusuyla bildir. Değişkenden önce % konur.

Süreli gösterim ise şöyledir:

msgbox ,,,işlem başlıyor! ,2

2 sn boyunca yukarıdaki mesajı gösterir. (Parametreler için aradaki virgüller gereklidir!)

RegExReplace :

Düzenli ifadeyi değiştirme komutu

Örnek:

NewStr := RegExReplace("abc123123", "123$", "xyz")

NewStr değişkeni = abc123123 dizgisinde 123'ü bul ve xyz ile değiştir.

Sonuç: NewStr = abc123xyz olur çünkü $ işareti yalnızca paragraf  sonlarına  yada 123'le bitenlere bakar ve bu durumda sondaki (ikinci) 123'le uyuşma sağlar.

Send  :

Klavyeye bu tuşları gönder

Örnekler :

Send ^{End} : CTRL + END Kombinasyonunu Gönder

SetTitleMatchMode:

(3 Parametresi vardır)

1) Eşleşecek bir pencere başlığı belirtilen WinTitle ile başlamalıdır.

2) Bir pencerenin başlığı, eşleşme için içinde herhangi bir yerde WinTitle içerebilir.

3) Bir eşleme için bir pencere başlığı WinTitle ile tam olarak eşleşmelidir.

* Bence, 2- Numaralı - "kısmi eşleşme" sağlayan, en pratik olanı.

Yani Chrome web tarayıcısnı kullandığınızı varsayarak,

Örneğin, SetTitleMatchMode 2 ile tam başlık ve sınıf ismi olan "ahk_class Chrome_WidgetWin_1" yerine WinActivate, "Chrome" yazınca, Chrome penceresini bularak aktif eder.

Sleep :

Milisaniye biriminden Bekle (uyu) komutu

Örnek:

Sleep, 1000

* 1.000 milisaniye - 1 Saniye bekle

Sort:

Değişkeni sırala komutu

Örnek:

Sort, Contents, CL

Contents değişkenini sıralar.

(CL - büyük küçük harfe duyarsız + yerel harfleri dikkate alır. Yani Türkçe karakterlere göre sıraya sokar. Bunu kullanmazsanız Türkçe karakterlerle başlayan verileri en sona atar.)

StringGetPos:

Bir string içindeki substing'in pozisyon değerini verir. (Kaçıncı sırada?)

Parametrelerin ayrıntılı kullanımı için ahk'nın sayfasına bakınız.

Örnek:

StringGetPos, pos, metin, % Aranan

"metin" değişkenindeki "Aranan" substring'inin yerini bulur ve bu sayıyı "pos" değişkenine aktarır.

Diyelim ki,

metin := "AutoHotkey (ahk) nedir?"

Aranan := "Hotkey"

Bu durumda pos = 4 olur. (İlk karakter 0'dan saymaya başlanır)

StringTrimLeft/StringTrimRight:

Bir string içindeki verilen sayı kadar soldan yada sağdan karakter siler.

Parametrelerin ayrıntılı kullanımı için ahk'nın sayfasına bakınız.

Örnek:

String = Bu bir testtir.

StringTrimLeft, Sonuç, String, 7 ; "Bu bir " kısmı silinir ve Sonuç = "testtir." olur.

StringTrimRight, Sonuç, String, 9 ; " testtir." kısmı silinir ve Sonuç = "Bu bir" olur.

 

StrLen:

Bir string değişkenindeki karakter sayısını verir.

Parametrelerin ayrıntılı kullanımı için ahk'nın sayfasına bakınız.

Örnek:

MsgBox % StrLen(Başlangıç)

"Başlangıç" değişkenindeki karakter sayısını mesaj kutusuyla bildir.

UrlDownloadToFile :

URL kaynağını indirip, dosyaya kayıt eder.

Örnek:

UrlDownloadToFile, https://www.google.com.tr, google.txt

WinActivate :

Daha önce açılmış olan ve arka planda çalışan bir programı aktif etme komutu.

Örneğin, küçültülmüş olarak görev çubuğunda bekleyen Chrome'un yada Hesap Makinesinin aktif edilmesi.

WinGetTitle :

Seçilen pencerenin başlığını getirir.

Örneğin,

SetTitleMatchMode 2

WinActivate, Chrome

Winwait, Chrome

WinGetTitle, Title, A

MsgBox, Aktif pencere başlığı : "%Title%"

* Chrome'u aktif hale getirip, seçili sekmenin adını getirir.

WinTitle :

Prg. başlığı parametreleri

Örnek:

WinGetTitle, Title, A 

* Burada A harfi Aktif Pencereyi belirtmektedir. Yani Aktif Pencerenin başlığı getirilir.

Winwait :

Winactivate ile seçilmiş olan programı tamamen aktif olana kadar bekler.

Örneğin, Chrome'un yada Hesap Makinesinin seçilmesi ve tamamen aktif olması.

Yorum işareti:

Yorum işareti yada satırı için başa  ";" (Noktalı virgül) koyuyoruz.

* Dikkat edilecek husus ;'den önce bir boşluk olması şarttır.

Örneğin,

Msgbox, Test1 ; Bu kısım bir yorumdur.

Msgbox, Test2; Bu kısım yorum değildir ve Msgbox'da gösterilir.


Kodda hızlıca değişiklik yapmak istersek

Örneğin,

WinActivate, Chrome

Winwait, Chrome

;WinActivate, Firefox

;Winwait, Firefox

Programda Chrome yerine Firefox kullanmak istersek, Chrome'lu satırların başına ";" koyup, Firefox'ların başındaki ";"leri silerek, Firefox'u aktif hale getirebiliriz.


Yorum işaretini değiştirme:

Bence çok da gerekli değil ama diyelim ki sürekli C# ile çalışıyorsunuz ve AHK'da da yorum işaretini ";" yerine "//" ile değiştirmek istiyorsunuz o zaman aşağıdaki komutu kullanıyorsunuz:

#CommentFlag //

Bundan sonra yapacağınız her yorum için başa "//" eklemeniz gerekir.


Aktif Pencere başlığını ve Sınıf bilgisini bulma:
AU3 Spy.exe
AHK-Pencere Başlığı,Koordinat,Boyut Bulma-AU3_Spy.exe indir


37 thoughts on “AHK Makro Programı Komutları ve Açıklamaları”

  1. kellematin davul

    Merhaba ben bir oyunda macro yazdım 8 satırlık bir kod fakat bu kodun arkada çalışmasını istiyorum (oyundaki işim uzun suruyor bende o yaparken bilgisayarımda oynamak istiyorum) scripti nasıl veya hangi kodla arkada çalıştırabilirim.

    1. Merhaba,
      Eğer arka planda bazı koordinatlara tıklama gerektiren makro kullanacaksanız sanırım tek seçenek var ama o da kolay bir işlem değil.
      VMware (https://www.vmware.com/tr.html) benzeri bir sanal makine programı kurup, onun üzerine bir işletim sist. yükleyerek makroyu orada çalıştırmak.

      Ancak tıklama gerektirmeyen durumlarda yani bir siteye girerek, bir veriyi kopyalayıp kaydetme vs. gibi işlemlerde arka planda AHK makrosu çalıştırabilirsiniz.

      Kodu buraya yazarsanız belki yardımcı olabilirim.

      * Bu arada bazı Online oyunlar AHK’ya uyanmış durumda ve maalesef çalışmasını tamamen engelliyorlar.

      Not: AHK’da şu komutlar mevcut (makroyu arka planda çalıştırmak için) ama maalesef makrolarda genelde sorun yaratıyor:
      ControlClick
      ControlSend
      ControlSendRaw

  2. kellematin davul

    #MaxThreadsperHotkey 2
    End::
    Toggle :=!Toggle
    While Toggle{
    Send {Right down}
    Sleep 30
    Send {Right up}
    Send {Space down}
    Sleep 80
    Send {Space up}
    }
    return

  3. kellematin davul

    kodum bu bunu arkada çalıştırma gibi seçenekler var mı bir arkadaşım ben bu kodu oyunda çalıştırırken bende başka bir oyun oynuyorum demişti o yüzden neden ben yapamayayım dedim. eğer sizin kodlarla olur ise bana yardımcı olur musunuz.

    1. Maalesef birkaç deneme yaptım ancak arka planda çalışmadı. Arkadaşının nasıl yaptığını merak ettim açıkcası.

      1. kellematin davul

        Konu açıyorum sadece 169 satırlık kod oldugunu soyluyor kod hakkında bana verirmisin diyorum görüldüde bırakıyor

        1. Anlaşılan kodun hepsini vermek istememiş.
          Neyse, ben değişik tarayıcılarda tekrar deneme yaptım;
          ControlSend komutuyla Firefox’da makro arka planda çalışıyor ama Chrome ya da Opera’da çalışmıyor.
          Eğer Firefox’da çalışan bir oyunsa belki işe yarayabilir.

          Makroyu şöyle değiştirdim:
          Not: Firefox adres çubuğuna tıklayarak F8 ile makroyu başlatıyorum (tekrar F8 ile duruyor), simge durumuna küçültülmüş halde makro çalışmaya devam ediyor.
          Tabii sen makroyu nerede başlatacaksan AU3_Spy.exe ile koordinatlarını bulup ControlClick’le ilk tıklamayı otomatik yapabilirsin.
          ————————————–

          1. kellematin davul

            hocam kod için çok teşekkür ederim bu oynadığım oyun exe si olan bir oyun taraycıdan oynanmıyor bunu açıp firefoxa girince bişeyler yapabilirim onuda anladım. ve bu kodda tıklama konusunu anlamadım oyunda tıklamam gerekmiyor (gereken yerler var ama onları ben yaparım) ve bir şey daha firefox değilde steamda csgo gibi oyunları oynayabilirmiyim yada lol gibi oyunları arkadaşım lol oynuyorun demişti bu kodları arkada çalıştıracak bir programmı kullandı?

          2. kellematin davul

            Hocam kodu denedim kod çalışmadı firefox üzerinde çalıştı sadece. exesi olan oynumda çalışmadı. galiba yanlış anladınız hocam oynum tarayıcıdan değil exeden oynanıyor indirmek gerek yani o oyunda;
            bu kodları yaparken ben csgo lol yada youtubeden birşey izle3mek istiyorum sorum budur hocam iyi günler.

          3. kellematin davul

            Hocam tekrar rahatsız ediyorum kusura bakmayın kodu arkada çalıştırmayı başardım firefox yerine oyunumun adını yazdım ve oldu çok sağolun.

          4. Rica ederim.
            Online oyunda mı yoksa offline PC oyununda mı kullanacağına emin olamamıştım ama sonuçta makroyu çalıştırmana ve sorunu çözmene sevindim.

  4. kellematin davul

    hocam merhaba tekrar rahatsız ediyorum
    bu kod mouse tıklaması gereken bir kod bunu arkada çalıştıramadım

  5. kellematin davul

    yada mouse koordinatlarını nerdeden bulabilirim ve koordinatları nasıl yazmalıyım

  6. kellematin davul


    ControlSend ,,{Right up}, Growtopia
    ControlClick ,x1268 y427, Growtopia

    oldumu admin

      1. kellematin davul

        denedim oldu da süreyle ilgili bir sorun var galiba oda pingdendir diye düşünüyorum.
        peki ben bu oto tıklama ve space tuşuna basma script erini birleştirebilir miyim
        mesela f9’a basınca mouse’yle koordinatlara tıklasın f9’a basıp kapattıktan sonra f10’a basıp space scriptine geçebilir miyim bunları bir script’e koydum tuşları değiştirdim başlıyor fakat durmuyor

        1. Şöyle 2 fikir vereyim (sen oynadığın oyuna göre değiştirirsin artık)
          1. Seçenek :
          * F9 birinci işlemi, F10 2. işlemi yapar.
          * Aşağıda F9 sürekli “a” gönderiyor, F10 “b” gönderiyor.)
          * F9 F10’u, F10 da F9’u durdurabilir.
          —————————————————

          —————————————————
          2. Seçenek :
          * Timer kullanarak ve sadece F9’a basarak 1. ve 2. işlem arasında geçiş yapabilirsin.
          * Ancak makroyu durdurmak için başka tuşa ihtiyacın var, burada çıkış tuşunu Ctrl + Esc yaptım.
          —————————————————

          Ayrıntılar bu yazıda:
          https://www.aklimagelmisken.xyz/ahk-ile-arka-planda-oyun-makrosu-calistirma-ve-tek-tusla-baslat-durdur/

  7. kellematin davul

    hocam denedim oldu fakat f9daki kodları uygularken f10a basıyorum biraz sorun çıkarıyor oyunun içine f9u durdurup f10a geçmem gerek yada direk bi tuşa scripti durdurma komutu vermeliyim mesela f1 e scripti durdur komutu verelim ;
    f9la ilerlerken f1e basiyim sonra tekrar f10a basıp devam edeyim exit app komutu biraz sıkıntılı direk uygulamadan çıkıyor sanırsam

    1. Tekrar deneme yaptım ama bende hiçbir sorun çıkmadı. Belki F9 ve F10 tuşları önde çalışan program tarafından kullanıyordur. O zaman F9 ve F10 yerine başka tuşları atayıver.
      Ya da illa 3. tuşla durdurmak istiyorsan aşağıdaki gibi 1-2 satır ekleyebilirsin.
      (Önemli olan kullanacağın tuşların önde çalışan program tarafından önceden atanmamış olması. Örneğin bir çok programda olduğu gibi F1’in “Yardım” kısayol tuşu olarak kullanılması. )

      F11::
      Toggle := !Toggle
      return

  8. kemallettin davul

    Hocam dediğiniz gibi oyun auto programlara uyanmış durumda space ile yaparken sorun çıkmıyor fakat işin içine mouse girince biraz karışıyor bu yüzden durdrumam lazım sizin verdiğiniz bu kodu nereye koymam gerek
    F11::
    Toggle := !Toggle
    return

  9. kemallettin davul

    hocam ekledim herşey tamam çok sağolun son ricam üstteki komutlu yazıları silermisiniz oyundaki bazı arkadaşlar emek verdiğim kodları buradan kopyalayıp kullanıyorlar lütfen silermisiniz

    1. “kemallettin davul”, Hiç emek harcamadan kopyala + yapıştır işler yapanları ben de sevmem ama internet paylaşım üzerine kurulmuş.
      Bir sonraki AHK ile ilgili yazımda, arka planda makro çalıştırmaya da değineceğim ve örnek kodları vereceğim.
      Orada vereceğim örnek kodları kimse alıp kullanmasın diye böyle bir yazı yazmayayım mı?
      Sonuçta ben de sana yardım ederken, İngilizce AHK forumlarında paylaşılanları inceleyerek kendi bilgimle birleştirdim.
      Benim yazdığım kodları direkt kullananlar olacağı gibi, senin yaptığın şekilde geliştirip ya da kendi ihtiyacına göre uyarlayıp kullananlar da olacaktır.
      Yazılım, paylaşmadan başka türlü nasıl gelişir ki ?

      Not: Yine de, aşağıda tekrarlanan kodların bir kısmını kaldırdım. Kodları kullanmak isteyen arkadaşlar birazcık kafayı çalıştırıp makroyu kendilerine göre birleştirebilirler tabii 🙂

      Ayrıntılar bu yazıda:
      https://www.aklimagelmisken.xyz/ahk-ile-arka-planda-oyun-makrosu-calistirma-ve-tek-tusla-baslat-durdur/

  10. ;Keys from 0 to 9 bound with their respective combinations.

    *1::s(“1”)

    *2::s(“2”)

    *3::s(“3”)

    *4::s(“4”)

    *5::s(“5”)

    *6::s(“6”)

    *7::s(“7”)

    *8::s(“8”)

    *9::s(“9”)

    *0::s(“0”)

    s(k){
    while GetKeyState(k, “P”)
    send, {Blind}%k%
    }

    return

    kodum bu fakat bir süre sonra ekrana yazı geliyor sanırım bitiyor.
    amacım klavyede bir tuşa bastığımda süreklü basması

  11. Merhaba hocam Sizin öğrettiğiniz scriptleri geliştirdim yeni scriptler yazdım. Yardım ettiğiniz için çok teşekkür ederim. Kendimi script konusunda geliştirmeye devam ederken bir yerde takıldım;

    #MaxThreadsperHotkey 2
    SetTitleMatchMode 2
    WinActivate ‘oyun’
    Winwait ‘oyun’

    End::
    WinMinimize ‘oyun’
    Toggle := !Toggle
    While Toggle
    {
    ControlClick ,x613 y915, ‘oyun’
    ControlClick ,x142 y315, ‘oyun’
    ControlClick ,x744 y515, ‘oyun’
    ControlClick ,x749 y316, ‘oyun’
    ControlClick ,x8055 y215, ‘oyun’
    If !Toggle
    Break
    }

    Bu kodları yazdım bu kodları aynı oyundan 2 pencere birden açarak çalıştıramadım sadece birinde çalıştı ikisini ayrı ayrı nasıl çalıştırabilirim?

  12. Veli bülbül

    Merhabalar öncelikle konu çok güzel ve bilgili olmuş fazla bilgisayar bilgim olmadığı için yardiminizi rica ederim
    Ben klavyemden

    Pageup tuşuna basınca
    İlk önce shift tuşuna basılı tutup+ sonrada enter tuşuna basıp bırakacak artık pageup tuşum hep bunu yapsın istiyorum yada kopyala yapıştır Ctrl + v tuşunu tek tuşa atamak istiyorum gibi teşekkürler iyi çalışmalar

    1. Ctrl+v örneğini vereyim:
      F2 tuşuna, Hepsini seç + Kopyala + bir alt satıra Yapıştır tanımladım.
      Sadece “Yapıştır” lazımsa baştaki satırları silersin.
      (Ctrl için göndereceğin tuşun başına ^ ve Shift için + koyman gerekli.)
      Bu örnekten yola çıkarak diğer sorunun makrosunu kendin yapabilirsin sanırım.
      (Pageup için {PgUp} veya {NumpadPgUp} kullanman lazım.)

      $F2::
      Send ^a
      sleep 50
      Send ^c
      sleep 50
      send {Right}
      send {Enter}
      sleep 50
      Send ^v
      return

  13. Muhammed Doğruyol

    Hocam böyle bir makro programı ilk kez kullanıyorum.Bana fareyi yukarı aşağı oynatacak sonra F5 e basıp 12 saniye bekleyecek ve bunu sürekli tekrarlayacak makro lazım.Sanal makinede kullanıyorum birçok makro programı fakat sanal makineden çıkınca makro programları duruyor.

    1. Merhaba,
      İstediğin şekilde scripti hazırlayıp verme gibi bir şey yapmıyorum. (Armut piş ağzıma düş yok.)
      AHK ile yazdıklarımı okuyup, önceki örnekleri incelersen kolayca yapabilirsin.
      Gereken komutları yazayım, sen denemeni yap. Takıldığın yerde yardımcı olayım.
      Fare yukarı / aşağı için > send, {Wheelup x} veya send, {WheelDown x}
      F5 > send {F5}
      12 saniye için timer veya Sleep kullanman lazım.

Leave a Comment

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir