Задать вопрос
Ответы пользователя по тегу Windows
  • Перехват web уведомлений которые приходят в Windows?

    @dim5x
    ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
    prerequisite: python 3.9 и winrt

    spoiler
    import asyncio
    from winrt.windows.ui.notifications.management import UserNotificationListener
    from winrt.windows.ui.notifications import KnownNotificationBindings
    
    async def notification_handler(listener, seen_notifications):
        print("Слушатель уведомлений запущен. Ожидание новых уведомлений...")
    
        # Бесконечно слушаем уведомления
        while True:
            try:
                # Получение всех текущих уведомлений
                notifications = await listener.get_notifications_async(0)
    
                for notification in notifications:
                    notification_id = notification.id  # Получаем уникальный ID уведомления
    
                    # Проверяем, было ли это уведомление уже обработано
                    if notification_id not in seen_notifications:
                        seen_notifications.add(notification_id)  # Добавляем ID в множество обработанных уведомлений
    
                        try:
                            # Получение информации об уведомлении
                            app_name = notification.app_info.display_info.display_name
                            binding = notification.notification.visual.get_binding(KnownNotificationBindings.get_toast_generic())
                            if binding:
                                text_elements = binding.get_text_elements()
                                title = text_elements[0].text if len(text_elements) > 0 else "Без заголовка"
                                body = text_elements[1].text if len(text_elements) > 1 else "Без текста"
                                print(f"Новое уведомление!")
                                print(f"Приложение: {app_name}")
                                print(f"Заголовок: {title}")
                                print(f"Текст: {body}")
                                print("-" * 50)
    
                               # Проверяем что ув. от нужного приложения и делаем всякое нужное с ним.
    
                        except Exception as e:
                            print(f"Ошибка при обработке уведомления: {e}")
    
                # Задержка перед следующим циклом
                await asyncio.sleep(1)
    
            except Exception as e:
                print(f"Ошибка при получении уведомлений: {e}")
                await asyncio.sleep(5)  # Задержка перед повторной попыткой в случае ошибки
    
    async def main():
        # Получение текущего слушателя уведомлений
        listener = UserNotificationListener.get_current()
    
        # Смотрим есть ли разрешение на доступ к уведомлениям. Если нет, лезем в настройки уведомлений.
        access_status = await listener.request_access_async()
        if access_status != 1:
            print("Нет разрешения на доступ к уведомлениям. Проверьте настройки конфиденциальности.")
            return
    
        seen_notifications = set()  # Множество для хранения ID уже обработанных уведомлений
        await notification_handler(listener, seen_notifications)
    
    if __name__ == "__main__":
        asyncio.run(main())

    67590b9765568892633574.png
    Ответ написан
    Комментировать
  • Где на самом деле лежит и как называется файл hosts в windows?

    @dim5x
    ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
    Битность программ не совпадает с виндой. 32-битный Notepad++ не видит папку etc, 64-битный - видит.

    Ваша фраза: "новые (относительно) ищет", видимо, говорит о том же.

    В 64-битной версии Windows папка C:\Windows\System32 содержит 64-битные файлы и библиотеки. Однако, если вы запускаете 32-битное приложение, такое как 32-битная версия Notepad++, Windows перенаправляет запросы к этой папке в C:\Windows\SysWOW64, где находятся 32-битные версии библиотек.
    Это означает, что 32-битное приложение не сможет увидеть или получить доступ к файлам в C:\Windows\System32, включая папку etc, если оно пытается открыть ее через стандартный интерфейс.
    Ответ написан
    3 комментария