<?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=14657</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=14657&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: запуск консольного приложения».]]></description>
		<lastBuildDate>Wed, 20 Mar 2019 08:05:37 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: запуск консольного приложения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=132994#p132994</link>
			<description><![CDATA[<p>Ну, я думал, что есть консольный autohotkey.</p>]]></description>
			<author><![CDATA[null@example.com (svoboden)]]></author>
			<pubDate>Wed, 20 Mar 2019 08:05:37 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=132994#p132994</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: запуск консольного приложения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=132991#p132991</link>
			<description><![CDATA[<div class="quotebox"><cite>svoboden пишет:</cite><blockquote><p>Не, мне нужно через свою DLL-лку вызывать консольные команды.</p></blockquote></div><p>Я так и понял. Но с какой консолью они будут работать? Создайте её указанной командой, а потом вызывайте функции из DLL.</p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Wed, 20 Mar 2019 07:26:17 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=132991#p132991</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: запуск консольного приложения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=132990#p132990</link>
			<description><![CDATA[<p>Не, мне нужно через свою DLL-лку вызывать консольные команды. Но понятно, что, наверное, как на cpp не получится.<br /></p><div class="quotebox"><cite>YMP пишет:</cite><blockquote><p>ведь для других скриптов вам консоль не нужна.</p></blockquote></div><p>Почему, мне нужна.</p>]]></description>
			<author><![CDATA[null@example.com (svoboden)]]></author>
			<pubDate>Wed, 20 Mar 2019 06:58:08 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=132990#p132990</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: запуск консольного приложения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=132988#p132988</link>
			<description><![CDATA[<p>Нет, через<br /></p><div class="codebox"><pre><code>
DllCall(&quot;AllocConsole&quot;)
</code></pre></div><p>А помечать экзешник не надо, ведь для других скриптов вам консоль не нужна.</p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Wed, 20 Mar 2019 06:17:07 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=132988#p132988</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: запуск консольного приложения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=132987#p132987</link>
			<description><![CDATA[<p><strong>YMP</strong>, я что-то не понимаю, это как - вручную. Через команду Run, что-ли?</p>]]></description>
			<author><![CDATA[null@example.com (svoboden)]]></author>
			<pubDate>Wed, 20 Mar 2019 05:53:53 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=132987#p132987</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: запуск консольного приложения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=132985#p132985</link>
			<description><![CDATA[<p>По идее, нужно создать консоль вручную, т.к. AutoHotkey.exe не помечен как консольное приложение, в отличие от вашей С++ проги, и автоматически для него консоль Винда не создаст.</p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Wed, 20 Mar 2019 05:30:24 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=132985#p132985</guid>
		</item>
		<item>
			<title><![CDATA[AHK: запуск консольного приложения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=132984#p132984</link>
			<description><![CDATA[<p>Добрый день! Вопрос такой: &quot;В общем, создал я незамысловатую DLL.<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>#include &lt;Windows.h&gt;
#include &lt;iostream&gt;

using namespace std;

// Главная функция
BOOL WINAPI DllMain(HINSTANCE hDll, DWORD dwReason, LPVOID lpReserved)
{
  switch(dwReason)
  {
    case DLL_PROCESS_ATTACH:
      break;
    case DLL_THREAD_ATTACH:
      break;
    case DLL_THREAD_DETACH:
      break;
    case DLL_PROCESS_DETACH:
      break;
  }
  return TRUE;
}

extern &quot;C&quot; __declspec(dllexport) void summa(void)
{
   float summ = 0;
 
   cout &lt;&lt; &quot;Vvedite summu: &quot;;
   cin &gt;&gt; summ;
   if (summ &lt;= 1000)
   {
      cout &lt;&lt; &quot;Summa = &quot; &lt;&lt; summ &lt;&lt; endl;
   }
   else if (summ &gt; 1500)
   {
      cout &lt;&lt; &quot;Summa = &quot; &lt;&lt; (summ * 0.93) &lt;&lt; endl;
   }
   else
   {
      cout &lt;&lt; &quot;Summa = &quot; &lt;&lt; (summ * 0.97) &lt;&lt; endl;
   }
}</code></pre></div></div></div><p>Вызываю через LoadLibrary, понятно, как.<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>#include &lt;Windows.h&gt;
#include &lt;iostream&gt;
#include &lt;tchar.h&gt;

using namespace std;

int main()
{
  // Дескриптор DLL-библиотеки
  HMODULE hDll;
  // Указатель на функцию
  void (*dllsumma) (void);

  // Загружаем динамически подключаемую библиотеку
  hDll = LoadLibrary(_T(&quot;Dll.dll&quot;));
  if(!hDll)
  {
    cout &lt;&lt; _T(&quot;Динамическая библиотека не загружена&quot;) &lt;&lt; endl;
    return GetLastError();
  }
  // Настраиваем адрес функции
  dllsumma = (void (*)(void))GetProcAddress(hDll, &quot;summa&quot;);
  if(!dllsumma)
  {
    cout &lt;&lt; _T(&quot;Ошибка получения адреса функции&quot;) &lt;&lt; endl;
    return GetLastError();
  }
  // Вызываем функцию из библиотеки
   dllsumma();

  // Отключаем библиотеку
  if(!FreeLibrary(hDll))
  {
    cout &lt;&lt; _T(&quot;Ошибка выгрузки библиотеки из памяти&quot;) &lt;&lt; endl;
    return GetLastError();
  }
  // Устанавливаем паузу перед завершением программы
  system(&quot;pause&quot;);
  return 0;
}</code></pre></div></div></div><p>Все работает. Но, вызываю на ahk:<br /></p><div class="codebox"><pre><code>hModule := DllCall(&quot;LoadLibrary&quot;, &quot;Str&quot;, &quot;DLL.dll&quot;)
testfunc := DllCall(&quot;GetProcAddress&quot;, &quot;ptr&quot;, hModule, &quot;Astr&quot;, &quot;summa&quot;)
DllCall(testfunc)</code></pre></div><p>И, понятное дело, не работает.<br />Вопрос такой:<br />&quot;Как вызвать консольную программу из DLL&quot;.<br />Заранее спасибо!</p>]]></description>
			<author><![CDATA[null@example.com (svoboden)]]></author>
			<pubDate>Wed, 20 Mar 2019 03:42:25 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=132984#p132984</guid>
		</item>
	</channel>
</rss>
