如何使用win32api创建Toast通知(带按钮!)?

时间:2018-05-09 14:49:30

标签: python windows toast pywin32 win32gui

我一直在使用win10toast library(我正在尝试修改的 init 文件的链接)一段时间了,我有一个问题:

我如何使用win32gui,win32api,win32con libs修改模块以使用两个按钮like this进行Toast通知?

我一直在使用初始化代码,尝试在第83行附近添加一个孩子self.hwnd = CreateWindow(...),如下所示:

class ToastNotifier(object):

....

    style = WS_CLIPCHILDREN | WS_VISIBLE | WS_OVERLAPPED | WS_SYSMENU
            styleButton = WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON

            self.hwnd = CreateWindow(self.classAtom, "Taskbar", style,
                                     0, 0, CW_USEDEFAULT,
                                     CW_USEDEFAULT,
                                     0, 0, self.hinst, None)

           """ self.hwndButton = CreateWindow("Button", "OK", styleButton,
                                     0, 0, CW_USEDEFAULT,
                                     CW_USEDEFAULT,
                                     self.hwnd, None, 0, None)"""

            self.hwndButton = CreateWindow("Button",  # Predefined class; Unicode assumed
                                        "OK",      # Button text
                                        styleButton,  # Styles
                                        0,         #// x position
                                        0,         #// y position
                                        35,        #// Button width
                                        35,        #// Button height
                                        self.hwnd,     #// Parent window
                                        None,       #// No menu.
                                        0,
                                        None)

....

但它不起作用the way I want to'1','2' Toast通知应该有按钮OK,而不是在单独的窗口中显示。)

我联系了该模块的作者,他不知道该怎么做。我还在尝试学习python,我对 win32api 了解不多。有提示吗?谢谢!

1 个答案:

答案 0 :(得分:0)

这确实很旧,您可能已经解决了,但我很确定您的方向正确,我在python的win32gui库中进行了挖掘,当我查看参数时,第一个参数需要一个unicode文字字符串,而真正贴在我身上的词是说“假定的unicode”,我相信我们可以通过将其传递为一个unicode字符串文字,如下u"String"来避免这种假设。不知何故,我觉得这里的父母与子女的关系也会引起问题,当我发现更多问题时,该信息就会更新。

需要在逻辑上划分其主窗口的应用程序应 在主窗口的窗口过程中执行此操作,而不要使用 子窗口。

我不太了解如何实现此目标,但是我敢肯定有办法。