Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
0
Cevap
185
Tıklama
0
Öne Çıkarma
Autohotkey'de script için yardım lazım
G
8 ay
Binbaşı
Konu Sahibi

Merhaba, bilgisayarda işlerimi kolaylaştıracak bir komut dizisi yazıyorum ama çok acemi olduğum için bazı aşamaları oluşturamıyorum. Chatgpt'den genelde yardım aldım yazma konusunda ama tıkandım.
1 - İnternet sayfasında "a, b, c" şeklinde 3 değişken aratıyorum
2 - Bulamazsa sayfada "page down"
3 - Bulursa rastgele 3 değişkenden birine tıklıyor.
4 - Açılan sayfada ilgili başlığı bulana kadar "page up" yapıyor.
5 - Başlığı bulup tıklıyor ve daha sonra diğer başlık açılıp başlık2'ye tıklıyor.
6 - Tekrar "page down" yapıp kaydet görselini bulup tıklıyor ve sonra geri kısmına tıklıyor.

Buraya kadar tamam ama geri sayfaya geldikten sonra script sadece "page up" şeklinde takılı kalıyor. Sürekli yukarı çıkıyor sayfa. Beni istediğin tekrar geri gelinde "a,b,c" değişkenlerinden yine herhangi birini bulup yine aynı şekilde işlemleri yapmak. Ne zaman ki geri geldikten sonra sayfada bir "a,b,c" değişkeni bulamazsa "end" yapıp aşağıdaki sayfa numaraları için sayfa2.png yapıp o sayfada da aynı işlemleri yapıp bu şekilde 5 sayfada da işlem yapmak. Belki kolay yada zordur acemiyim diye bilemiyorum ama tıkandığım için profesyonel yardım gerekiyor sanırım.



Esc::Reload
; Toggle değişkenini başlat
toggle := false


; Insert tuşuna basıldığında toggle değişkenini aç/kapat
Insert::
toggle := !toggle


if (toggle) {
    MsgBox, Arama başlatılıyor.
    SetTimer, StartImageSearch, 0 ; Döngüyü başlat
} else {
    MsgBox, Arama durduruluyor.
    SetTimer, StartImageSearch, Off ; Döngüyü durdur
}
return


