Автор Тема: Использование центра уведомлений Windows 10  (Прочитано 234 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн musicstashall [?]

  • Новичок
  • *
  • Сообщений: 140
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Хочется реализовать демонстрацию сообщений в центре уведомлений виндовс. Если не ошибаюсь, это backgroundTaskHost (ну или не важно), сообщение от фоновых приложений остается висеть в «шторке», пока его пользователь не закроет, в нем можно прочитать короткую информацию, увидеть какое-то изображение и тп. Предложенный метод в следующей теме    
Получение уведомлений от Tray Tip
не совсем устраивает, без иконки в трее и в x64 битном исполнении не работает. На крайняк использовал бы его, если бы починили. И не хочется иконку использовать.

Русское сообщество AutoIt

Использование центра уведомлений Windows 10
« Отправлен: Апрель 21, 2017, 15:08:31 »

Оффлайн musicstashall [?]

  • Новичок
  • *
  • Сообщений: 140

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Использование центра уведомлений Windows 10
« Ответ #1, Отправлен: Апрель 21, 2017, 18:52:34 »
Нашел такое решение, вполне работоспособное и без внешних dll. Но это всё та же иконка в трее. Если кто знает, как скрыть иконку, оставляя работоспособными уведомления в трее, отпишитесь, плиз.
Код: AutoIt [Выделить]
#include <windowsconstants.au3>

Opt('TrayAutoPause', 0)
Opt('WinTitleMatchMode', 3)
Opt('WinWaitDelay', 0)
Opt('TrayMenuMode', 3)

Global Const $WM_TRAYNOTIFY = $WM_USER + 1
Global Const $NIN_BALLOONSHOW = $WM_USER + 2
Global Const $NIN_BALLOONHIDE = $WM_USER + 3
Global Const $NIN_BALLOONUSERCLICK = $WM_USER + 5
Global Const $NIN_BALLOONTIMEOUT = $WM_USER + 4
Global Const $subID = 1234
Global $iTip = 2
Global $psub = DllCallbackRegister("_subclass", "lresult", "hwnd;uint;wparam;lparam;uint_ptr;dword_ptr")
Global $hForm = GUICreate('')

DllCall("comctl32.dll", "bool", "SetWindowSubclass", "hwnd", WinGetHandle(AutoItWinGetTitle()), "ptr", DllCallbackGetPtr($psub), "uint_ptr", $subID, "dword_ptr", 0)

GUIRegisterMsg($WM_TRAYNOTIFY, 'WM_TRAYNOTIFY')

Global $iShow = TrayCreateItem("Show New Tip")
TrayCreateItem("")
Global $iExit = TrayCreateItem("Exit")

TrayTip('Tip', 'This is a tray tip, click here.', 10, 1)

While 1
    Switch TrayGetMsg()
        Case $iShow
            TrayTip('Tip', 'This is a tray tip, click here. [ ' & $iTip & ' ]', 10, 1)
            $iTip += 1
        Case $iExit
            ExitLoop
    EndSwitch
WEnd

DllCall("comctl32.dll", "bool", "RemoveWindowSubclass", "hwnd", WinGetHandle(AutoItWinGetTitle()), "ptr", DllCallbackGetPtr($psub), "uint_ptr", $subID)
DllCallbackFree($psub)

Func WM_TRAYNOTIFY($hWnd, $iMsg, $wParam, $lParam)
    Switch $hWnd
        Case $hForm
            Switch $lParam
                Case $NIN_BALLOONSHOW
                    ConsoleWrite('Balloon tip show.' & @CR)
                Case $NIN_BALLOONHIDE
                    ConsoleWrite('Balloon tip hide.' & @CR)
                Case $NIN_BALLOONUSERCLICK
                    ConsoleWrite('Balloon tip click.' & @CR)
                Case $NIN_BALLOONTIMEOUT
                    ConsoleWrite('Balloon tip close.' & @CR)
            EndSwitch
    EndSwitch
EndFunc   ;==>WM_TRAYNOTIFY

Func _subclass($hwnd, $uMsg, $wParam, $lParam, $uIdSubclass, $dwRefData)
    #forceref $hwnd, $uMsg, $wParam, $lParam, $uIdSubclass, $dwRefData
    Switch $uMsg
        Case $WM_TRAYNOTIFY
            Switch $uIdSubclass
                Case $subID
                    Switch $lParam
                        Case $NIN_BALLOONSHOW, $NIN_BALLOONHIDE, $NIN_BALLOONUSERCLICK, $NIN_BALLOONTIMEOUT
                            If $hForm Then
                                DllCall("user32.dll", "bool", "PostMessageW", "hwnd", $hForm, "uint", $uMsg, "wparam", $wParam, "lparam", $lParam)
                            EndIf
                    EndSwitch
            EndSwitch
    EndSwitch
    Local $ret = DllCall("comctl32.dll", "lresult", "DefSubclassProc", "hwnd", $hwnd, "uint", $uMsg, "wparam", $wParam, "lparam", $lParam)
    Return $ret[0]
EndFunc
 


Русское сообщество AutoIt

Re: Использование центра уведомлений Windows 10
« Ответ #1 Отправлен: Апрель 21, 2017, 18:52:34 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
1 Ответов
4268 Просмотров
Последний ответ Октябрь 12, 2009, 01:31:02
от CreatoR
4 Ответов
4832 Просмотров
Последний ответ Апрель 21, 2017, 10:47:24
от musicstashall
3 Ответов
2392 Просмотров
Последний ответ Август 30, 2012, 09:55:20
от CreatoR
18 Ответов
4393 Просмотров
Последний ответ Ноябрь 30, 2012, 14:53:02
от kasper_sky
5 Ответов
2625 Просмотров
Последний ответ Сентябрь 09, 2013, 12:25:25
от inververs
0 Ответов
675 Просмотров
Последний ответ Сентябрь 04, 2014, 13:01:20
от madmasles
7 Ответов
1860 Просмотров
Последний ответ Сентябрь 17, 2014, 14:35:05
от shas.1984
11 Ответов
2203 Просмотров
Последний ответ Февраль 02, 2015, 10:50:12
от madmasles
0 Ответов
436 Просмотров
Последний ответ Февраль 01, 2015, 14:59:51
от madmasles
1 Ответов
696 Просмотров
Последний ответ Март 18, 2015, 17:42:51
от madmasles