【问题标题】:How to detect windows action center events programatically?如何以编程方式检测 Windows 操作中心事件?
【发布时间】:2022-01-20 22:50:52
【问题描述】:

我在询问如何在 Python 中执行此操作之前发布过,但我不确定 python 是否有用于此的 API。

我正在尝试检测 Windows 操作中心事件。此 Python 代码会检测到一些事件,但不可靠且无法准确确定事件的类型:

h = win32evtlog.OpenEventLog(None, "System")
flags = win32evtlog.EVENTLOG_BACKWARDS_READ|win32evtlog.EVENTLOG_SEQUENTIAL_READ
for record in win32evtlog.ReadEventLog(h, flags, 0):
    if record.EventID == 10016:
        print("it's a google calendar event (or something similar)!")

但是,其他事件(例如 Chrome 中的 Google 聊天事件)似乎不会导致 Windows 系统事件,即使它们显示在操作中心中也是如此。

有没有办法以编程方式检测 Windows Action Center 事件,无论是 C/C++ 还是 Python(最好),甚至是像 C# 这样的 .NET 语言?

【问题讨论】:

    标签: .net winapi .net-core pywin32 event-log


    【解决方案1】:

    我想我可以使用监听器和listen for Toast notifications。但我意识到我实际上不希望依赖 .NET,所以我可能会尝试弄清楚如何在 C/C++ 或 Python 中做到这一点。

    编辑:在我用 C# 编写草稿后,我 converted it to Python here,但并非所有事件都显示出来。

    【讨论】:

    • 不依赖于 .NET 或 CLR。 Windows 运行时是一个本机平台。 Windows Runtime 十年过去了,微软仍未成功传达这一点。
    • 谢谢,这太好了......所以我更喜欢使用 Python,但现在我遇到了“UserNotificationListener is not activatable”。任何想法如何在 Python 中使用 VSCode 解决这个问题?在 Visual Studio 中,这将通过 stackoverflow.com/questions/47485447/… 解决
    • 甚至是一个示例 C# winrt 应用程序?我什至找不到任何示例……Windows 生态系统太糟糕了……我尝试创建一个 C# WPF 应用程序并将 Microsoft.Windows.CsWinRT 添加为 Nuget 依赖项,但它甚至没有正确安装。换句话说,我在 Visual Studio 中制作的任何 C# 应用程序都没有“使用 Windows.UI”作为有效包......即使在安装 Nuget 依赖项之后也是如此。我不做太多的 Windows 开发,但我不应该只是在配置文件中添加一个依赖行并称之为一天......这是什么?!
    • 尝试使用github.com/microsoft/CsWinRT/tree/master/src/Samples/…,但我得到“类型或名称“控件”在命名空间“Microsoft.UI.XAML”中不存在
    • 搞定了。除了答案github.com/microsoft/CsWinRT/tree/master/src/Samples/…stackoverflow.com/questions/62095140/…中的链接之外,还使用了这些
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-09
    相关资源
    最近更新 更多