<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: TrayTip оставить уведомление]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=17512</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=17512&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: TrayTip оставить уведомление».]]></description>
		<lastBuildDate>Fri, 06 Jan 2023 06:58:50 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: TrayTip оставить уведомление]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=156195#p156195</link>
			<description><![CDATA[<p>Попробовал, MsgBox после клика не появляется.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Fri, 06 Jan 2023 06:58:50 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=156195#p156195</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: TrayTip оставить уведомление]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=156072#p156072</link>
			<description><![CDATA[<p>Попробуй.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Sun, 18 Dec 2022 20:32:02 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=156072#p156072</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: TrayTip оставить уведомление]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=156071#p156071</link>
			<description><![CDATA[<div class="quotebox"><cite>teadrinker пишет:</cite><blockquote><p>HKEY_CURRENT_USER\Software\Classes\AppUserModelId новый раздел {6D809377-6AF0-444B-8957-A3773F02200E}.</p></blockquote></div><p>Раздел такой есть, вариант по ссылке тоже MsgBox не выдаёт. Мне надо удалить в реестре и перезагрузится?</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Sun, 18 Dec 2022 20:13:03 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=156071#p156071</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: TrayTip оставить уведомление]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=156070#p156070</link>
			<description><![CDATA[<p>Только что проверил на всякий случай на Windows 10 последний скрипт, у меня работает. Перед проверкой удалял все ранее созданные ключи в реестре и перезагружался. Проверь, создался ли у тебя в ветке реестра <em>HKEY_CURRENT_USER\Software\Classes\AppUserModelId</em> новый раздел <em>{6D809377-6AF0-444B-8957-A3773F02200E}</em>. Посмотри, работает ли <a href="https://forum.script-coding.com/viewtopic.php?pid=156036#p156036">этот вариант</a>.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Sun, 18 Dec 2022 19:02:54 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=156070#p156070</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: TrayTip оставить уведомление]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=156069#p156069</link>
			<description><![CDATA[<div class="quotebox"><cite>teadrinker пишет:</cite><blockquote><p>Собрал, вроде работает:</p></blockquote></div><p>Я правильно понял что MsgBox, activated! должен быть при клике по уведомлению? У меня ничего не происходит.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Sun, 18 Dec 2022 18:08:59 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=156069#p156069</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: TrayTip оставить уведомление]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=156068#p156068</link>
			<description><![CDATA[<p>Ничего себе вы накопали!</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Sun, 18 Dec 2022 18:07:45 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=156068#p156068</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: TrayTip оставить уведомление]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=156062#p156062</link>
			<description><![CDATA[<p>Собрал, вроде работает:<br /></p><div class="codebox"><pre><code>appID := (A_Is64bitOS ? &quot;{6D809377-6AF0-444b-8957-A3773F02200E}&quot;
                      : &quot;{905E63B6-C1BF-494E-B29C-65B732D3D21A}&quot;) . &quot;\AutoHotkey\AutoHotkey.exe&quot;

; https://learn.microsoft.com/en-us/uwp/api/windows.ui.notifications.toasttemplatetype
template := toastImageAndText02 := 1

boldText := &quot;Hello, God!&quot;
regularText := &quot;This is a toast in AHK&quot;

imageFile := A_ScriptDir . &quot;\god.png&quot;
if !FileExist(imageFile)
   UrlDownloadToFile, https://i.imgur.com/GM0mf5w.png, % imageFile

F11::
   Toast := new ToastNotification(appID, template, [boldText, regularText], imageFile, Func(&quot;OnActivated&quot;))
   /*
   Sleep, 1000
   MsgBox, 4, % &quot; &quot;, Hide notification?
   IfMsgbox, Yes
      Toast.Hide()
   */
Return

OnActivated() {
   MsgBox, activated!
}

class ToastNotification
{
; windows.data.xml.dom.h
; windows.ui.notifications.h
   __New(appID, template, textArr, imageFile := &quot;&quot;, userFunc := &quot;&quot;) {
      if (A_OSVersion ~= &quot;^\D&quot;) {
         MsgBox, 48, Class ToastNotification, This class requires Windows 10 or later!
         Return &quot;&quot;
      }
      ToastNotificationManager := this._CreateToastNotificationManager()
      XmlDocument := ToastNotificationManager.GetTemplateContent(template)
      this._SetText(textArr, XmlDocument)
      (imageFile &amp;&amp; this._SetImage(imageFile, XmlDocument))
      WrtStr := new WrtString(appID)
      this.ToastNotifier := ToastNotificationManager.CreateToastNotifierWithId(WrtStr.HSTRING)
      this.ToastNotification := this._CreateToastNotification(XmlDocument)
      if (userFunc &amp;&amp; !ToastNotification.ActivationCallbackCreated) {
         CreateNotificationActivationCallback(appID, userFunc)
         ToastNotification.ActivationCallbackCreated := true
      }
      this.ToastNotifier.Show(this.ToastNotification.ptr)
   }
   
   Hide() {
      this.ToastNotifier.Hide(this.ToastNotification.ptr)
   }
   
   _CreateToastNotificationManager() {
      static IID_IToastNotificationManagerStatics := &quot;{50AC103F-D235-4598-BBEF-98FE4D1A3AD4}&quot;
      WrtStr := new WrtString(&quot;Windows.UI.Notifications.ToastNotificationManager&quot;)
      WrtStr.GetFactory(CLSIDFromString(IID_IToastNotificationManagerStatics, _), pIToastNotificationManagerStatics)
      Return new IToastNotificationManagerStatics(pIToastNotificationManagerStatics)
   }
   
   _SetText(textArr, XmlDocument) {
      static IID_IXmlNodeSerializer := &quot;{5CC5B382-E6DD-4991-ABEF-06D8D2E7BD0C}&quot;
      XmlNodeList := XmlDocument.GetElementsByTagName((new WrtString(&quot;text&quot;)).HSTRING)
      Loop % XmlNodeList.get_Length() {
         XmlNode := XmlNodeList.Item(A_Index - 1)
         pXmlNodeSerializer := ComObjQuery(XmlNode.ptr, IID_IXmlNodeSerializer)
         XmlNodeSerializer := new IXmlNodeSerializer(pXmlNodeSerializer)
         XmlNodeSerializer.put_InnerText((new WrtString(textArr[A_Index])).HSTRING)
      }
   }
   
   _SetImage(image, XmlDocument) {
      static IID_IXmlElement := &quot;{2DFB8A1F-6B10-4EF8-9F83-EFCCE8FAEC37}&quot;
      XmlNodeList := XmlDocument.GetElementsByTagName((new WrtString(&quot;image&quot;)).HSTRING)
      XmlNode := XmlNodeList.Item(0)
      pIXmlElement := ComObjQuery(XmlNode.ptr, IID_IXmlElement)
      XmlElement := new IXmlElement(pIXmlElement)
      WrtStr := new WrtString(image)
      XmlElement.SetAttribute((new WrtString(&quot;src&quot;)).HSTRING, WrtStr.HSTRING)
   }
   
   _CreateToastNotification(XmlDocument) {
      static IID_IToastNotificationFactory := &quot;{04124B20-82C6-4229-B109-FD9ED4662B53}&quot;
      WrtStr := new WrtString(&quot;Windows.UI.Notifications.ToastNotification&quot;)
      WrtStr.GetFactory(CLSIDFromString(IID_IToastNotificationFactory, _), pIToastNotificationFactory)
      ToastNotificationFactory := new IToastNotificationFactory(pIToastNotificationFactory)
      Return ToastNotificationFactory.CreateToastNotification(XmlDocument.ptr)
   }
}

class IToastNotificationManagerStatics extends InterfaceBase {
   CreateToastNotifierWithId(hString_appID) {
      hr := DllCall(this.VTable(7), &quot;Ptr&quot;, this.ptr, &quot;Ptr&quot;, hString_appID, &quot;PtrP&quot;, pIToastNotifier)
      this.IsError(A_ThisFunc, hr)
      Return new IToastNotifier(pIToastNotifier)
   }
   GetTemplateContent(ToastTemplateType) {
      hr := DllCall(this.VTable(8), &quot;Ptr&quot;, this.ptr, &quot;Int&quot;, ToastTemplateType, &quot;PtrP&quot;, pIXmlDocument)
      this.IsError(A_ThisFunc, hr)
      Return new IXmlDocument(pIXmlDocument)
   }
}

class IXmlDocument extends InterfaceBase {
   GetElementsByTagName(hString_tagName) {
      hr := DllCall(this.VTable(16), &quot;Ptr&quot;, this.ptr, &quot;Ptr&quot;, hString_tagName, &quot;PtrP&quot;, pIXmlNodeList)
      this.IsError(A_ThisFunc, hr)
      Return new IXmlNodeList(pIXmlNodeList)
   }
}

class IXmlNodeList extends InterfaceBase {
   get_Length() {
      hr := DllCall(this.VTable(6), &quot;Ptr&quot;, this.ptr, &quot;UIntP&quot;, length)
      this.IsError(A_ThisFunc, hr)
      Return length
   }
   Item(index) {
      hr := DllCall(this.VTable(7), &quot;Ptr&quot;, this.ptr, &quot;UInt&quot;, index, &quot;PtrP&quot;, pIXmlNode)
      this.IsError(A_ThisFunc, hr)
      Return new IXmlNode(pIXmlNode)
   }
}

class IXmlNode extends InterfaceBase {
}

class IXmlNodeSerializer extends InterfaceBase {
   put_InnerText(hString_innerText) {
      hr := DllCall(this.VTable(8), &quot;Ptr&quot;, this.ptr, &quot;Ptr&quot;, hString_innerText)
      this.IsError(A_ThisFunc, hr)
   }
}

class IXmlElement extends InterfaceBase {
   SetAttribute(hString_attributeName, hString_attributeValue) {
      hr := DllCall(this.VTable(8), &quot;Ptr&quot;, this.ptr, &quot;Ptr&quot;, hString_attributeName, &quot;Ptr&quot;, hString_attributeValue)
      this.IsError(A_ThisFunc, hr)
   }
}

class IToastNotifier extends InterfaceBase {
   Show(pIToastNotification) {
      hr := DllCall(this.VTable(6), &quot;Ptr&quot;, this.ptr, &quot;Ptr&quot;, pIToastNotification)
      this.IsError(A_ThisFunc, hr)
   }
   Hide(pIToastNotification) {
      hr := DllCall(this.VTable(7), &quot;Ptr&quot;, this.ptr, &quot;Ptr&quot;, pIToastNotification)
      this.IsError(A_ThisFunc, hr)
   }
}

class IToastNotificationFactory extends InterfaceBase {
   CreateToastNotification(pIXmlDocument) {
      hr := DllCall(this.VTable(6), &quot;Ptr&quot;, this.ptr, &quot;Ptr&quot;, pIXmlDocument, &quot;PtrP&quot;, pIToastNotification)
      this.IsError(A_ThisFunc, hr)
      Return new IToastNotification(pIToastNotification)
   }
}

class IToastNotification extends InterfaceBase {
}

class InterfaceBase {
   __New(ptr) {
      this.ptr := ptr
   }
   __Delete() {
      ObjRelease(this.ptr)
   }
   VTable(idx) {
      Return NumGet(NumGet(this.ptr + 0) + A_PtrSize*idx)
   }
   IsError(method, result, exc := true) {
      if (result = 0)
         Return 0
      error := StrReplace(method, &quot;.&quot;, &quot;::&quot;) . &quot; failed.`nResult: &quot;
                              . ( result = &quot;&quot; ? &quot;No result&quot; : SysError(Format(&quot;{:#x}&quot;, result &amp; 0xFFFFFFFF)) )
                              . &quot;`nErrorLevel: &quot; . ErrorLevel
      if !exc
         Return error
      throw error
   }
}

class WrtString {
   __New(string, isHandle := false) {
      if isHandle
         this.HSTRING := string
      else {
         DllCall(&quot;Combase\WindowsCreateString&quot;, &quot;WStr&quot;, string, &quot;UInt&quot;, StrLen(string), &quot;PtrP&quot;, HSTRING)
         this.HSTRING := HSTRING
      }
   }
   __Delete() {
      DllCall(&quot;Combase\WindowsDeleteString&quot;, &quot;Ptr&quot;, this.HSTRING)
   }
   GetText() {
      pBuff := DllCall(&quot;Combase\WindowsGetStringRawBuffer&quot;, &quot;Ptr&quot;, this.HSTRING, &quot;UIntP&quot;, len, &quot;Ptr&quot;)
      Return StrGet(pBuff, len, &quot;UTF-16&quot;)
   }
   GetFactory(riid, ByRef pInterface) {
      hr := DllCall(&quot;Combase\RoGetActivationFactory&quot;, &quot;Ptr&quot;, this.HSTRING, &quot;Ptr&quot;, riid, &quot;PtrP&quot;, pInterface)
      if (hr != 0)
         throw SysError(hr)
   }
}

class INotificationActivationCallback {
   Implement(UserFunc) {
      static MethodList := [ {name: &quot;QueryInterface&quot;, paramCount: 3}
                           , {name: &quot;AddRef&quot;        , paramCount: 1}
                           , {name: &quot;Release&quot;       , paramCount: 1}
                           , {name: &quot;Activate&quot;      , paramCount: 5} ]

      this.SetCapacity(&quot;vtable&quot;, MethodList.Count()*A_PtrSize)
      pVtable := this.GetAddress(&quot;vtable&quot;)
      this.SetCapacity(&quot;IUnknown&quot;, A_PtrSize)
      NumPut(pVtable, this.pIUnknown := this.GetAddress(&quot;IUnknown&quot;))
      this.Methods.UserFunc := UserFunc
      this.Callbacks := []
      for k, method in MethodList {
         Callback := new BoundFuncCallback( ObjBindMethod(this.Methods, method.name), method.paramCount, &quot;Fast&quot; )
         NumPut(Callback.addr, pVtable + A_PtrSize*(k - 1))
         this.Callbacks.Push(Callback)
      }
   }
   
   __Delete() {
      this.Delete(&quot;Callbacks&quot;)
      this.SetCapacity(&quot;vtable&quot;, 0)
      this.Delete(&quot;vtable&quot;)
   }
   
   class Methods {
      QueryInterface(pINotificationActivationCallback, riid, ppvObject) {
         static IID_IUnknown                        := &quot;{00000000-0000-0000-C000-000000000046}&quot;
              , IID_IClassFactory                   := &quot;{00000001-0000-0000-C000-000000000046}&quot;
              , IID_INotificationActivationCallback := &quot;{53E31837-6600-4A81-9395-75CFFE746F94}&quot;
              , E_NOINTERFACE := 0x80004002, S_OK := 0, _, __, ___
              , p1 := CLSIDFromString(IID_IUnknown                       ,   _)
              , p2 := CLSIDFromString(IID_INotificationActivationCallback,  __)
              , p3 := CLSIDFromString(IID_IClassFactory                  , ___)
              
         hResult := S_OK 
         if DllCall(&quot;Ole32\IsEqualGUID&quot;, &quot;Ptr&quot;, riid, &quot;Ptr&quot;, p1) || DllCall(&quot;Ole32\IsEqualGUID&quot;, &quot;Ptr&quot;, riid, &quot;Ptr&quot;, p2)
            NumPut(pINotificationActivationCallback, ppvObject + 0)
         else if DllCall(&quot;Ole32\IsEqualGUID&quot;, &quot;Ptr&quot;, riid, &quot;Ptr&quot;, p3)
            NumPut(this.pIClassFactory, ppvObject + 0)
         else
         { ; if riid doesn&#039;t match IID_IUnknown nor IID_INotificationActivationCallback nor IID_IClassFactory
            NumPut(0, ppvObject + 0)
            hResult := E_NOINTERFACE
         }
         Return hResult
      }
      
      AddRef(pINotificationActivationCallback) {
         Return E_NOTIMPL := 0x80004001
      }
      
      Release(pINotificationActivationCallback) {
         Return E_NOTIMPL := 0x80004001
      }
   
      Activate(pINotificationActivationCallback, appUserModelId, invokedArgs, pData, count) {
         timer := this.UserFunc
         SetTimer, % timer, -10
      }
   }
}

class IClassFactory
{
   Implement(pUnkOuter) {
      static MethodList := [ {name: &quot;QueryInterface&quot;, paramCount: 3}
                           , {name: &quot;AddRef&quot;        , paramCount: 1}
                           , {name: &quot;Release&quot;       , paramCount: 1}
                           , {name: &quot;CreateInstance&quot;, paramCount: 4}
                           , {name: &quot;LockServer&quot;    , paramCount: 2} ]

      this.SetCapacity(&quot;vtable&quot;, MethodList.Count()*A_PtrSize)
      pVtable := this.GetAddress(&quot;vtable&quot;)
      this.SetCapacity(&quot;IUnknown&quot;, A_PtrSize)
      NumPut(pVtable, this.pIUnknown := this.GetAddress(&quot;IUnknown&quot;))
      
      this.Methods.pUnkOuter := pUnkOuter
      this.Callbacks := []
      for k, method in MethodList {
         Callback := new BoundFuncCallback( ObjBindMethod(this.Methods, method.name), method.paramCount, &quot;Fast&quot; )
         NumPut(Callback.addr, pVtable + A_PtrSize*(k - 1))
         this.Callbacks.Push(Callback)
      }
   }
   
   __Delete() {
      this.Delete(&quot;Callbacks&quot;)
      this.SetCapacity(&quot;vtable&quot;, 0)
      this.Delete(&quot;vtable&quot;)
   }
   
   class Methods {
      QueryInterface(pIClassFactory, riid, ppvObject) {
         Return E_NOTIMPL := 0x80004001
      }
      
      AddRef(pIClassFactory) {
         Return E_NOTIMPL := 0x80004001
      }
      
      Release(pIClassFactory) {
         Return E_NOTIMPL := 0x80004001
      }
   
      CreateInstance(pIClassFactory, pUnkOuter, riid, ppvObject) {
         NumPut(this.pUnkOuter, ppvObject + 0)
         Return S_OK := 0
      }
      
      LockServer(pIClassFactory, fLock) {
         Return E_NOTIMPL := 0x80004001
      }
   }
}

class BoundFuncCallback
{
   __New(BoundFuncObj, paramCount, options := &quot;&quot;) {
      this.pInfo := Object( {BoundObj: BoundFuncObj, paramCount: paramCount} )
      this.addr := RegisterCallback(this.__Class . &quot;._Callback&quot;, options, paramCount, this.pInfo)
   }
   __Delete() {
      ObjRelease(this.pInfo)
      DllCall(&quot;GlobalFree&quot;, &quot;Ptr&quot;, this.addr, &quot;Ptr&quot;)
   }
   _Callback(Params*) {
      Info := Object(A_EventInfo), Args := []
      Loop % Info.paramCount
         Args.Push( NumGet(Params + A_PtrSize*(A_Index - 2)) )
      Return Info.BoundObj.Call(Args*)
   }
}

CreateNotificationActivationCallback(appID, userFunc) {
   static CLSCTX_LOCAL_SERVER := 4, REGCLS_MULTIPLEUSE := 1
        , CustomActivator := &quot;{A5A8F02C-A117-47FF-8A91-2DBEC37A645B}&quot;
        
   regKey := &quot;HKCU\Software\Classes\AppUserModelId\&quot; . appID
   RegRead, guid, % regKey, CustomActivator
   if (guid != CustomActivator)
      RegWrite, REG_SZ, % regKey, CustomActivator, % CustomActivator
   
   INotificationActivationCallback.Implement(userFunc)
   IClassFactory.Implement(INotificationActivationCallback.pIUnknown)
   INotificationActivationCallback.Methods.pIClassFactory := IClassFactory.pIUnknown
   
   DllCall(&quot;Ole32\CoRegisterClassObject&quot;, &quot;Ptr&quot;, CLSIDFromString(CustomActivator, _)
                                        , &quot;Ptr&quot;, INotificationActivationCallback.pIUnknown
                                        , &quot;UInt&quot;, CLSCTX_LOCAL_SERVER, &quot;UInt&quot;, REGCLS_MULTIPLEUSE, &quot;UIntP&quot;, Register)
   OnExit(Func(&quot;RevokeClassObject&quot;).Bind(Register))
}

RevokeClassObject(Register) {
   DllCall(&quot;Ole32\CoRevokeClassObject&quot;, &quot;UInt&quot;, Register)
}

CLSIDFromString(IID, ByRef CLSID) {
   VarSetCapacity(CLSID, 16, 0)
   if res := DllCall(&quot;ole32\CLSIDFromString&quot;, &quot;WStr&quot;, IID, &quot;Ptr&quot;, &amp;CLSID, &quot;UInt&quot;)
      throw Exception(&quot;CLSIDFromString failed. Error: &quot; . Format(&quot;{:#x}&quot;, res))
   Return &amp;CLSID
}

SysError(errorNum = &quot;&quot;) {
   static flags := (FORMAT_MESSAGE_ALLOCATE_BUFFER := 0x100) | (FORMAT_MESSAGE_FROM_SYSTEM := 0x1000)
   (errorNum = &quot;&quot; &amp;&amp; errorNum := A_LastError)
   DllCall(&quot;FormatMessage&quot;, &quot;UInt&quot;, flags, &quot;UInt&quot;, 0, &quot;UInt&quot;, errorNum, &quot;UInt&quot;, 0, &quot;PtrP&quot;, pBuff, &quot;UInt&quot;, 512, &quot;Str&quot;, &quot;&quot;)
   Return (str := StrGet(pBuff)) ? str : ErrorNum
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Sat, 17 Dec 2022 17:26:19 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=156062#p156062</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: TrayTip оставить уведомление]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=156056#p156056</link>
			<description><![CDATA[<p>Идея &quot;сокращённой&quot; реализации интерфейсов, конечно, прикольная. Но я, наверно, всё же расшифрую.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Sat, 17 Dec 2022 01:25:55 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=156056#p156056</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: TrayTip оставить уведомление]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=156055#p156055</link>
			<description><![CDATA[<p>Да, я тоже заметил.<br />Но там, где я скрипт взял, автор прописал (хотя там тоже не вызывается):<br /><a href="https://www.autohotkey.com/board/topic/23467-dde-server-for-single-instance-file-association-std-lib/page-4#entry154605">https://www.autohotkey.com/board/topic/ … ntry154605</a></p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Sat, 17 Dec 2022 01:15:50 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=156055#p156055</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: TrayTip оставить уведомление]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=156054#p156054</link>
			<description><![CDATA[<p>Теперь всё заработало, чудеса! Наверно, какой-то глюк был.<br /></p><div class="quotebox"><cite>Malcev пишет:</cite><blockquote><div class="codebox"><pre><code>IClassFactory(this, punk=&quot;&quot;, riid=&quot;&quot;, ppobj=&quot;&quot;)
{
   hResult := 0
   if (A_EventInfo = 3)
      NumPut(NumGet(this+A_PtrSize*6), ppobj+0)
   else if (A_EventInfo = 0)
      hResult := DllCall(NumGet(NumGet(this+A_PtrSize*6)+A_PtrSize), &quot;ptr&quot;, NumGet(this+A_PtrSize*6), &quot;ptr&quot;, punk, &quot;ptr&quot;, riid)
   return hResult
}</code></pre></div></blockquote></div><p>А вот это<br /></p><div class="codebox"><pre><code> else if (A_EventInfo = 0)
      hResult := DllCall(NumGet(NumGet(this+A_PtrSize*6)+A_PtrSize), &quot;ptr&quot;, NumGet(this+A_PtrSize*6), &quot;ptr&quot;, punk, &quot;ptr&quot;, riid)</code></pre></div><p>вроде не используется?</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Fri, 16 Dec 2022 23:17:50 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=156054#p156054</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: TrayTip оставить уведомление]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=156053#p156053</link>
			<description><![CDATA[<p>Заменил на обычный одноуровневый ключ — работает без проблем, но appID не отображается. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> Пробовал заменить обратные слеши на прямые.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Fri, 16 Dec 2022 21:45:32 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=156053#p156053</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: TrayTip оставить уведомление]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=156052#p156052</link>
			<description><![CDATA[<p>Вроде, когда от админа писалось, тогда работало нормально. Но может, просто не успел поймать.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Fri, 16 Dec 2022 20:04:08 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=156052#p156052</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: TrayTip оставить уведомление]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=156051#p156051</link>
			<description><![CDATA[<p>Из 6 поста так же не показывает всплывающее уведомление, только в панели уведомлений появляется. Вроде было, что один раз сработал, но когда не сработал, то уже и не работает дальше.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Fri, 16 Dec 2022 20:00:55 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=156051#p156051</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: TrayTip оставить уведомление]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=156050#p156050</link>
			<description><![CDATA[<p>Просто, если бы была проблема в реестре, то, наверное, вообще бы не работало, а не время от времени.</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Fri, 16 Dec 2022 19:57:56 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=156050#p156050</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: TrayTip оставить уведомление]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=156049#p156049</link>
			<description><![CDATA[<p>А если есть запись в реестре, то код из 6 поста тоже не срабатывает?</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Fri, 16 Dec 2022 19:56:50 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=156049#p156049</guid>
		</item>
	</channel>
</rss>
