<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Использование сервера как генератора событий на локальном скрипте]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=13978&amp;type=atom" />
	<updated>2018-07-29T02:02:44Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=13978</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Использование сервера как генератора событий на локальном скрипте]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=127532#p127532" />
			<content type="html"><![CDATA[<p>Я думаю что для каждого из клиентов будет выделен определенный диапазон строк в файлике, либо даже каждому из клиентов по отдельному файлику и один файлик для всех сразу, чтобы гугл не злился насчёт 30 обращений в файл каждые 5 сек.</p>]]></content>
			<author>
				<name><![CDATA[Belo4kaVspishka]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=39407</uri>
			</author>
			<updated>2018-07-29T02:02:44Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=127532#p127532</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Использование сервера как генератора событий на локальном скрипте]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=127514#p127514" />
			<content type="html"><![CDATA[<p>Вам в любом случае нужно идентифицировать каждый клиент, если в задаче поставлено условие выбирать конкретную цель:<br /></p><div class="quotebox"><cite>Belo4kaVspishka пишет:</cite><blockquote><p>... ведь запросы могут быть адресованы одному клиенту тз десяти ...</p></blockquote></div><p>А для этого необходимо знать, конкретно кому = &quot;одному из&quot;.</p>]]></content>
			<author>
				<name><![CDATA[KusochekDobra]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33846</uri>
			</author>
			<updated>2018-07-28T14:51:03Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=127514#p127514</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Использование сервера как генератора событий на локальном скрипте]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=127512#p127512" />
			<content type="html"><![CDATA[<p>Я связываю 4 компьютера через гитхаб.<br />Правда, как-то дзайн поменяли - пришлось чутка переделывать.<br />Капчу ни разу не вставляли, правда аккаунт помечен как flagged.<br /><a href="http://forum.script-coding.com/viewtopic.php?pid=121824#p121824">http://forum.script-coding.com/viewtopi … 24#p121824</a></p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2018-07-28T13:37:34Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=127512#p127512</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Использование сервера как генератора событий на локальном скрипте]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=127511#p127511" />
			<content type="html"><![CDATA[<p>Хм... интересная задумка. Возможно это сработает. Придется правда еще прикрутить способ идентификации того, кто отправил запрос, но думаю ничего сложного. Спасибо.</p>]]></content>
			<author>
				<name><![CDATA[Belo4kaVspishka]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=39407</uri>
			</author>
			<updated>2018-07-28T13:30:29Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=127511#p127511</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Использование сервера как генератора событий на локальном скрипте]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=127510#p127510" />
			<content type="html"><![CDATA[<p>Так а в чём проблема с &quot;файликом&quot;?<br />Пишете в него задачу с ID для каждого идентификатора-клиента.<br />Любой клиент скачивает этот файл, находит в нём свой идентификатор и сравнивает текущий ID задачи с выполненным. Если текущий больше предыдущего, задача выполняется, а ID сохраняется.<br />Качаете клиентом этот файлик по КД. И ничего не происходит пока ID задачи не поменяется.</p>]]></content>
			<author>
				<name><![CDATA[KusochekDobra]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33846</uri>
			</author>
			<updated>2018-07-28T12:56:29Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=127510#p127510</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Использование сервера как генератора событий на локальном скрипте]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=127509#p127509" />
			<content type="html"><![CDATA[<p>Просто набросал примерный, простой алгоритм, как бы я реализовал, если бы использовал связку AHK - PHP. У меня так через Telegram сделана коммутация. Довольно удобно. И думаю, он будет ещё довольно долго на рынке из подобных предложений. Как минимум, пока кабеля трансатлантические не порежут какие-нибудь негодяи-хулиганы.</p><p>И верно, что чем система проще, тем меньше у неё шансов сломаться. А файлик можно просто по FTP обновлять на сервере и не использовать никакие скрипты.</p>]]></content>
			<author>
				<name><![CDATA[KusochekDobra]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33846</uri>
			</author>
			<updated>2018-07-28T12:48:57Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=127509#p127509</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Использование сервера как генератора событий на локальном скрипте]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=127508#p127508" />
			<content type="html"><![CDATA[<p>Так то вы правы, двустороняя связь между сервером и скриптом не нужна. Нужна связь между несколькими клиентами, а сервер как посредник выглядит хорошо. Телеграм пока не имею возможности испытать, вариант с файлом не прокатит (ибо давно бы гугл апс скрипт использовал бы) ведь запросы могут быть адресованы одному клиенту тз десяти, а все будут их принимать... Испытав пуши на практике я понял что это один из вариантов вроде как, но как мге прочитать пуш...</p>]]></content>
			<author>
				<name><![CDATA[Belo4kaVspishka]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=39407</uri>
			</author>
			<updated>2018-07-28T12:47:46Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=127508#p127508</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Использование сервера как генератора событий на локальном скрипте]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=127507#p127507" />
			<content type="html"><![CDATA[<p>Я просто подумал, всякие там Telegram сегодня есть, а завтра нету. И вроде как не требовалась двусторонняя связь: сервер отдаёт команды, а клиент ничего не должен отвечать.</p>]]></content>
			<author>
				<name><![CDATA[ypppu]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=5974</uri>
			</author>
			<updated>2018-07-28T12:35:38Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=127507#p127507</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Использование сервера как генератора событий на локальном скрипте]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=127504#p127504" />
			<content type="html"><![CDATA[<p>И чем Ваш подход проще и быстрее, чем тот же хорошо документированный API Telegram?</p><p>Или действительно, организуйте на хостинге сценарий, которому будете отправлять в &quot;POST&quot; командные параметры, он их там положит в БД до востребования с ID команды, а клиентский, &quot;POST&quot;-ом&nbsp; будет его получать, сообщая в запросе свой идентификатор. Обработанные таким образом запросы переносите в подтверждённые, превращая в лог событий, освобождая, или обновляя БД для новых заданий. Лог, кстати можно так же отправлять командному сценарию ответом на &quot;POST&quot;, с его командами, таким образом можно всегда быть в курсе, что твориться &quot;на другом конце провода&quot;.</p><p>Если дружите с PHP, можете так же организовать какой-нибудь примитивный WebSocket и стримить задачи подключенным клиентам.</p><p>Можно через TCP организовать обработку, если у Вас есть выделенный IP.</p><p>Все эти, да и наверняка и другие возможности описаны в интернетах и так же, местами, обсуждались на страницах этого форума.</p>]]></content>
			<author>
				<name><![CDATA[KusochekDobra]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33846</uri>
			</author>
			<updated>2018-07-28T12:01:27Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=127504#p127504</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Использование сервера как генератора событий на локальном скрипте]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=127502#p127502" />
			<content type="html"><![CDATA[<p>Я думал просто &quot;клиентский&quot; скрипт будет командой UrlDownloadToFile периодически скачивать файлик с бесплатного хостинга и анализировать его. Ну а &quot;серверный&quot; скрипт будет время от времени редактировать файлик.</p>]]></content>
			<author>
				<name><![CDATA[ypppu]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=5974</uri>
			</author>
			<updated>2018-07-28T11:02:09Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=127502#p127502</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Использование сервера как генератора событий на локальном скрипте]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=127488#p127488" />
			<content type="html"><![CDATA[<p>Пытаюсь пробить память процесса.&nbsp; К сожалению, эта часть скриптинга у меня самая слабая, потому я почти что беспомощный здесь. Нашел функции для чтения памяти и даже строки из памяти, прикрепляю их к сообщению.<br /></p><div class="codebox"><pre><code>Global PROCESS_ALL_ACCESS        := 0x001F0FFF
Global PROCESS_VM_READ           := 0x10
Global PROCESS_QUERY_INFORMATION := 0x400

Global TOKEN_ALL_ACCESS        := 0xF01FF
Global TOKEN_QUERY             := 0x8
Global TOKEN_ADJUST_PRIVILEGES := 0x20

Global SE_PRIVILEGE_ENABLED := 2

Global PAGE_READWRITE         := 0x04
Global PAGE_EXECUTE_READWRITE := 0x40

Global TH32CS_SNAPMODULE := 0x00000008

Global INVALID_HANDLE_VALUE := -1

Global MODULEENTRY32_SIZE := 548

Global MODULEENTRY32_modBaseAddr := 20

Global MODULEENTRY32_hModule := 29

Global MODULEENTRY32_szModule := 32

Memory_GetProcessID(process_name)
{
    Process, Exist, %process_name%
    process_id = %ErrorLevel%

    Return, process_id
}

Memory_GetProcessHandle(process_id)
{
    process_handle := DllCall(&quot;OpenProcess&quot;, &quot;UInt&quot;, 0x001F0FFF, &quot;Int&quot;, false, &quot;UInt&quot;, process_id, &quot;Ptr&quot;) ; PROCESS_ALL_ACCESS

    Return, process_handle
}

Memory_GetModuleBase(process_id, module_name)
{
    snapshot_handle := DllCall(&quot;CreateToolhelp32Snapshot&quot;, &quot;UInt&quot;, 0x00000008, &quot;UInt&quot;, process_id) ; TH32CS_SNAPMODULE

    If (snapshot_handle = INVALID_HANDLE_VALUE)
    {
        Return, False
    }

    VarSetCapacity(me32, 548, 0) ; MODULEENTRY32_SIZE

    NumPut(548, me32) ; MODULEENTRY32_SIZE

    If (DllCall(&quot;Module32First&quot;, &quot;UInt&quot;, snapshot_handle, &quot;UInt&quot;, &amp;me32))
    {
        While (DllCall(&quot;Module32Next&quot;, &quot;UInt&quot;, snapshot_handle, &quot;UInt&quot;, &amp;me32))
        {
            If (module_name == StrGet(&amp;me32 + 32, 256, &quot;CP0&quot;)) ; MODULEENTRY32_szModule
            ;If (DllCall(&quot;lstrcmpi&quot;, &quot;Str&quot;, module_name, &quot;UInt&quot;, &amp;me32 + 32) = -1)
            {
                DllCall(&quot;CloseHandle&quot;, &quot;UInt&quot;, snapshot_handle)

                Return, NumGet(&amp;me32, 20) ; MODULEENTRY32_modBaseAddr
            }
        }
    }

    DllCall(&quot;CloseHandle&quot;, &quot;UInt&quot;, snapshot_handle)

    Return, False
}

Memory_CloseHandle(process_handle)
{
    DllCall(&quot;CloseHandle&quot;, &quot;Ptr&quot;, process_handle)
}

Memory_Read(process_handle, address)
{
    VarSetCapacity(value, 4, 0)
    DllCall(&quot;ReadProcessMemory&quot;, &quot;UInt&quot;, process_handle, &quot;UInt&quot;, address, &quot;Str&quot;, value, &quot;UInt&quot;, 4, &quot;UInt *&quot;, 0)

    Return, NumGet(value, 0, &quot;UInt&quot;)

    ;Return, *(&amp;value + 3) &lt;&lt; 24 | *(&amp;value + 2) &lt;&lt; 16 | *(&amp;value + 1) &lt;&lt; 8 | *(&amp;value)
}

Memory_ReadEx(process_handle, address, size)
{
    VarSetCapacity(value, size, 0)
    DllCall(&quot;ReadProcessMemory&quot;, &quot;UInt&quot;, process_handle, &quot;UInt&quot;, address, &quot;Str&quot;, value, &quot;UInt&quot;, size, &quot;UInt *&quot;, 0)

    Return, NumGet(value, 0, &quot;UInt&quot;)
}

Memory_ReadFloat(process_handle, address)
{
    VarSetCapacity(value, 4, 0)
    DllCall(&quot;ReadProcessMemory&quot;, &quot;UInt&quot;, process_handle, &quot;UInt&quot;, address, &quot;Str&quot;, value, &quot;UInt&quot;, 4, &quot;UInt *&quot;, 0)

    Return, NumGet(value, 0, &quot;Float&quot;)
}

Memory_ReadReverse(process_handle, address)
{
    VarSetCapacity(value, 4, 0)
    DllCall(&quot;ReadProcessMemory&quot;, &quot;UInt&quot;, process_handle, &quot;UInt&quot;, address, &quot;Str&quot;, value, &quot;UInt&quot;, 4, &quot;UInt *&quot;, 0)

    Return, *(&amp;value + 3) | *(&amp;value + 2) &lt;&lt; 8 | *(&amp;value + 1) &lt;&lt; 16 | *(&amp;value) &lt;&lt; 24
}

Memory_ReadString(process_handle, address, size)
{
    VarSetCapacity(value, size, 0)
    DllCall(&quot;ReadProcessMemory&quot;, &quot;UInt&quot;, process_handle, &quot;UInt&quot;, address, &quot;Str&quot;, value, &quot;UInt&quot;, size, &quot;UInt *&quot;, 0)

    Loop, %size%
    {
        current_value := NumGet(value, A_Index - 1, &quot;UChar&quot;)

        ;MsgBox, current_value = %current_value%

        If (current_value = 0)
        {
            Break
        }

        result .= Chr(current_value)
    }

    ;MsgBox, result = %result%

    Return, result
}

Memory_ReadStringEx(process_handle, address, size)
{
    result = 

    Loop, %size%
    {
        output := &quot;x&quot;

        read := DllCall(&quot;ReadProcessMemory&quot;, &quot;UInt&quot;, process_handle, &quot;UInt&quot;, address, &quot;Str&quot;, output, &quot;UInt&quot;, 1, &quot;UInt *&quot;, 0)
        If (ErrorLevel or !read)
        {
            Return, result
        }

        If output = 
        {
            Break
        }

        output_character := *(&amp;output)

        IfEqual, output_character, 32 ; Space
        {
            result .= &quot; &quot;
        }
        Else
        {
            result = %result%%output%
        }

        address++
    }

    Return, result
}

Memory_Write(process_handle, address, value)
{
    DllCall(&quot;VirtualProtectEx&quot;, &quot;UInt&quot;, process_handle, &quot;UInt&quot;, address, &quot;UInt&quot;, 4, &quot;UInt&quot;, 0x04, &quot;UInt *&quot;, 0) ; PAGE_READWRITE

    DllCall(&quot;WriteProcessMemory&quot;, &quot;UInt&quot;, process_handle, &quot;UInt&quot;, address, &quot;UInt *&quot;, value, &quot;UInt&quot;, 4, &quot;UInt *&quot;, 0)
}

Memory_WriteEx(process_handle, address, value, size)
{
    DllCall(&quot;VirtualProtectEx&quot;, &quot;UInt&quot;, process_handle, &quot;UInt&quot;, address, &quot;UInt&quot;, size, &quot;UInt&quot;, 0x04, &quot;UInt *&quot;, 0) ; PAGE_READWRITE

    DllCall(&quot;WriteProcessMemory&quot;, &quot;UInt&quot;, process_handle, &quot;UInt&quot;, address, &quot;UInt *&quot;, value, &quot;UInt&quot;, size, &quot;UInt *&quot;, 0)
}

Memory_WriteFloat(process_handle, address, value)
{
    value := FloatToHex(value)

    DllCall(&quot;VirtualProtectEx&quot;, &quot;UInt&quot;, process_handle, &quot;UInt&quot;, address, &quot;UInt&quot;, 4, &quot;UInt&quot;, 0x04, &quot;UInt *&quot;, 0) ; PAGE_READWRITE

    DllCall(&quot;WriteProcessMemory&quot;, &quot;UInt&quot;, process_handle, &quot;UInt&quot;, address, &quot;UInt *&quot;, value, &quot;UInt&quot;, 4, &quot;UInt *&quot;, 0)
}

Memory_WriteNops(process_handle, address, size)
{
    If (size &lt;= 0)
    {
        Return
    }

    VarSetCapacity(value, size)

    Loop, %size%
    {
        NumPut(0x90, value, A_Index - 1, &quot;UChar&quot;)
    }

    DllCall(&quot;VirtualProtectEx&quot;, &quot;UInt&quot;, process_handle, &quot;UInt&quot;, address, &quot;UInt&quot;, size, &quot;UInt&quot;, 0x04, &quot;UInt *&quot;, 0) ; PAGE_READWRITE

    DllCall(&quot;WriteProcessMemory&quot;, &quot;UInt&quot;, process_handle, &quot;UInt&quot;, address, &quot;UInt&quot;, &amp;value, &quot;UInt&quot;, size, &quot;UInt *&quot;, 0)
}

Memory_WriteBytes(process_handle, address, bytes)
{
    bytes_size := 0
    Loop, Parse, bytes, `,
    {
        bytes_size += 1
    }

    ;Sort, bytes, D`, N R ; bytes in reverse order

    VarSetCapacity(value, bytes_size)

    Loop, Parse, bytes, `,
    {
        byte = 0x%A_LoopField% ; pre-append 0x

        NumPut(byte, value, A_Index - 1, &quot;UChar&quot;)
    }

    DllCall(&quot;VirtualProtectEx&quot;, &quot;UInt&quot;, process_handle, &quot;UInt&quot;, address, &quot;UInt&quot;, bytes_size, &quot;UInt&quot;, 0x04, &quot;UInt *&quot;, 0) ; PAGE_READWRITE

    DllCall(&quot;WriteProcessMemory&quot;, &quot;UInt&quot;, process_handle, &quot;UInt&quot;, address, &quot;UInt&quot;, &amp;value, &quot;UInt&quot;, bytes_size, &quot;UInt *&quot;, 0)
}

FloatToHex(value)
{
   format := A_FormatInteger
   SetFormat, Integer, H
   result := DllCall(&quot;MulDiv&quot;, Float, value, Int, 1, Int, 1, UInt)
   SetFormat, Integer, %format%
   Return, result
}</code></pre></div><p>Вот мой код: </p><div class="codebox"><pre><code>msgbox, % Memory_ReadString(Memory_GetProcessHandle(Memory_GetProcessID(&quot;browser.exe&quot;)), &quot;0B1DC7C0&quot;, 12)</code></pre></div><p>Уведомления приходят в яндекс-браузер. И естественно скрипт выдает пустоту либо 0 если речь идёт об функции обычного чтения памяти. Если я правильно понял, то мой адрес памяти не верный (добыл я его с помощью чит-енджина при помощи поиска строки в памяти). Адрес должен выглядеть так: 0х....... тогда функции начинают хоть что-то показывать. Но как добыть этот адрес и он ли это вообще (ибо я почти уверен что этот адрес временный а указатели найти я не смог).</p><p>Если я забрел слишком далеко и есть способ попроще принять push-уведомление (а ещё более желательно в&nbsp; internet explorer) то прошу меня остановить, а то уже выходит нехорошо: заставить пользователей не только держать открытым вечно браузер (ну это допустим я буду делать автоматически со скрытым окном), то так ещё и конкретно яндекс-браузер в данном случае. Надеюсь на вашу помощь.</p>]]></content>
			<author>
				<name><![CDATA[Belo4kaVspishka]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=39407</uri>
			</author>
			<updated>2018-07-28T09:33:32Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=127488#p127488</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Использование сервера как генератора событий на локальном скрипте]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=127483#p127483" />
			<content type="html"><![CDATA[<p>А чем мне это поможет? Я уже могу отправлять уведомления, они приходят мне в браузер. Как теперь скрипт научить понимать, что пришло уведомление и читать его?</p>]]></content>
			<author>
				<name><![CDATA[Belo4kaVspishka]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=39407</uri>
			</author>
			<updated>2018-07-28T04:51:07Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=127483#p127483</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Использование сервера как генератора событий на локальном скрипте]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=127455#p127455" />
			<content type="html"><![CDATA[<p>Полагаю, Вам без разницы, каким сервисом распространять уведомления. Тогда если спросить, <a href="https://www.google.ru/search?q=ahk+get+push+message&amp;oq=ahk+get+push+message&amp;aqs=chrome..69i57.13679j0j7&amp;sourceid=chrome&amp;ie=UTF-8">что об этом думает Google</a>, ответ с готовым решением будет в первой же строке.</p>]]></content>
			<author>
				<name><![CDATA[KusochekDobra]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33846</uri>
			</author>
			<updated>2018-07-27T12:15:29Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=127455#p127455</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Использование сервера как генератора событий на локальном скрипте]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=127454#p127454" />
			<content type="html"><![CDATA[<p>Т.к. пока нет возможности возиться с телеграм, а стоять на месте совсем не хочется, попытался использовать сервис отправки уведомлений pushall. Добился получения push уведомления по get запросу со скрипта. Теперь встает вопрос: как скрипту понять, что пришел пуш в браузер, а в идеале: как узнать текст и заголовок этого сообщения?</p>]]></content>
			<author>
				<name><![CDATA[Belo4kaVspishka]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=39407</uri>
			</author>
			<updated>2018-07-27T07:59:48Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=127454#p127454</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Использование сервера как генератора событий на локальном скрипте]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=127422#p127422" />
			<content type="html"><![CDATA[<p>Есть, но <a href="https://tlgrm.ru/docs">она</a> давно не обновляется, да и ко всему, некоторые части просто продублированы. Возможно, чтобы не портить оригинальный контекст. Гугловый переводчик вполне справляется с семантикой, так что понять, что конкретно имеется ввиду можно без проблем и на оригинальной документации.</p>]]></content>
			<author>
				<name><![CDATA[KusochekDobra]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33846</uri>
			</author>
			<updated>2018-07-26T15:15:16Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=127422#p127422</id>
		</entry>
</feed>
