Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Stay in Notification Center #32

Open
mrchaosbude opened this issue Mar 27, 2018 · 8 comments
Open

Stay in Notification Center #32

mrchaosbude opened this issue Mar 27, 2018 · 8 comments

Comments

@mrchaosbude
Copy link

mrchaosbude commented Mar 27, 2018

is possible that the notification will remain in the Notification Center ?

@ed-french
Copy link

I think it's precise name is "Windows Action Center" if that helps.

@SamuelYvon
Copy link

Also looking for this feature! There is a duration setting in the win API. I will make a pr within this week if there is no response.

@ghost
Copy link

ghost commented Jul 1, 2018

I tried to not call the DestroyWindow function to stay in the "Windows Action Center", it seems to be no problems.

@JuicyJuuce
Copy link

@jithurjacob Along the lines of what @usradd said, I think the best solution would be to change the code so that if you set duration=0 then the notification never closes.

@kurbanis
Copy link

kurbanis commented Dec 3, 2018

This has been requested in issue #15 with the intention of being implemented but would love to see this supported.

@umutinevi
Copy link

duration = None worked for me .

@Arsennnic
Copy link

Arsennnic commented Feb 21, 2020

Set "duration = None" is easy, but it will raise an error, and you will fail to call the function "show_toast()" again.
In fact, you can just comment line 153 in __init__.py, and the problem can be solved.
Function "on_destroy()" will be like:

    def on_destroy(self, hwnd, msg, wparam, lparam):
        """Clean after notification ended.

        :hwnd:
        :msg:
        :wparam:
        :lparam:
        """
        nid = (self.hwnd, 0)
        # Shell_NotifyIcon(NIM_DELETE, nid)
        PostQuitMessage(0)

        return None

Or you can overwrite the function "on_destroy()". For example,

from win10toast import ToastNotifier

class MyToastNotifier(ToastNotifier):

    def on_destroy(self, hwnd, msg, wparam, lparam):
        pass

toaster = MyToastNotifier()
toaster.show_toast("Test", "Hello world!", threaded=True)

@eugene-yang
Copy link

eugene-yang commented Mar 31, 2020

@Arsennnic Just try catch the exception will do the job as well :)

from win10toast import ToastNotifier

toaster = ToastNotifier()
try:
    toaster.show_toast("Test", "Hello world!", duration=None)
except TypeError:
    pass

Or simply let the thread die

toaster.show_toast("Test", "Hello world!", duration=None, threaded=True)

One question for people, taking this kind of approach means hijacking the line sleep(duration) and prevent DestroyWindow(self.hwnd) from executing.
But UnregisterClass(self.wc.lpszClassName, None) will also not executed as well. Is it going to raise any problem if the notification is not unregistered? Or does unregistering means removing it from that Action Center?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants