<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: PeekMessage]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=5110</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=5110&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: PeekMessage».]]></description>
		<lastBuildDate>Mon, 01 Nov 2010 06:45:08 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: PeekMessage]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=41119#p41119</link>
			<description><![CDATA[<div class="quotebox"><cite>YMP пишет:</cite><blockquote><p>Итого 28 байт, по крайней мере на 32-битной системе.</p></blockquote></div><p>Все равно не работает. Видимо буду копать в сторону многопроцессного режима. Или сделаю что-то типа OPC-сервера для работы с COM-портом.<br />Еще есть вариант с передачей данных между двумя процессами.</p><p>Спасибо за участие.</p>]]></description>
			<author><![CDATA[null@example.com (j2)]]></author>
			<pubDate>Mon, 01 Nov 2010 06:45:08 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=41119#p41119</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: PeekMessage]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=41090#p41090</link>
			<description><![CDATA[<p>Ну, в общем-то, одна бросается. MSG — это не число, а структура.<br /></p><div class="codebox"><pre><code>typedef struct tagMSG {     // msg  
    HWND   hwnd;     
    UINT   message; 
    WPARAM wParam; 
    LPARAM lParam; 
    DWORD  time; 
    POINT  pt; 
} MSG;</code></pre></div><p>POINT внутри неё тоже структура.<br /></p><div class="codebox"><pre><code>typedef struct tagPOINT { // pt  
    LONG x; 
    LONG y; 
} POINT;</code></pre></div><p>Итого 28 байт, по крайней мере на 32-битной системе.</p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Sun, 31 Oct 2010 10:11:01 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=41090#p41090</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: PeekMessage]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=41086#p41086</link>
			<description><![CDATA[<div class="quotebox"><cite>YMP пишет:</cite><blockquote><p>Честно говоря, мне пока не понятно, в чём конкретно у Вас проблема. Ведь не может быть, что Вам просто лень писать код и Вы хотите, чтобы кто-то сел и сделал это за Вас. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p></blockquote></div><p>Конечно мне не лень. Видимо просто в синтаксис вкрадывается ошибка и поэтому я получаю неверный результат.</p><div class="codebox"><pre><code>VarSetCapacity(message,4,0)
    loop 5
    {
        if DllCall(&quot;PeekMessage&quot;, &quot;UInt*&quot;, message, &quot;UInt&quot;, 0, &quot;UInt&quot;, 0, &quot;UInt&quot;, 0, &quot;UInt&quot;, 0)
        {            
            sleep 100
            if !DllCall(&quot;GetMessage&quot;, &quot;UInt*&quot;, message, &quot;UInt&quot;, 0, &quot;UInt&quot;, 0, &quot;UInt&quot;, 0)
            {
                DllCall(&quot;TranslateMessage&quot;, &quot;UInt&quot;, &amp;message)
                DllCall(&quot;DispatchMessage&quot;, &quot;UInt&quot;, &amp;message)            
            }
            else
                break
        }
        else
            break
            
    }</code></pre></div><p>Возможно ошибка бросится вам в глаза, но я ее не вижу.</p>]]></description>
			<author><![CDATA[null@example.com (j2)]]></author>
			<pubDate>Sun, 31 Oct 2010 09:42:51 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=41086#p41086</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: PeekMessage]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=41076#p41076</link>
			<description><![CDATA[<p>Ну так попробуйте вставить в эти промежутки PeekMessage и посмотреть, есть ли сообщения. Раз Вы вызываете функции из dll, то знаете, как пользоваться DllCall.</p><p>Честно говоря, мне пока не понятно, в чём конкретно у Вас проблема. Ведь не может быть, что Вам просто лень писать код и Вы хотите, чтобы кто-то сел и сделал это за Вас. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Sun, 31 Oct 2010 07:58:30 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=41076#p41076</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: PeekMessage]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=41074#p41074</link>
			<description><![CDATA[<div class="quotebox"><cite>YMP пишет:</cite><blockquote><p>А что Вы с ней будете делать? Насколько знаю, скрипт выполняется в один поток. И если этот поток пошёл в Вашу dll, когда Вы вызвали функцию из неё, то пока он оттуда не вернётся при возврате этой функции, никаких других действий в скрипте не будет. Будет выполняться код функции из dll. Код скрипта продолжит выполняться, только когда эта функция отработает.</p></blockquote></div><p>Спасибо что откликнулись. Я очень благодарен вам за многочисленные ответы по этому маленькому, но удобному языку программирования. <br />Функции из DLL вызываются друг за другом, т.е. есть место, когда поток возвращается в скрипт, прежде чем вызвать следующую функцию. Именно в эти моменты времени можно поставить запросы к очереди сообщений и узнать есть ли сообщения для текущего окна или они все обработаны. Если есть, то прежде чем вызывать следующую функцию из DLL нужно дождаться пока будут отработаны все текущие сообщения окна.</p>]]></description>
			<author><![CDATA[null@example.com (j2)]]></author>
			<pubDate>Sun, 31 Oct 2010 06:14:11 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=41074#p41074</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: PeekMessage]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=41063#p41063</link>
			<description><![CDATA[<p>А что Вы с ней будете делать? Насколько знаю, скрипт выполняется в один поток. И если этот поток пошёл в Вашу dll, когда Вы вызвали функцию из неё, то пока он оттуда не вернётся при возврате этой функции, никаких других действий в скрипте не будет. Будет выполняться код функции из dll. Код скрипта продолжит выполняться, только когда эта функция отработает.</p><p>Распараллелить можно, запустив два скрипта и наладив общение между ними, например, через оконные сообщения. Ну и на официальном форуме в разделе Scripts &amp; Functions есть проект AutoHotkey.dll, где вроде бы реализована многопоточность. Но в это я не вникал.</p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Sat, 30 Oct 2010 17:30:44 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=41063#p41063</guid>
		</item>
		<item>
			<title><![CDATA[AHK: PeekMessage]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=41060#p41060</link>
			<description><![CDATA[<p>Господа обращаюсь за советом.<br />Дело в том, что пытаюсь реализовать программу на AHK с внедренным WebBrowser. Все было хорошо пока не понадобилось вести лог обмена данными через COM-port. Написали dll-библиотеку функций обмена измерительного прибора с компьютером через COM-port и когда есть необходимось вызываем функции обмена и результат размещаем в документе браузера. </p><p>Пока идут одиночные команды обмена лог успевает обновляться, как начинаются групповые опросы лог зависает и пока не произойдет окончание групповых опросов окно программы не откликается и лог не обновляется.</p><p>Посмотрел в интернете видимо это вызвано тем, что притормаживает очередь сообщений в момент вызова функций DllCall. Решают эту проблемму вызовом PeekMessage. Примерно так:<br /></p><div class="codebox"><pre><code>if(PeekMessage (&amp;msg, NULL, 0, 0, PM_NOREMOVE))
{

//Ну здесь понятно идет обработка сообщений
if(!GetMessage (&amp;msg, NULL, 0, 0)) break;
TranslateMessage (&amp;msg); 
DispatchMessage (&amp;msg);
}</code></pre></div><p>Подскажите пожалуйста как реализовать такую функцию на AutoHotKey?</p>]]></description>
			<author><![CDATA[null@example.com (j2)]]></author>
			<pubDate>Sat, 30 Oct 2010 16:37:21 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=41060#p41060</guid>
		</item>
	</channel>
</rss>
