<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Подружить DllCall и SendMessage]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=6598</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=6598&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Подружить DllCall и SendMessage».]]></description>
		<lastBuildDate>Sun, 25 Dec 2011 15:00:40 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[AHK: Подружить DllCall и SendMessage]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=54960#p54960</link>
			<description><![CDATA[<p>Имеется скрипт с использованием библиотеки AHKCtrlSupport.dll для создания в окне GUI дополнительных контролов.<br />Встроен обработчик событий для этих контролов:<br /></p><div class="codebox"><pre><code>OnMessage(0x002B, &quot;ProcessMsg&quot;)
OnMessage(0x000F, &quot;ProcessMsg&quot;)
OnMessage(0x000B, &quot;ProcessMsg&quot;)
OnMessage(0x0400, &quot;ProcessMsg&quot;)
ProcessMsg(wp, lp, msg)
{
    ;ToolTip, Msg:%msg% - lp:%lp% - wp:%wp%
    nRC := DllCall(&quot;AHKCtrlSupport\ProcessMsg&quot;, int, msg, int, wp, int, lp, &quot;Cdecl Int&quot;)
    if (errorlevel &lt;&gt; 0) || (nRC = 0)
    {
        MsgBox ошибка вызова ProcessMsg Errorlevel: %errorlevel% - RC: %nRC%
        return
    }
}</code></pre></div><p>Работает великолепно до тех пор, пока в том же скрипте не начинаю использовать команду <br /></p><div class="codebox"><pre><code>SendMessage,0xB0,&amp;Start,&amp;End,,ahk_id %MyEditID%</code></pre></div><p>К слову, команда используется для стандартного контрола, но суть в другом.<br />Последовательное выполнение (по ходу действия) сначала этой команды, затем обработчика вызывает ошибку<br /></p><div class="codebox"><pre><code>Error: This DllCall requires a prior VarSetCapacity. The program is now unstable and will exit.

    Line#
    117: MsgBox,ошибка вызова CreateHTMLStatic Errorlevel: %errorlevel% - RC: %LEDStaticHWND%
    118: Return
    119: }
    130: nRC := DllCall(&quot;AHKCtrlSupport\Redraw&quot;, &quot;Cdecl Int&quot;)
    131: Return
    134: {
    135: VarSetCapacity(lp, 10240000)  
---&gt;    137: nRC := DllCall(&quot;AHKCtrlSupport\ProcessMsg&quot;, int, msg, int, wp, int, lp, &quot;Cdecl Int&quot;)
    138: if (errorlevel &lt;&gt; 0) || (nRC = 0)  
    139: {
    140: MsgBox,ошибка вызова ProcessMsg Errorlevel: %errorlevel% - RC: %nRC%
    141: Return
    142: }
    143: }
    145: Return

---------------------------
ОК   
---------------------------</code></pre></div><p>Вот с чем с чем, а с командой VarSetCapacity не дружу. Как ее тут правильно выставить, чтобы программа не материлась?<br />Варианты уже попробовал разные - не вытанцовывается.</p>]]></description>
			<author><![CDATA[null@example.com (pant-79)]]></author>
			<pubDate>Sun, 25 Dec 2011 15:00:40 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=54960#p54960</guid>
		</item>
	</channel>
</rss>
