Proje


REALİZE ABİ SON PROJE
Tabii ki, aşağıda bu senaryoyu gerçekleştirmek için Python kodu bulunmaktadır. Lütfen öncelikle gerekli kütüphaneleri yükleyin:

```bash
pip install pywin32 opencv-python keyboard
```

Şimdi ise istediğiniz senaryoyu yerine getiren Python kodu:

```python
import win32gui
import win32con
import win32api
import cv2
import numpy as np
import keyboard

# Hedef pencerenin adı
window_name = "Notepad"

# Win32API'dan belirtilen pencereyi bul
def find_window_handle(window_name):
    handle = win32gui.FindWindow(None, window_name)
    if handle == 0:
        print("Hedef pencere bulunamadı")
    return handle

# Belirtilen pencerenin ekran görüntüsünü al
def capture_window(hwnd):
    left, top, right, bot = win32gui.GetWindowRect(hwnd)
    w = right - left
    h = bot - top
    hDC = win32gui.GetWindowDC(hwnd)
    myDC = win32ui.CreateDCFromHandle(hDC)
    newDC = myDC.CreateCompatibleDC()

    myBitMap = win32ui.CreateBitmap()
    myBitMap.CreateCompatibleBitmap(myDC, w, h)
    newDC.SelectObject(myBitMap)
    newDC.BitBlt((0, 0), (w, h), myDC, (0, 0), win32con.SRCCOPY)

    bmp_info = myBitMap.GetInfo()
    bmp_str = myBitMap.GetBitmapBits(True)

    img = np.frombuffer(bmp_str, dtype='uint8')
    img.shape = (h, w, 4)
    myDC.DeleteDC()
    newDC.DeleteDC()
    win32gui.ReleaseDC(hwnd, hDC)
    win32gui.DeleteObject(myBitMap.GetHandle())

    return cv2.cvtColor(img, cv2.COLOR_BGRA2BGR)

# Pencereyi ekranda göster
def show_image(title, image):
    cv2.imshow(title, image)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

# Nesneyi bul ve kare içine al
def find_object(image, object_template):
    res = cv2.matchTemplate(image, object_template, cv2.TM_CCOEFF_NORMED)
    threshold = 0.8
    loc = np.where(res >= threshold)
    for pt in zip(*loc[::-1]):
        cv2.rectangle(image, pt, (pt[0] + object_template.shape[1], pt[1] + object_template.shape[0]), (0, 255, 0), 2)
    return image

# Ana işlem döngüsü
if __name__ == "__main__":
    hwnd = find_window_handle(window_name)
    object_template = cv2.imread("object_template.png")  # Nesne şablonunu buraya yükleyin
    while True:
        image = capture_window(hwnd)
        found_image = find_object(image, object_template)
        show_image(window_name, found_image)

        if cv2.waitKey(1) & 0xFF == ord('q'):
            break

        # Nesne bulunduğunda tıklayacak tuşa bas
        if cv2.waitKey(1) & 0xFF == ord('t'):
            loc = keyboard.Function(pe.find_object(image, object_template))
            win32api.SetCursorPos(loc)
            win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, loc[0], loc[1], 0, 0)
            win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, loc[0], loc[1], 0, 0)
```

Bu kod, belirli bir pencere adını kullanarak pencerenin ekran görüntüsünü alır, opencv ile nesne tespiti yapar, nesneyi çevreleyen bir dikdörtgen çizer ve ardından nesne tespit edildiğinde klavyeden 't' tuşuna basılarak nesneye tıklanır. Özellikle nesne tıklanmasında, nesnenin doğru konumunu elde etmek için `keyboard.Function()` fonksiyonunun `pe.find_object()` fonksiyonu ile kullanımı gösterilmiştir. 'object_template.png' dosyasını kendi nesne görüntünüzle değiştirmeyi unutmayın.