<?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=5058</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=5058&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Потоки».]]></description>
		<lastBuildDate>Fri, 02 Dec 2016 20:56:49 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Потоки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=109555#p109555</link>
			<description><![CDATA[<p>Где можно скачать com.ahk? Нужна поддержка COM_Invoke.</p>]]></description>
			<author><![CDATA[null@example.com (OmTatSat)]]></author>
			<pubDate>Fri, 02 Dec 2016 20:56:49 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=109555#p109555</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Потоки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=40698#p40698</link>
			<description><![CDATA[<p>Пожалуйста: <a href="http://www.autohotkey.net/~ayosh/MultiThreading.zip">архив со всеми файлами</a><br />Файлы по отдельности: <a href="http://www.autohotkey.net/~ayosh/AhkDllObject.ahk">AhkDllObject.ahk</a> <a href="http://www.autohotkey.net/~ayosh/AutoHotkey.dll">AutoHotkey.dll</a> <a href="http://www.autohotkey.net/~ayosh/AutoHotkey.exe">AutoHotkey.exe</a> <a href="http://www.autohotkey.net/~ayosh/COM.ahk">COM.ahk</a> <a href="http://www.autohotkey.net/~ayosh/MultiThreading_test.ahk">MultiThreading_test.ahk</a></p><p>Запуск: AutoHotkey.exe MultiThreading_test.ahk</p>]]></description>
			<author><![CDATA[null@example.com (ayosh)]]></author>
			<pubDate>Thu, 21 Oct 2010 21:39:37 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=40698#p40698</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Потоки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=40689#p40689</link>
			<description><![CDATA[<p>Было бы неплохо. А то у меня все ошибками разными плюется</p>]]></description>
			<author><![CDATA[null@example.com (VOLK666)]]></author>
			<pubDate>Thu, 21 Oct 2010 16:45:25 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=40689#p40689</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Потоки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=40659#p40659</link>
			<description><![CDATA[<p>И всё таки она появилась, с библиотекой Autohotkey.dll и данной сборкой Autohotkey, основа которого AHK_L:&nbsp; <a href="http://www.autohotkey.net/~HotKeyIt/AutoHotkey/">Autohotkey.dll</a><br />Проверил как работает с COM. Испытывал то, что выложил VOLK666, так что можно делать свой download manager с неглючным gui, tray и т.д. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p><p>Для запуска скрипта нам необходимы: <br />1. файлы из архива <a href="http://www.autohotkey.net/~HotKeyIt/AutoHotkey.zip">Autohotkey.zip</a> (<a href="http://www.autohotkey.net/~HotKeyIt/AutoHotkey/">описание и оттуда же архив</a>) - из корня архива AhkDllObject.ahk для создания из DLL объекта, AutoHotkey.dll и AutoHotkey.exe взяты из папки \Win32a\<br />2. COM.ahk для теста COM взят отсюда <a href="http://www.autohotkey.net/~Sean/Lib/COM.zip">COM.zip</a> (<a href="http://www.autohotkey.com/forum/viewtopic.php?t=22923">Тема на форуме</a>)<br />Скрипт VOLK666&#039;а просто скопипастил чтобы не морочиться и добавил циферки на выходной файл <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p><p>Также скрипт лучше сохранить в UTF-8 без BOM. Версии exe\dll не Unicode, так что в gui на англ написал. Если будет желание, могу собрать все файлы в архив и выложить рабочий вариант <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p><div class="codebox"><pre><code>#Include AhkDllObject.ahk
#NoEnv
SetBatchLines, -1

;~ Переменные со скриптами для теста COM
gosub, s

;~ Количество потоков
Threads = 10 
;~ Загружаем библиотеку...
Gosub, LauchThreads

;~ Запускаем тестовые потоки
Loop % Threads
    dll%A_Index%.ahktextdll(&quot;#NoTrayIcon`nSetBatchLines,-1`nLoop 10`n{`nx++`nSleep 1000`n}&quot;)


;~ нам надо окно )
wh := 13*Threads
gui +alwaysontop
gui, add, text, vr w200 h%wh%
gui, add, button, gGuiClose vbtn y20 hidden, Exit
gui, show, ,Threads test

;~ Ожидаем пока все потоки завершатся, параллельно выдёргиваем переменные, обновляем окно
While ThreadsReady(Threads) != 0
{   statestr :=
    Loop % Threads  
        statestr .= (dll%A_Index%.ahkgetvar(&quot;x&quot;) ? &quot;Thread &quot; A_Index &quot;; x = &quot; dll%A_Index%.ahkgetvar(&quot;x&quot;) : &quot;no var&quot;) &quot;`n&quot;
    GuiControl,, r, % statestr
    Sleep 250
}


;~ Тест с COM объектами, запускаем потоки со скриптами COM
Loop 3
    dll%A_Index%.ahktextdll(script%a_index%)

;~ ждём, обновляем..
While ThreadsReady(3) != 0
{   
    statestr :=
    Loop 3
        statestr .=  (dll%A_Index%.ahkReady() ? &quot;COM thread running&quot; : &quot;COM thread closed&quot;) &quot;`n&quot;
    GuiControl,, r, % statestr
    Sleep 250
}
GuiControl,, r, COM threads finished
GuiControl, show, btn
;~ проверяем наличие скаченных файлов )
Run % A_ScriptDir
Return

ThreadsReady(Threads) {
    Loop % Threads
        sum += dll%A_Index%.ahkReady()
    Return sum
}

GuiClose:
ExitApp
Return

LauchThreads:
Loop % Threads
{
;~  ...под разными именами
    FileMove, % ahkdll := A_Index = 1 ? &quot;AutoHotkey.dll&quot; : &quot;AutoHotkey&quot; A_Index-1 &quot;.dll&quot;, AutoHotkey%A_Index%.dll
    dll%A_Index%:=AhkdllObject(&quot;AutoHotkey&quot; A_Index &quot;.dll&quot;)
}
FileMove, AutoHotkey%Threads%.dll, AutoHotkey.dll
Return

s:
script1 =
(
#Include COM.ahk
sURL :=   &quot;http://www.autohotkey.com/download/AutoHotkeyInstall.exe&quot;
sFile:=   A_WorkingDir &quot;\AutoHotkeyInstall1.exe&quot;
bOverWrite := True 

COM_Init() 
pwhr :=   COM_CreateObject(&quot;WinHttp.WinHttpRequest.5.1&quot;) 
COM_Invoke(pwhr, &quot;Open&quot;, &quot;GET&quot;, sURL) 
COM_Invoke(pwhr, &quot;Send&quot;) 

If   psfa :=   COM_Invoke(pwhr, &quot;ResponseBody&quot;) 
{ 
pstm :=   COM_CreateObject(&quot;ADODB.Stream&quot;) 
COM_Invoke(pstm, &quot;Type&quot;, 1)   ; adTypeBinary:=1, adTypeText:=2 
COM_Invoke(pstm, &quot;Open&quot;) 
COM_Invoke_(pstm, &quot;Write&quot;, 0x2011, psfa) ; VT_ARRAY | VT_UI1 
COM_Invoke(pstm, &quot;SaveToFile&quot;, sFile, bOverWrite ? 2:1) 
COM_Invoke(pstm, &quot;Close&quot;) 
COM_Release(pstm) 
COM_SafeArrayDestroy(psfa) 
} 

COM_Release(pwhr)  
COM_Term()
)
script2 =
(
#Include COM.ahk
sURL :=   &quot;http://www.autohotkey.com/download/AutoHotkeyInstall.exe&quot;
sFile:=   A_WorkingDir &quot;\AutoHotkeyInstall2.exe&quot;
bOverWrite := True 

COM_Init() 
pwhr :=   COM_CreateObject(&quot;WinHttp.WinHttpRequest.5.1&quot;) 
COM_Invoke(pwhr, &quot;Open&quot;, &quot;GET&quot;, sURL) 
COM_Invoke(pwhr, &quot;Send&quot;) 

If   psfa :=   COM_Invoke(pwhr, &quot;ResponseBody&quot;) 
{ 
pstm :=   COM_CreateObject(&quot;ADODB.Stream&quot;) 
COM_Invoke(pstm, &quot;Type&quot;, 1)   ; adTypeBinary:=1, adTypeText:=2 
COM_Invoke(pstm, &quot;Open&quot;) 
COM_Invoke_(pstm, &quot;Write&quot;, 0x2011, psfa) ; VT_ARRAY | VT_UI1 
COM_Invoke(pstm, &quot;SaveToFile&quot;, sFile, bOverWrite ? 2:1) 
COM_Invoke(pstm, &quot;Close&quot;) 
COM_Release(pstm) 
COM_SafeArrayDestroy(psfa) 
} 

COM_Release(pwhr)  
COM_Term()
)
script3 =
(
#Include COM.ahk
sURL :=   &quot;http://www.autohotkey.com/download/AutoHotkeyInstall.exe&quot;
sFile:=   A_WorkingDir &quot;\AutoHotkeyInstall3.exe&quot;
bOverWrite := True 

COM_Init() 
pwhr :=   COM_CreateObject(&quot;WinHttp.WinHttpRequest.5.1&quot;) 
COM_Invoke(pwhr, &quot;Open&quot;, &quot;GET&quot;, sURL) 
COM_Invoke(pwhr, &quot;Send&quot;) 

If   psfa :=   COM_Invoke(pwhr, &quot;ResponseBody&quot;) 
{ 
pstm :=   COM_CreateObject(&quot;ADODB.Stream&quot;) 
COM_Invoke(pstm, &quot;Type&quot;, 1)   ; adTypeBinary:=1, adTypeText:=2 
COM_Invoke(pstm, &quot;Open&quot;) 
COM_Invoke_(pstm, &quot;Write&quot;, 0x2011, psfa) ; VT_ARRAY | VT_UI1 
COM_Invoke(pstm, &quot;SaveToFile&quot;, sFile, bOverWrite ? 2:1) 
COM_Invoke(pstm, &quot;Close&quot;) 
COM_Release(pstm) 
COM_SafeArrayDestroy(psfa) 
} 

COM_Release(pwhr)  
COM_Term()
)
Return</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (ayosh)]]></author>
			<pubDate>Wed, 20 Oct 2010 21:18:07 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=40659#p40659</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Потоки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=40636#p40636</link>
			<description><![CDATA[<p>Ну, конкретно httpQuery для меня тёмный лес, никогда не ковырялся в этом. Могу только повторить то, что знаю — реальный поток у скрипта один.</p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Wed, 20 Oct 2010 16:11:21 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=40636#p40636</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Потоки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=40634#p40634</link>
			<description><![CDATA[<p>При использовании COM-функции<br /></p><div class="codebox"><pre><code>sURL :=   &quot;http://www.autohotkey.com/download/AutoHotkeyInstall.exe&quot;
sFile:=   A_WorkingDir &quot;\AutoHotkeyInstall.exe&quot;
bOverWrite := True 

COM_Init() 
pwhr :=   COM_CreateObject(&quot;WinHttp.WinHttpRequest.5.1&quot;) 
COM_Invoke(pwhr, &quot;Open&quot;, &quot;GET&quot;, sURL) 
COM_Invoke(pwhr, &quot;Send&quot;) 

If   psfa :=   COM_Invoke(pwhr, &quot;ResponseBody&quot;) 
{ 
pstm :=   COM_CreateObject(&quot;ADODB.Stream&quot;) 
COM_Invoke(pstm, &quot;Type&quot;, 1)   ; adTypeBinary:=1, adTypeText:=2 
COM_Invoke(pstm, &quot;Open&quot;) 
COM_Invoke_(pstm, &quot;Write&quot;, 0x2011, psfa) ; VT_ARRAY | VT_UI1 
COM_Invoke(pstm, &quot;SaveToFile&quot;, sFile, bOverWrite ? 2:1) 
COM_Invoke(pstm, &quot;Close&quot;) 
COM_Release(pstm) 
COM_SafeArrayDestroy(psfa) 
} 

COM_Release(pwhr)  
COM_Term()</code></pre></div><p>Трей и GUI скрипта отвечают очень долго. Используя функцию URLDownloadToFile такого уже нет. Но она привязана к IE</p><p><strong>YMP</strong>, то-есть вообще на AHK нереально отправлять скажем запросы через функцию httpQuery в несколько потоков?</p>]]></description>
			<author><![CDATA[null@example.com (VOLK666)]]></author>
			<pubDate>Wed, 20 Oct 2010 15:44:41 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=40634#p40634</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Потоки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=40594#p40594</link>
			<description><![CDATA[<p>Если это winwait, то лучше делать отдельным скриптом. Если обычный таймер, то проблем быть не должно.</p>]]></description>
			<author><![CDATA[null@example.com (InFlames)]]></author>
			<pubDate>Tue, 19 Oct 2010 17:38:54 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=40594#p40594</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Потоки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=40590#p40590</link>
			<description><![CDATA[<p>А что конкретно имеется в виду? Вообще, реально, скрипт выполняется в одном потоке. Потоки, о которых говорится в справке, это хитрость такая, позволяющая до некоторой степени имитировать многопоточность.</p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Tue, 19 Oct 2010 16:49:42 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=40590#p40590</guid>
		</item>
		<item>
			<title><![CDATA[AHK: Потоки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=40566#p40566</link>
			<description><![CDATA[<p>GUI скрипта виснет, когда выполняется какое-то другое действие. Можно ли сделать так, чтобы и GUI нормально отвечал на запросы, когда выполняется другое действие?</p>]]></description>
			<author><![CDATA[null@example.com (VOLK666)]]></author>
			<pubDate>Tue, 19 Oct 2010 06:47:02 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=40566#p40566</guid>
		</item>
	</channel>
</rss>
