Otomatizasyon yazılımı

Bir yazılım fikri konusunda sizlere danışmak istiyorum. Gündemde agentlara sık sık rastlamaya başladık. Kendi aralarında yeni bir sosyal medya kuracak kadar ileriye gittiler. Ancak gündelik hayatta karşılaştığımız basit problemleri çözmekte ne kadar yetenekliler?

Bir süredir statik bir UI ile çalışan eski bir yazılım ile çalışıyorum. Belirli bir işi yapmak istediğimde aynı prosedürleri yapmak zorunda kalıyorum. Mesela rutin olarak bir rapor yazıyorum. Raporu yazarken belirli kutucuklara aynı şeyleri yazıyorum. Bunların çok küçük kısımlarındaki ifadeleri veya sayıları gerekirse değiştirebiliyorum. Sonrasında e-imza ile imzalıyorum. Sistem imzalama için rutin bir prosedür işletiyor.

İmzala tuşuna tıkla > Şifre ekranının gelmesini bekle > Şifreyi gir > Onaylama tuşuna bas > Ekrana onaylandığı ile ilgili yazı gelmesini bekle > Onaylama kutucuğunda tamam tuşuna bas > Rapor yazma ekranından çık

Elimde bunun gibi çeşitli prosedürler var. Sayılarını tam olarak bilmiyorum. Ama işi yapmaya başladığımda %80 yazılımın rutin işlemleriyle uğraşıyorum. Kullandığım yazılımı çeşitli sistemlerde kullanabiliyorum. Bazen win 10 bazen win11, bazen win7 kullanmak zorunda kalıyorum. Bilgisayarın ekran çözünürlüğü ve ekranın boyutu değişkenlik gösteriyor. Bir butonların boyutu ve konumu buna bağlı olarak yer değiştirebiliyor.

Ben bir otomasyon yazılımı istiyorum. Bu yazılım olmadığı için ben bu işleri zaten her gün yapıyorum. Arka planda benim yazdıklarımı ve tıkladığım yerleri inceleyip bir süre kendisine kullandığım sistemle ilgili UI elemanlarının şekilleri, yerleri, nitelikleri, birbirleriyle ilişkileri gibi veriler toparlasın. Benim hangi elemanlara daha sık tıkladığımı tespit etsin.

Bu veriler bir süre biriktikten sonra yanımda bu yazılımı yeni kullanmaya başlayan birisi gibi ben yaptığım işleri adım adım anlatayım ve benim öğrettiğim işleri yapmaya yetkisi olsun. Bu öğrettiğim işler dışında hiçbir şeye dokunmasın. Öğrettiklerimi de ben istediğim zaman yapsın.

Temel araç olarak pyautogui, OpenCV ve pynput kullanmayı planlıyorum. Henüz UI elemanlarını nasıl tespit edeceğini hangi algoritma ile yapacağımı bilmiyorum. Benim yaptığım işleri nasıl öğreteceğimi de bilmiyorum.

Daha önce Google, microsoft gibi şirketler benzer fikirlerle yola çıkmışlar. Ancak çok daha genel işler yapmasını bekledikleri için çok büyük yapay zeka modelleri oluşturmuşlar. 16gb ram ile çalışan bir bilgisayarda çalışmıyormuş. Ben bu kadar karmaşık bir iş istemiyorum. Sürekli tekrar eden işler yapıyorum. İzlesin, yapacağı işi de ben göstereyim. Ben istediğimde o yapsın.

Her türlü yorum ve önerinize açığım.

Yapılacak işler kesinse, yapay zekayı hiç dahil etmeden bir program yazmak en mantıklısı bence. Geliştirme sürecinde yapay zekadan destek alabilirsiniz tabii.

son zamanlarda popüler olan openclaw gibi araçları incelemek isteyebilirsiniz.birkaç girişim daha karşıma çıktı.

Ancak henüz yeniler, bir sürü de sorunlar var. Ciddi güvenlik açıklarına rastlayanı da görmüştüm. Kullanmanız için değil, belki araştırmanız için bir giriş noktası olur diye paylaşmak istedim.

Yazılım nedir?

Prosedürler nelerdir?

Otomatik / varsayılan doldurulmasına engel olan nedir?

Olumlu veri, en azından linux ve türevleri işletim sistemlerini eledik. Geriye elimizde win32 kaldı.

Konu windows olunca, buton id leri ve konumlarını kullanılan yazılıma göre tespit etmek kolay.

Neden bu kadar çok soru sordum.

Yazılımı bilmezsek, üzerinde kontrol sağlayamayız.

Örnek bir kod vereyim:

Yapa yekaya yazdırdım:

from pynput import mouse
from pywinauto import Desktop
import time

desktop = Desktop(backend="win32")

print("Mouse ile bir pencereye tıklayın...\n")

def print_tree(window, level=0):
    indent = "   " * level

    try:
        rect = window.rectangle()
        print(f"{indent}HWND        : {window.handle}")
        print(f"{indent}Text        : {window.window_text()}")
        print(f"{indent}Class       : {window.class_name()}")
        print(f"{indent}Control ID  : {window.control_id()}")
        print(f"{indent}Rectangle   : {rect}")
        print(f"{indent}" + "-"*40)
    except:
        return

    # Child windowları recursive yazdır
    try:
        children = window.children()
        for child in children:
            print_tree(child, level + 1)
    except:
        pass


def on_click(x, y, button, pressed):
    if not pressed:
        return

    try:
        element = desktop.from_point(x, y)
        top_window = element.top_level_parent()

        print("\n=== YAKALANAN ANA PENCERE ===")
        print("Başlık:", top_window.window_text())
        print("=" * 60)

        print_tree(top_window)

    except Exception as e:
        print("Hata:", e)

    return False  # Tek tıklamada çıksın


with mouse.Listener(on_click=on_click) as listener:
    listener.join()

Bu kodu çalıştırıp, bir programın başlığına tıklarsanız size ID bilgilerini ve buton konumlarını size listeler. Hangi windows işletim sistemi olduğudan bağımsız, hangi pencere boyutunda olduğundan bağımsız size mevcut durumu gösterir.

Artık buton id ve buton konumlarınız mevcut. Bunlara metin, tıklmama ve win msg göndermek çocuk oyuncağı.

Ama kullandığınız yazılım, win32 değil de farklı formatta ise farklı yaklaşımlar gerekir.

Otomatize etmek, istatistik toplamak, tekrarlanan rutinleri kaydetmek ve yeniden çalıştırmak gayet kolay.

Ama kullandığınız programın, davranışları, hata mesajları, farklı pencereler açılması gibi her olasılığı yönetiyor olmanız gerekir.

Bu nedenle de programın yapısı hakkında bilgi vermeniz gerekir.

Yapılır mı yapılır. Biraz işletim sistemi bilgisi ve kullanılan yazılım dokümanlarıyla gayet de kolay yapılır.

AI gerektiren bir durum yok, sadece basit otomasyon. Hatta programın dahili bir makro yapısı varsa o makrolarla bile iş çözülebilir.

Olasılıklar çok.

Biraz açıklamayla daha olası çözümler oluşturulabilir. Kolay gelsin.