<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Как получать данные с сайта?]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=15900</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=15900&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Как получать данные с сайта?».]]></description>
		<lastBuildDate>Tue, 02 Feb 2021 20:10:45 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Как получать данные с сайта?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=145740#p145740</link>
			<description><![CDATA[<p>Как вариант, спасибо за советы.</p>]]></description>
			<author><![CDATA[null@example.com (Botsy)]]></author>
			<pubDate>Tue, 02 Feb 2021 20:10:45 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=145740#p145740</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Как получать данные с сайта?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=145739#p145739</link>
			<description><![CDATA[<p>Всё же, наличие файла, который может неожиданно &#039;пропасть&#039; - не очень хороший вариант как по мне. Если всё же оставить как есть, тогда при первой установке сразу переместить основную программу и обновлялку в отдельную папку, например в &#039;C:\Program Files\&#039; а на рабочем столе создать ярлык?</p>]]></description>
			<author><![CDATA[null@example.com (__Михаил__)]]></author>
			<pubDate>Tue, 02 Feb 2021 19:22:12 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=145739#p145739</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Как получать данные с сайта?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=145737#p145737</link>
			<description><![CDATA[<p>Апдейтер в комплекте сразу буду кидать, а проверку на наличие файла - добавлю. А все действия с ссылкой, добавлю в блок try.</p>]]></description>
			<author><![CDATA[null@example.com (Botsy)]]></author>
			<pubDate>Tue, 02 Feb 2021 18:31:52 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=145737#p145737</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Как получать данные с сайта?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=145726#p145726</link>
			<description><![CDATA[<p>Первый косяк что сразу в глаза попадается - &#039;parametrs_test.exe&#039;, не указано где его искать, что если его не будет в папке?<br />Либо он должен проверяться перед запуском, либо скачиваться / извлекаться из основы.</p><p>2) &#039;Server_version&#039; точно будет нужным числом? Что если ссылка окажется не действительной?</p>]]></description>
			<author><![CDATA[null@example.com (__Михаил__)]]></author>
			<pubDate>Tue, 02 Feb 2021 14:57:54 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=145726#p145726</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Как получать данные с сайта?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=145698#p145698</link>
			<description><![CDATA[<p>Переделал без батника, по мне так стало надёжнее. Есть программа и апдейтер. <br /><strong>Программа</strong> скачивает новую версию и запускает апдейтер, передавая ему параметры(особенно порадовало передача PID, потому что с батником этого не получилось).<br /></p><div class="codebox"><pre><code>
SetWorkingDir %A_ScriptDir%

PID := DllCall(&quot;GetCurrentProcessId&quot;)
Current_version := 1
old_File_path := A_ScriptFullPath
new_File_path := A_ScriptDir &quot;\new_version.exe&quot;
URL := &quot;/new_version.exe&quot;
link := &quot;/update.txt&quot;

http := ComObjCreate(&quot;WinHTTP.WinHTTPRequest.5.1&quot;)
http.Open(&quot;GET&quot;, link, False)
http.Send()
http.WaitForResponse()
Server_version := http.responseText

If (Server_version &gt; Current_version)
{
		UrlDownloadToFile, %URL%, new_version.exe
		Run, parametrs_test.exe &quot;%PID%&quot; &quot;%old_File_path%&quot; &quot;%new_File_path%&quot;
		ExitApp
}
return
</code></pre></div><p><strong>Апдейтер</strong> обрабатывает входные параметры, завершает и удаляет старую версию, переименовывает новую и запускает ее.<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><div class="codebox"><pre><code>
#NoEnv
SetWorkingDir %A_ScriptDir%

if A_Args.Count() &gt; 3
	ExitApp
else if A_Args.Count() &gt; 0
{
	for index, element in A_Args
	{
		first_element := SubStr(element, 1, 1)
		if (first_element = &quot;-&quot;)
		{
			element := SubStr(element, 2)
		}
		input_parametrs%index% := element
	}
			;	input_parametrs1 = PID
			;	input_parametrs2 = old_File_path
			;	input_parametrs3 = new_File_path

	if !FileExist(input_parametrs2)
		ExitApp
	old_version(input_parametrs1, input_parametrs2)
	new_version(input_parametrs2, input_parametrs3)
	run %input_parametrs2%
}
else ExitApp

ExitApp

old_version(old_PID, old_File_path) 
{
Process, Exist, %old_PID%
if Errorlevel != 0
{
	Process, Close, %old_PID%
	Process, WaitClose, %old_PID%, 1
	if ErrorLevel != 0
	{
		MsgBox, Error
		ExitApp
	}
}

if FileExist(old_File_path) 
{
	FileDelete, %old_File_path%
	if ErrorLevel != 0
	{
		MsgBox, Error
		ExitApp
	}
}
return
}

new_version(old_File_path, new_File_path) 
{
if FileExist(new_File_path)
{
	FileMove, %new_File_path%, %old_File_path%, 1
	if ErrorLevel != 0
	{
		MsgBox, Error
		ExitApp
	}
}
return
}
</code></pre></div></div></div><p>Пока что всё работает тип-топ). Не знаю насколько корректно написал, мб забыл что-то проверить или может подскажите на ошибки, если есть?</p>]]></description>
			<author><![CDATA[null@example.com (Botsy)]]></author>
			<pubDate>Mon, 01 Feb 2021 20:31:00 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=145698#p145698</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Как получать данные с сайта?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=145670#p145670</link>
			<description><![CDATA[<p>Ещё как вариант - скачать новую версию и запустить. В ней уже если всё устраивает пользователя предложить удаление старой. Если нужно то можно сохранить новую версию под старым названием (например запуск с ярлыка и прочее).</p><p>Вот проверил, работает:</p><div class="codebox"><pre><code>#SingleInstance Force
#NoEnv
SetWorkingDir %A_ScriptDir%

; Отобразить текущий полный путь:
F2::
Tool(&quot;Полный путь к программе: &quot; A_ScriptFullPath,,0,0)
Return


; Переименовать текущую программу:
F3::
SplitPath, A_ScriptFullPath,, dir,, name_no_ext

FileMove, % A_ScriptFullPath, % dir &quot;\&quot; name_no_ext (A_IsCompiled ? &quot; v2.exe&quot; : &quot; v2.ahk&quot;) ; Добавит к текущему названию &#039;v2&#039;.
If ErrorLevel
 Tool(&quot;Не вышло переименовать&quot;,,0,0)
Else
 Tool(&quot;Всё ок&quot;,,0,0)
Return




;16.06.2020	показать на время ToolTip, с указанием позиции:
Tool(txt, wait := 2000, X := &quot;&quot;, Y := &quot;&quot;)
{
 SetTimer, Show0, Off
 ToolTip, % txt, % X, % Y

 If wait
  SetTimer, Show0, %wait%
 Else
 {
  KeyWait, %A_ThisHotkey%, U
  ToolTip
 }
}


~Esc::
Show0:
SetTimer, Show0, Off
ToolTip
Return

F4:: ExitApp
F6:: Reload</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (__Михаил__)]]></author>
			<pubDate>Sun, 31 Jan 2021 11:22:06 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=145670#p145670</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Как получать данные с сайта?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=145665#p145665</link>
			<description><![CDATA[<p>1) Что мешает создавать батник с нужным названием программы? Ахк скрипт спокойно может получить свое название и создать батник с нужными данными.<br />2) Так же как с 1 пунктом. Ахк может получить полный путь где он находится.<br />3) Командую строку можно скрыть. Зачем она нам нужна, верно?<br />4) Сделать красивую анимацию якобы скачивания обновы?</p><p>Высосанные из пальца проблемы, как по мне.</p>]]></description>
			<author><![CDATA[null@example.com (__Михаил__)]]></author>
			<pubDate>Sat, 30 Jan 2021 22:07:22 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=145665#p145665</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Как получать данные с сайта?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=145664#p145664</link>
			<description><![CDATA[<p>Попробовал с батником. Ну для эксперимента, работает нормально: основная программа проверяет версию -&gt; скачивает новую -&gt; запускает батник и выходит из программы -&gt; батник удаляет основную программу, переименовывает новую в старую -&gt; запускает новую. Но по мне выглядит это не очень надёжно. </p><p>Во-первых, батник привязан по названию программ. Их можно изменить и т.д. Лучше было бы привязывать по PID процесса, чтобы удалить 100% нужную программу, но не нашел инфу как передать PID в батник при запуске. Во-вторых, привязан локально. Файлы могут разделить и т.д., и если программы не будет в каталоге с батником - ничего не получится. В-третьих, открывается командная строка и это может пугать пользователя или типо того. В-четвёртых, выполнение команд в батнике фиксировано задержкой между командами, а не их фактическим выполнением. У кого-то комп динозавр и команды не будут выполнены корректно. </p><p>В общем, в каталогах нормальных программ не нашел батников, хотя они обновляются красиво. За-то всегда есть 2-3 дополнительных ярлыка с названиями типо &quot;service, update и прочее&quot;. Попробую альтернативный метод, без батника, а с промежуточной программой. </p><div class="codebox"><pre><code>
If (Server_version &gt; Current_version)
{
		UrlDownloadToFile, %URL%, delete_download.exe
		if !FileExist(&quot;delete_download.exe&quot;)
			ExitApp
		Run, test.bat
			ExitApp
}
</code></pre></div><p><strong>test.bat</strong><br /></p><div class="codebox"><pre><code>
@timeout /t 2
@erase &quot;%~dp0delete_bat.exe&quot; ; удаляем старую программу
@timeout /t 1
@rename delete_download2.exe delete_download.exe ; переименовываем новую в старую
@timeout /t 1
@start &quot;&quot; &quot;%~dp0delete_download.exe&quot; ; запускаем новую
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Botsy)]]></author>
			<pubDate>Sat, 30 Jan 2021 21:44:23 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=145664#p145664</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Как получать данные с сайта?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=145642#p145642</link>
			<description><![CDATA[<p>Это базовые функции ОС. Саму себя удалять программа запретит. Нужен &#039;помощник&#039; в этом. Например батник создать и запустить после выхода программы.</p>]]></description>
			<author><![CDATA[null@example.com (__Михаил__)]]></author>
			<pubDate>Sat, 30 Jan 2021 10:29:35 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=145642#p145642</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Как получать данные с сайта?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=145625#p145625</link>
			<description><![CDATA[<p>Ошибка считать, что исполняемые файлы можно удалять.<br />Попробуйте любой другой файл программы запустить и попытайтесь его удалить, пока его процесс запущен.</p>]]></description>
			<author><![CDATA[null@example.com (KusochekDobra)]]></author>
			<pubDate>Sat, 30 Jan 2021 05:30:43 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=145625#p145625</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Как получать данные с сайта?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=145623#p145623</link>
			<description><![CDATA[<p>Вот и пригодилось автообновление, было два варианта: либо сделать второй скрипт типо лаунчера, либо просто скачает новую версию -&gt; запустит и сам себя удалит.<br />Остановился на второй. В не скомпилированном варианте все работает (если указать в FileRecycle -&gt; A_ScriptFullPath), а после компиляции - нет. Т.е. &quot;exe&quot; не удаляет сам себя. Подскажите где ошибка?</p><div class="codebox"><pre><code>
SetWorkingDir %A_ScriptDir%
Current_version := 1
URL := &quot;https://delete_download.exe&quot;
link := &quot;https://update.txt&quot;

http := ComObjCreate(&quot;WinHTTP.WinHTTPRequest.5.1&quot;)
http.Open(&quot;GET&quot;, link, False)
http.Send()
http.WaitForResponse()
Server_version := http.responseText

If (Server_version &gt; Current_version)
{
		UrlDownloadToFile, %URL%, delete_download.exe
		if !FileExist(&quot;delete_download.exe&quot;)
			ExitApp
		Run, *RunAs delete_download.exe 1
		FileRecycle, delete_copy.exe
			ExitApp
}
else msgbox, Not
return
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Botsy)]]></author>
			<pubDate>Sat, 30 Jan 2021 02:21:24 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=145623#p145623</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Как получать данные с сайта?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=144053#p144053</link>
			<description><![CDATA[<p><strong>Botsy</strong></p><div class="codebox"><pre><code>FileReadLine, VNum, %A_WorkingDir%\version.txt, 1</code></pre></div><p>Чтение файла, зачем? Это на мой взгляд глупо. В программе должна быть переменная, её сверить быстрее и правильнее.</p><p>Можно сделать более менее красивое окошко с предложением на обновление, стандартные ToolTip и MsgBox думаю уже не актуальны в готовом продукте.</p>]]></description>
			<author><![CDATA[null@example.com (__Михаил__)]]></author>
			<pubDate>Wed, 09 Dec 2020 19:11:37 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=144053#p144053</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Как получать данные с сайта?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=144050#p144050</link>
			<description><![CDATA[<p><strong>__Михаил__</strong> В том варианте, который есть - базовый функционал. Можно дописать немного и будет вообще по красоте.</p>]]></description>
			<author><![CDATA[null@example.com (Botsy)]]></author>
			<pubDate>Wed, 09 Dec 2020 18:43:03 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=144050#p144050</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Как получать данные с сайта?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=144049#p144049</link>
			<description><![CDATA[<div class="quotebox"><cite>Botsy пишет:</cite><blockquote><p>Это конечно не автообновление, придется руками удалять старую версию, но как бюджетный вариант, вполне реальный.</p></blockquote></div><p>Почему же это не автообновление? Очень даже дельно, на мой взгляд.<br />Если стоит галочка в программе &#039;Проверять обнову&#039; - скачать с сервера файл / код. Затем спросить пользователя на замену версии - если он согласиться - заменить текущую на новую. Можно сохранить старую, а новую рядом поставить и в конце добавить &#039;v2.0&#039; например.</p>]]></description>
			<author><![CDATA[null@example.com (__Михаил__)]]></author>
			<pubDate>Wed, 09 Dec 2020 18:37:19 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=144049#p144049</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Как получать данные с сайта?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=144040#p144040</link>
			<description><![CDATA[<p><strong>Vsevolod</strong> Есть простой способ и нормальный. Сам пользуюсь простым: добавь подключение к серверу в блок &quot;try&quot;, а в блоке &quot;catch&quot; обработай его, например выводом сообщения &quot;нет интернета&quot;. А нормальный способ, это еще обрабатывать коды ошибок в http запросах(ну там ошибка 404 и т.д.), тогда будет полное сообщение об ошибке, а не просто &quot;нет интернета&quot;.</p>]]></description>
			<author><![CDATA[null@example.com (Botsy)]]></author>
			<pubDate>Wed, 09 Dec 2020 12:40:01 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=144040#p144040</guid>
		</item>
	</channel>
</rss>