; Arama ve tıklama işlemi
StartImageSearch:
{
    ; Chrome penceresini etkinleştir ve kontrol et
    if !WinActive("ahk_exe chrome.exe") {
        WinActivate, ahk_exe chrome.exe
        WinWaitActive, ahk_exe chrome.exe, , 3 ; 3 saniye bekler
        if !WinActive("ahk_exe chrome.exe") { ; Chrome etkin değilse işlem yapmaz
            return
        }
    }


    ; Resim dosya yollarını tanımla
    mainImages := ["Q:\a.png", "Q:\b.png", "Q:\c.png"]
    backupPages := ["Q:\sayfa2.png", "Q:\sayfa3.png", "Q:\sayfa4.png", "Q:sayfa5.png"]
    additionalImages := ["Q:\başlık.png", "Q:\başlık2.png", "C:\kaydet.png", "C:\geri.png"]


    found := false  ; Görüntü bulunduğunu kontrol eden değişken
    retry := 0  ; Sayfa kaydırma sayacı


    ; Ana resim dosyalarını sırayla ara
    while (retry < 3) {
        for index, imagePath in mainImages {
            positions := FindAllImagePositions(imagePath)
            
            if (positions.MaxIndex() > 0) { ; Eğer pozisyon bulunduysa
                found := true
                Random, randIndex, 1, % positions.MaxIndex() ; Rastgele bir pozisyon seç
                pos := positions[randIndex]
                MouseMove, pos[1], pos[2] ; Seçilen pozisyonda tıklama yap
                Click
            }
        }


        if found {
            ; 1. İlk olarak ibranamealindi.png görselini bulana kadar "Page Up" tuşuna bas
    foundImage := false
            while !foundImage {
                positions := FindAllImagePositions("Q:\başlık.png")
    
                if (positions.MaxIndex() > 0)(ErrorLevel = 0) {
                    ; Görsel bulundu, tıklanacak
            Random, randIndex, 1, % positions.MaxIndex()
          pos := positions[randIndex]
          MouseMove, pos[1], pos[2]
        Click
          foundImage := true ; Görsel bulundu, döngüden çık
          } else {
          Send, {PgUp} ; Görsel bulunamadıysa Page Up tuşuna bas
            Sleep, 1000 ; 0.5 saniye bekle
                }
            }


            ; 2. talimatgitti.png görselini bulana kadar bekle
    foundImage := false
    while !foundImage {
            positions := FindAllImagePositions("Q:\başlık2.png")
    
            if (positions.MaxIndex() > 0)(ErrorLevel = 0) {
          ; Görsel bulundu, tıklanacak
          Random, randIndex, 1, % positions.MaxIndex()
          pos := positions[randIndex]
        MouseMove, pos[1], pos[2]
          Click
            foundImage := true ; Görsel bulundu, döngüden çık
          } else {
          Sleep, 500 ; 0.5 saniye bekle
            }
    }


    ; 3. kaydet.png görselini bulana kadar "Page Down" tuşuna bas
    foundImage := false
    while !foundImage {
            positions := FindAllImagePositions("C:\kaydet.png")
    
                if (positions.MaxIndex() > 0)(ErrorLevel = 0) {
                    ; Görsel bulundu, tıklanacak
          Random, randIndex, 1, % positions.MaxIndex()
          pos := positions[randIndex]
        MouseMove, pos[1], pos[2]
        Click
        foundImage := true ; Görsel bulundu, döngüden çık
          } else {
          Send, {PgDn} ; Görsel bulunamadıysa Page Down tuşuna bas
          Sleep, 500 ; 0.5 saniye bekle
            }
    }


    ; 4. geri.png görselini bulana kadar bekle
    foundImage := false
    while !foundImage {
          positions := FindAllImagePositions("Q:\geri.png")
    
                if (positions.MaxIndex() > 0)(ErrorLevel = 0) {
                ; Görsel bulundu, tıklanacak
                Random, randIndex, 1, % positions.MaxIndex()
            pos := positions[randIndex]
          MouseMove, pos[1], pos[2]
          Click
          foundImage := true ; Görsel bulundu, döngüden çık
          } else {
        Sleep, 500 ; 0.5 saniye bekle
          }
    }
        }
        ; Ana resimler bulunamazsa "Page Down" ile sayfayı kaydırıp tekrar dene
        if !found {
            Send, {PgDn}
            Sleep, 500
            retry++
        }
    Continue
    }
    ; Eğer ana dosyalar ve kaydırma ile bulunamazsa yedek sayfaları ara
    if (!found) {
        for index, backupPage in backupPages {
            positions := FindAllImagePositions(backupPage)
            
            if (positions.MaxIndex() > 0) {
                Random, randIndex, 1, % positions.MaxIndex()
                pos := positions[randIndex]
                MouseMove, pos[1], pos[2]
                Click
                Sleep, 500
                break
            }
        }
    }
    
    ; 5 saniye bekleyip tekrar başla
    Sleep, 5000
}


; Tüm görüntü pozisyonlarını bulan fonksiyon
FindAllImagePositions(imagePath) {
    global
    positions := [] ; Pozisyonları saklayacağımız dizi
    
    ; Ekran çözünürlüğüne göre arama alanını belirle
    x1 := 0
    y1 := 0
    x2 := 1920
    y2 := 1080
    
    ; Görüntüleri tüm ekranda arayıp pozisyonları listeye ekle
    Loop {
        ImageSearch, foundX, foundY, x1, y1, x2, y2, %imagePath%
        
        if (ErrorLevel != 0) ; Görüntü bulunamazsa döngüden çık
            break
        
        ; Pozisyonu kaydet
        positions.Push([foundX, foundY])
        
        ; Sonraki arama için konumu güncelle (bulunan resmin biraz sağına kayarak aramaya devam et)
        x1 := foundX + 10
        y1 := foundY + 10
    }
    return positions
}


DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.