Klavye Kontrol Modülü

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

1 yazı görüntüleniyor (toplam 1)
  • Yazar
    Yazılar
  • #16036
    özgür
    İzleyici

    # -*- coding: cp1254 -*-
    import time #Duraklamalar için
    import win32api #Klavye hareketleri ve sanal tuş kodları için
    import win32con #Windows sabitleri

    def PressKey(down, key):
    “””Bir tuşa basmayı yada basılı olanı durdurma.

    Bir tuşa basar gibi ya da basılı tutar gibi yapıyoruz

    Parametreler:
    down: bir tuşa basılıp basılmadığı yada basılı tutulup tutulmadığını ifade eder
    key: Kullanılacak tuşun sanal kodunu ifade eder
    “””
    win32api.keybd_event(key, 0, (not down) * win32con.KEYEVENTF_KEYUP)

    def TypeKey(key, keystroke_time=0):
    “””Sanal bir tuşa basılmasını ifade eder.

    Parametlerler:
    key: hangi tuşa basılacağını ifade eder
    keystroke_time: tuşa saniye olarak ne uzunlukta basılacağını ifade eder.
    Not: 0 olarak gayet güzel çalışmaktadır.

    geriye bir şey döndürmez.
    “””

    # Bu sadece PressKey fonksiyonuna gecikme süresi kadar bekleme ekler
    PressKey(True, key)
    time.sleep(keystroke_time)
    PressKey(False, key)

    def TypeString(string_to_type,
    use_modifiers=False,
    keystroke_time=0,
    time_between_keystrokes=0):
    “””Klavyeyle bir şeyler yazar gibi kullanıyoruz.

    parametreler:
    string_to_type: yazılacak yazı
    use_modifiers: aşağıdaki tanımlayıcı kelimelerin yazılıp yazılmayacığı belirtir.
    aktif olduğunda:
    {abc}: karakterleri ALT tuşu basılı yazdırır
    [abc]: karakterleri CTRL tuşu basılı gibi yazdırır
    use_modifiers True ise kaçış karakteri ve {}[] bu işaretleri aslına uygun şekilde
    kullanılır
    p işareti işlemleri 1 saniyelik duraklatır menüleri kullanırken baya kullanışlıdır
    1-9 işaretleri F tuşlarını ifade eder, ise F10’u

    Özellikleri: SHIFT i , yazdırılmayan ifadeleri (F tuşları, ESC, ok tuşları vs),
    sağ/sol SHIFT ALT WINDOWS tuşlarını tam olarak destekler.

    keystroke_time:saniye olarak tuşların basılı tutulacağı süreyi ifade eder
    time_between_keystrokes: saniye olarak tuşlar arasındaki duraksamayı ifade eder

    geriye bir şey döndürmez.
    “””

    shift_held = win32api.GetAsyncKeyState(win32con.VK_SHIFT ) < 0 ctrl_held = win32api.GetAsyncKeyState(win32con.VK_CONTROL) < 0 alt_held = win32api.GetAsyncKeyState(win32con.VK_MENU ) < 0 next_escaped = False escape_chars = { 'a': 'a', 'b': 'b', 'f': 'f', 'n': 'n', 'r': 'r', 't': 't', 'v': 'v'} for char in string_to_type: vk = None handled = False # {abc} ve [abc] gibi modifiyeli tuşların olup olmadığını kontrol ediyoruz. if use_modifiers and not next_escaped: handled = True if char == "{" and not alt_held: alt_held = True PressKey(True, win32con.VK_MENU) elif char == "}" and alt_held: alt_held = False PressKey(False, win32con.VK_MENU) elif char == "[" and not ctrl_held: ctrl_held = True PressKey(True, win32con.VK_CONTROL) elif char == "]" and ctrl_held: ctrl_held = False PressKey(False, win32con.VK_CONTROL) else: handled = False # Eğer bir kaçış ifadesi varsa onu uygun kodla değiştiriyoruz if next_escaped and char in escape_chars: char = escape_chars[char] #Eğer p ifadesi varsa 1 saniye bekletiyoruz if next_escaped and char == 'p': time.sleep(1) next_escaped = False handled = True # Eğer (d) ifadesi varsa F tuşlarını kullanıyoruz. if next_escaped and char.isdigit(): fkey = int(char) if not fkey: fkey = 10 next_escaped = False vk = win32con.VK_F1 + fkey - 1 # Eğer ters slah ifadesi varsa bir sonraki ifadeyi kaçış ifadesi olarak kullanıyoruz if not next_escaped and char == "\": next_escaped = True handled = True #Eğer bunu yaparsak, bu özel bir karakter yada özel kaçış ifadesi olmayacak # düzene uygun bir ifade olacaktır. if not handled: next_escaped = False if not vk: vk = win32api.VkKeyScan(char) # VkKeyScan() fonksiyonu taranan verinin küçük harfle byte değerini döndürür. # Büyük ifadesi verilen karakterin üretilmesini ifade eder. # Burada biz sadece SHIFT ile ilgileniyoruz.SHIFT komutunu tanımlıyor ve # şu ana göre düzenliyoruz. Bu SHIFT'e basmak ya da basılı tutmaktan farklıdır. new_shift_held = bool(vk & (1<<8)) if new_shift_held != shift_held: PressKey(new_shift_held, win32con.VK_SHIFT) shift_held = new_shift_held # Belirlenen tuşları yazdırıyor ve belirlenen kadar duraklatıyoruz. TypeKey(vk & 0xFF, keystroke_time) time.sleep(time_between_keystrokes) # Düzenlenen tuşları eğer basılı haldelerse bırakıyoruz if shift_held: PressKey(False, win32con.VK_SHIFT) if ctrl_held: PressKey(False, win32con.VK_CONTROL) if alt_held: PressKey(False, win32con.VK_MENU) if __name__ == "__main__": # Hadi bir test yapalım bakalım. # Çalıştırı açmak için Windows-R tuşuna basıyoruz PressKey(True, win32con.VK_LWIN) TypeKey(ord('R')) PressKey(False, win32con.VK_LWIN) # ekranın geldiğinden emin olmak için 1 saniye bekliyoruz time.sleep(1) # Çalıştır'dan wordpad'i çağırıyoruz TypeString("wordpadn") # Bir saniye daha bekleyip Yazmaya Başlıyoruz. time.sleep(1) TypeString("Bu keyboard.py modulünün testidir.nn") TypeString("Bu satırın üstünde ve altında boş satırlar olması gerekiyor.nn") TypeString("Bu satırlar [b]kalın yazı[b] , [i]italik yazı[i]" " ve normal yazı yazıp yazamadığımızı kontrol amaçlıdır..nn", use_modifiers=True) TypeString("Bu satır, kelimeler arasında geçerli bir süre aralıkla yazılmaktadır" " ve bittiğinde sonunda 3 saniyelik bir bekleme olacaktır." "3 saniyenin sonunda ise kayıt menüsü açılacak , dosyaya 'Deneme'" "adı verilecek, ve test sonlanacaktır." "ppp[s]Denemeppp", use_modifiers=True, keystroke_time=0.01, time_between_keystrokes=0.01)

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