<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: запуск консольного приложения]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=14657&amp;type=atom" />
	<updated>2019-03-20T08:05:37Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=14657</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: запуск консольного приложения]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=132994#p132994" />
			<content type="html"><![CDATA[<p>Ну, я думал, что есть консольный autohotkey.</p>]]></content>
			<author>
				<name><![CDATA[svoboden]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=34280</uri>
			</author>
			<updated>2019-03-20T08:05:37Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=132994#p132994</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: запуск консольного приложения]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=132991#p132991" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>svoboden пишет:</cite><blockquote><p>Не, мне нужно через свою DLL-лку вызывать консольные команды.</p></blockquote></div><p>Я так и понял. Но с какой консолью они будут работать? Создайте её указанной командой, а потом вызывайте функции из DLL.</p>]]></content>
			<author>
				<name><![CDATA[YMP]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=81</uri>
			</author>
			<updated>2019-03-20T07:26:17Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=132991#p132991</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: запуск консольного приложения]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=132990#p132990" />
			<content type="html"><![CDATA[<p>Не, мне нужно через свою DLL-лку вызывать консольные команды. Но понятно, что, наверное, как на cpp не получится.<br /></p><div class="quotebox"><cite>YMP пишет:</cite><blockquote><p>ведь для других скриптов вам консоль не нужна.</p></blockquote></div><p>Почему, мне нужна.</p>]]></content>
			<author>
				<name><![CDATA[svoboden]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=34280</uri>
			</author>
			<updated>2019-03-20T06:58:08Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=132990#p132990</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: запуск консольного приложения]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=132988#p132988" />
			<content type="html"><![CDATA[<p>Нет, через<br /></p><div class="codebox"><pre><code>
DllCall(&quot;AllocConsole&quot;)
</code></pre></div><p>А помечать экзешник не надо, ведь для других скриптов вам консоль не нужна.</p>]]></content>
			<author>
				<name><![CDATA[YMP]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=81</uri>
			</author>
			<updated>2019-03-20T06:17:07Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=132988#p132988</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: запуск консольного приложения]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=132987#p132987" />
			<content type="html"><![CDATA[<p><strong>YMP</strong>, я что-то не понимаю, это как - вручную. Через команду Run, что-ли?</p>]]></content>
			<author>
				<name><![CDATA[svoboden]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=34280</uri>
			</author>
			<updated>2019-03-20T05:53:53Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=132987#p132987</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: запуск консольного приложения]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=132985#p132985" />
			<content type="html"><![CDATA[<p>По идее, нужно создать консоль вручную, т.к. AutoHotkey.exe не помечен как консольное приложение, в отличие от вашей С++ проги, и автоматически для него консоль Винда не создаст.</p>]]></content>
			<author>
				<name><![CDATA[YMP]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=81</uri>
			</author>
			<updated>2019-03-20T05:30:24Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=132985#p132985</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: запуск консольного приложения]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=132984#p132984" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[svoboden]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=34280</uri>
			</author>
			<updated>2019-03-20T03:42:25Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=132984#p132984</id>
		</entry>
</feed>
