Mouse Kontrol Modülü

Ana sayfa Forumlar PROGRAMLAMA Diğer Programlama Dilleri Python Mouse Kontrol Modülü

4 yazı görüntüleniyor - 1 ile 4 arası (toplam 4)
  • Yazar
    Yazılar
  • #16037
    özgür
    İzleyici

    # -*- coding: cp1254 -*-
    import time #Duraklamalar için
    import win32api #Fare olayları için
    import win32con #Windows sabitleri
    import win32gui #Pencere seçenekleri için

    def ScreenToMouse(pt):
    “””Fareyi verilen konumun koordinatlarına taşır.
    Fare konumunu 16 bite göre normalleştirilen yere taşır,
    Ekranın sol üst köşesi (0), sağ alt köşesine 65535 uzaklıkta olarak temsil edilir,
    Bu fonksiyon ekran boyutlarını modülün yüklendiği ana göre belirler ve değiştirilemez

    Parametreler:
    pt:Farenin konumunu değiştirmek için kullanılacak koordinatlar
    Değiştirilen noktayı geri döndürür.
    “””

    # İlk başlatılmasında ekran boyutlarına ilk değerini atar.
    # Ekran boyutları ayarlarını bu fonksiyon çalıştırıldığı sürece değiştirilemeyeceğini
    #unutmayınız.
    if not ScreenToMouse._SCREEN_DIMENSIONS:
    desktop = win32gui.GetClientRect(win32gui.GetDesktopWindow())
    ScreenToMouse._SCREEN_DIMENSIONS = (desktop[2], desktop[3])

    return ((65535 * pt[0]) / ScreenToMouse._SCREEN_DIMENSIONS[0],
    (65535 * pt[1]) / ScreenToMouse._SCREEN_DIMENSIONS[1])

    ScreenToMouse._SCREEN_DIMENSIONS = None

    def PressButton(down, button=’left’):
    “””Fare düğmesine basma ya da basılı halini bırakma olayını temsil etmektedir.

    Parametreler:
    down: farenin düğmesine basılıp basılmayacağını belirtir
    button: hangi düğmenin kullanılacağını belirtir

    Geriye bir şey döndürmez
    “””

    # Fare olayını belirtilen uygun duruma işaretler
    flags = {
    ‘left’: (win32con.MOUSEEVENTF_LEFTUP, win32con.MOUSEEVENTF_LEFTDOWN),
    ‘middle’: (win32con.MOUSEEVENTF_MIDDLEUP, win32con.MOUSEEVENTF_MIDDLEDOWN),
    ‘right’: (win32con.MOUSEEVENTF_RIGHTUP, win32con.MOUSEEVENTF_RIGHTDOWN)
    }

    # Düğmeye basar
    win32api.mouse_event(flags[button][down], 0, 0)

    def ClickButton(button=’left’, click_time=0):
    “””Farenin o anda bulunduğu yerde fareyi basılı hale getirir.

    Parametreler:
    button: Hangi düğmenin basılacağını belirtir
    click_time: Basma ve bırakma arasındaki süreyi belirtir

    Geriye bir şey döndürmez
    “””
    PressButton(True, button)
    time.sleep(click_time)
    PressButton(False, button)

    def DoubleClickButton(button=’left’, click_time=0, time_between_clicks=0):
    “””Farenin o anda bulunduğu yerde fareye çift tıklatır.

    Parametreler:
    button: Hangi düğmenin basılacağını belirtir
    click_time: Basma ve bırakma arasındaki süreyi belirtir
    time_between_clicks: Tıklamalar arasındaki duraksama süresini belirtir

    Geriye bir şey döndürmez
    “””
    ClickButton(button, click_time)
    time.sleep(time_between_clicks)
    ClickButton(button, click_time)

    def MoveToLocation(pos, duration=0, tick=0.01):
    “””Fareyi bulunduğu konumdan belirtilen koordinatlara taşır.

    Parametreler:
    pos: Farenin taşınacağı ekran koordinatlarını belirtir.
    duration: Farenin tıklamasından bırakmaya kadarki geçen süreyi belirtir.
    tick: Farenin peşpeşe hareketleri arasındaki zaman miktarını ifade eder.

    Geriye bir şey döndürmez
    “””
    # hedefe kaç adımda gidileceğini hesaplıyoruz.
    num_steps = (duration/tick)+1

    # farenin o anki ve taşınacağı pozisyonu alıyoruz
    current_location = ScreenToMouse(win32gui.GetCursorPos())
    end_location = ScreenToMouse(pos)

    # adım boyutlarını belirliyoruz
    step_size = ((end_location[0]-current_location[0])/num_steps,
    (end_location[1]-current_location[1])/num_steps)
    step = 0

    while step < num_steps: # fareyi bir adım hareket ettiriyoruz. current_location = (current_location[0]+step_size[0], current_location[1]+step_size[1]) # pywin32 de hata almamak için konum bilgilerini integere dönüştürüyoruz. win32api.mouse_event( win32con.MOUSEEVENTF_MOVE|win32con.MOUSEEVENTF_ABSOLUTE, int(current_location[0]), int(current_location[1])) step += 1 time.sleep(tick) def ClickAtLocation(pos, button='left', click_time=0): """Ekran koordinatları belirtilen yere tıklatıyoruz. Parametreler: pos: ekran koordinatları (x,y) noktaları belirtiyoruz button: hangi düğmenin tıklanılacağını belirtiyoruz click_time: tıklama süresi Geriye bir şey döndürmez """ MoveToLocation(pos) ClickButton(button, click_time) def ClickInWindow(hwnd, offset=None, button='left', click_time=0): """Belirtilen pencerenin orta noktasına tıklatır. Parametreler: hwnd: tıklanacak pencereyi tutar offset: nereye tıklanacağını belirtir,varsayılan tam orta noktadır button: hangi düğmenin tıklayacağını belirtir. click_time: tıklama süresini belirtir Geriye bir şey döndürmez """ rect = win32gui.GetClientRect(hwnd) if offset is None: offset = (rect[2]/2, rect[3]/2) # pencerenin tam orta noktasının koordinatlarını alıyoruz pos = win32gui.ClientToScreen(hwnd, offset) ClickAtLocation(pos, button, click_time) def DoubleClickInWindow( hwnd, offset=None, button='left', click_time=0, time_between_clicks=0.1): """Belirtilen pencerenin orta noktasına çft tıklatır. Parametreler: hwnd: tıklanacak pencereyi tutar offset: nereye tıklanacağını belirtir,varsayılan tam orta noktadır button: hangi düğmenin tıklayacağını belirtir click_time: tıklama süresini belirtir time_between_clicks: tıklama süreleri arasındaki duraklama süresini belirtir Geriye bir şey döndürmez """ ClickInWindow(hwnd, offset, button, click_time) time.sleep(time_between_clicks) ClickInWindow(hwnd, offset, button, click_time) if __name__ == "__main__": # Hadi bir test yapalım bakalım screen_size = win32gui.GetClientRect(win32gui.GetDesktopWindow()) screen_size = (screen_size[2], screen_size[3]) # fareyi anında tam 0 noktasına taşıyoruz MoveToLocation((screen_size[0], 0)) # fareyi 5 saniye içerisinde sol alt köşeye taşıyoruz MoveToLocation((0, screen_size[1]), 5) # sol tıklatıp Başlat menüsünü açıyoruz # tabi eğer görev çubuğu alt kısımdaysa ClickButton() # bir süre bekleyip içerik menüsünü açmak için sağ tıklıyoruz time.sleep(3) ClickButton('right') # fareyi uzaklaştırıp boş bir alana tıklıyor ve içerik menüsünü kapatmış oluyoruz MoveToLocation((screen_size[0]/2, screen_size[1]/2), 3) MoveToLocation((0, 0), 3) ClickButton()

    #16040
    Bahadir
    Üye

    anlatım sizemi ait hocam .

    #16041
    Anonim
    Pasif

    bu tür düzenli dersleri siteye ekleyerek yeni etkinliğe katılabilirsiniz.
    düzenli ders konuları forumda başlıklar arasında kaybolacağı için tavsiyem tek makale de olsa siteye ekleminiz.

    üye girşi yaptığınızda üst menüde makale ekle seçeneği aktif olacaktır. siz daha önce etkinliklere katıldığınız için içerik klemey yetkilisiniz. eklene içerikler kontrolden geçip ilgili başlığa ekleneceği için doğrudan yayınlanmayacaktır.

    ilgi ve desteğiniz için şimdiden teş.

    #16043
    özgür
    İzleyici

    tavsiyeleriniz için teşekkürler uymaya çalışacağım
    teşekkürler

4 yazı görüntüleniyor - 1 ile 4 arası (toplam 4)
  • Bu konuyu yanıtlamak için giriş yapmış olmalısınız.
Bana Ders Anlat © 2008-2022