You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							37 lines
						
					
					
						
							1.3 KiB
						
					
					
				
			
		
		
	
	
							37 lines
						
					
					
						
							1.3 KiB
						
					
					
				import uiautomation as auto | 
						|
import time | 
						|
 | 
						|
def is_editable_focused(): | 
						|
    try: | 
						|
        focused = auto.GetFocusedControl() | 
						|
        if not focused: | 
						|
            return False | 
						|
 | 
						|
        # Проверяем тип элемента | 
						|
        control_type = focused.ControlType | 
						|
        # EditControl — это текстовое поле ввода в Windows UI Automation | 
						|
        if control_type == auto.ControlType.EditControl: | 
						|
            return True | 
						|
 | 
						|
        # Также можно проверить по классу (например, для браузеров) | 
						|
        class_name = focused.ClassName | 
						|
        # Например, Chrome использует класс 'Chrome_RenderWidgetHostHWND' | 
						|
        # Но это менее надёжно; лучше использовать UIA | 
						|
 | 
						|
        return False | 
						|
    except Exception as e: | 
						|
        print(f"Ошибка: {e}") | 
						|
        return False | 
						|
 | 
						|
def main(): | 
						|
    print("Отслеживание фокуса в текстовых полях...") | 
						|
    last_state = False | 
						|
    while True: | 
						|
        current_state = is_editable_focused() | 
						|
        if current_state and not last_state: | 
						|
            print("Текстовое поле получило фокус!") | 
						|
        last_state = current_state | 
						|
        time.sleep(0.5)  # Проверка 2 раза в секунду | 
						|
 | 
						|
if __name__ == "__main__": | 
						|
    main() |