<?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=9722</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=9722&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: хук для отслеживания появления/закрытия окон в системе».]]></description>
		<lastBuildDate>Sat, 02 Mar 2024 15:08:08 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: хук для отслеживания появления/закрытия окон в системе]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=160445#p160445</link>
			<description><![CDATA[<div class="quotebox"><cite>Malcev пишет:</cite><blockquote><p>Пробуй получать адрес для CBTProc@12</p></blockquote></div><p>Ё моё, очевидно же, жпт только запутает больше, работает!</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Sat, 02 Mar 2024 15:08:08 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=160445#p160445</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: хук для отслеживания появления/закрытия окон в системе]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=160444#p160444</link>
			<description><![CDATA[<p>Если бы были ошибки, то компилятор бы ругался.<br />Пробуй получать адрес для CBTProc@12.</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Sat, 02 Mar 2024 13:46:32 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=160444#p160444</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: хук для отслеживания появления/закрытия окон в системе]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=160443#p160443</link>
			<description><![CDATA[<div class="quotebox"><cite>Malcev пишет:</cite><blockquote><p>проверил через какой-нибудь dll viewer какие функции в твоей dll присутствуют</p></blockquote></div><div class="quotebox"><blockquote><p>CBTProc	0x00000003601213a0	0x000013a0 </p><p>CBTProc@12	0x631c14b0	0x000014b0</p></blockquote></div><p>У х32 в конце @12.<br /></p><div class="quotebox"><blockquote><p>Ваш код должен компилироваться под 32-битную архитектуру, однако для этого вам понадобятся некоторые исправления. Когда вы пишете код под 32-битную архитектуру в системе Windows, операция __declspec(dllexport) обычно не требуется. Вам нужно также включить библиотеку User32.lib.</p></blockquote></div><p>Жпт так переделал под х32, видимо User32 не подключается, ещё советы давал, по всякому пробовал, но не выходит.<br /></p><div class="codebox"><pre><code>#include &lt;Windows.h&gt;

// Убираем __declspec(dllexport) для 32-битной архитектуры
LRESULT CALLBACK CBTProc(
    int nCode,
    WPARAM wParam,
    LPARAM lParam
)
{
    if (nCode &lt; 0) return CallNextHookEx(nullptr, nCode, wParam, lParam);

    switch (nCode)
    {
    case HCBT_DESTROYWND:
    case HCBT_SYSCOMMAND:
        return 1; // Prevent
    }
    return 0;
}

// Пример использования функции SetWindowsHookEx для установки хука
void SetupHook()
{
    // Для компиляции вам нужно будет включить библиотеку User32.lib при вызове компилятора (например, через опцию -luser32)
    HHOOK hHook = SetWindowsHookEx(WH_CBT, CBTProc, nullptr, GetCurrentThreadId());
    // ... Другой код ...
    UnhookWindowsHookEx(hHook);
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Sat, 02 Mar 2024 13:42:43 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=160443#p160443</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: хук для отслеживания появления/закрытия окон в системе]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=160442#p160442</link>
			<description><![CDATA[<p>У компа буду нескоро, но я бы первым делом проверил через какой-нибудь dll viewer какие функции в твоей dll присутствуют.</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Sat, 02 Mar 2024 13:26:21 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=160442#p160442</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: хук для отслеживания появления/закрытия окон в системе]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=160441#p160441</link>
			<description><![CDATA[<div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p>На х32 анк с этой dll ошибка LoadLibrary failed with 126</p></blockquote></div><p>Поправка, запускал анк из блокнота через RUN, кликом из проводника ошибка GetProcAddress failed with 127.<br />Забыл о проблеме рабочей папки для некоторых команд.<br />То есть обе выдают LoadLibrary failed with 193 при запуске с не своей битностью. Значит х32 всё таки грузится, но не может получить CBTProc.<br />DLL приложил.<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header"><strong>+</strong>&nbsp;код анк</div><div class="fancy_spoiler"><div class="codebox"><pre><code>if !hwnd := WinExist(&quot;ahk_exe notepad.exe&quot;)
	abort(&quot;no open notepads found&quot;)

if !hCBTDll := DllCall(&quot;LoadLibrary&quot;, &quot;Str&quot;, &quot;mydll.dll&quot;, &quot;Ptr&quot;)
	abort(&quot;LoadLibrary failed with &quot; A_LastError)

if !hCBTProc := DllCall(&quot;GetProcAddress&quot;, &quot;Ptr&quot;, hCBTDll, &quot;AStr&quot;, &quot;CBTProc&quot;, &quot;Ptr&quot;)
	abort(&quot;GetProcAddress failed with &quot; A_LastError)

threadId := DllCall(&quot;GetWindowThreadProcessId&quot;, &quot;Ptr&quot;, hwnd, &quot;Ptr&quot;, 0, &quot;UInt&quot;)

if !hHook := DllCall(&quot;SetWindowsHookEx&quot;, &quot;Int&quot;, WH_CBT := 5, &quot;Ptr&quot;, hCBTProc, &quot;Ptr&quot;, hCBTDll, &quot;UInt&quot;, threadId, &quot;Ptr&quot;)
	abort(&quot;SetWindowsHookEx failed with &quot; A_LastError)

MsgBox ur notepad is now unminimizable

Esc::
	DllCall(&quot;UnhookWindowsHookEx&quot;, &quot;Ptr&quot;, hHook)
	MsgBox ur notepad is once again minimizable
	ExitApp
return

abort(msg) {
	MsgBox % msg &quot;`n`n`nExiting&quot;
	ExitApp
}</code></pre></div></div></div>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Sat, 02 Mar 2024 10:09:13 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=160441#p160441</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: хук для отслеживания появления/закрытия окон в системе]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=160440#p160440</link>
			<description><![CDATA[<div class="quotebox"><cite>Malcev пишет:</cite><blockquote><p>Думаю, что запускать из: C:\TDM-GCC-32\bin.</p></blockquote></div><p>Ничего не получается, скачал уже отдельно i686-13.2.0-release-posix-dwarf-msvcrt-rt_v11-rev0.7z отсюда:<br /><a href="https://github.com/niXman/mingw-builds-binaries/releases">https://github.com/niXman/mingw-builds- … s/releases</a></p><p>Папку mingw32 из архива положил в C:\TDM-GCC-64, в папке bin создал папку gcc, закинул в неё source.cpp и cmd.exe.<br />Сmd из неё выдаёт DNS-сервер не является полномочным, также как и ранее из уже установленной ранее x86_64-w64-mingw32.<br /></p><div class="quotebox"><cite>Malcev пишет:</cite><blockquote><p>Думаю, что запускать из: C:\TDM-GCC-32\bin.</p></blockquote></div><p>У меня была x86_64-w64-mingw32, а не TDM-GCC-32.</p><br /><p>Запустил cmd от админа из C:\WINDOWS\system32.<br />Ввёл&nbsp; <em>cd C:\TDM-GCC-64\mingw32\bin\gcc</em>.<br />Ввёл <em>C:\TDM-GCC-64\mingw32\bin\gcc -c source.cpp -o source32.o</em>, source32.o создалось.<br />Ввёл <em>C:\TDM-GCC-64\mingw32\bin\gcc -m32 -shared -o mydll32.dll source32.o</em>, mydll32.dll создалось. <br />На х32 анк с этой dll ошибка LoadLibrary failed with 126, также как если х64 dll грузить на х32 анк. На х64 анк ошибка LoadLibrary failed with 193 если что.<br />Рабочая х64 dll весит 98кб, эта х32 37кб.</p><p>Может что то в коде С++ про битность надо прописывать?<br /><strong>source.cpp</strong><br /></p><div class="codebox"><pre><code>#include &lt;Windows.h&gt;

extern &quot;C&quot; __declspec(dllexport) LRESULT CALLBACK CBTProc(
	_In_ int    nCode,
	_In_ WPARAM wParam,
	_In_ LPARAM lParam
)
{
	if (nCode &lt; 0) return CallNextHookEx(nullptr, nCode, wParam, lParam);

	switch(nCode)
	{
		case HCBT_DESTROYWND:
		case HCBT_SYSCOMMAND:
			return 1; // Prevent
	}
	return 0;
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Sat, 02 Mar 2024 09:49:12 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=160440#p160440</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: хук для отслеживания появления/закрытия окон в системе]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=159964#p159964</link>
			<description><![CDATA[<p>PostMessage не ждёт ответа, и код выполняется дальше, SendMessage ждёт, то есть работает синхронно.<br />Ну это не суть наверное, если получится PostMessage, значит SendMessage тоже.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Thu, 18 Jan 2024 16:26:38 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=159964#p159964</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: хук для отслеживания появления/закрытия окон в системе]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=159956#p159956</link>
			<description><![CDATA[<p>Поспрашивай у чат гпт как отправлять оконные сообщения из c++.<br />На счет синхронности не совсем понял, что ты имеешь в виду?</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Thu, 18 Jan 2024 10:20:36 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=159956#p159956</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: хук для отслеживания появления/закрытия окон в системе]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=159955#p159955</link>
			<description><![CDATA[<div class="quotebox"><cite>Malcev пишет:</cite><blockquote><p>Можно попробовать через postmessage.</p></blockquote></div><p>Ну такое пробовать только бывалым, вроде тебя. <br />И как понял post не подразумевает синхронность.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Wed, 17 Jan 2024 20:54:23 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=159955#p159955</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: хук для отслеживания появления/закрытия окон в системе]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=159954#p159954</link>
			<description><![CDATA[<div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p>Передать параметры какие сообщения надо отслеживать</p></blockquote></div><p>Сомневаюсь.<br /></p><div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p>получать уведомления в анк какое сообщение было и какое окно.</p></blockquote></div><p>Можно попробовать через postmessage.</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Wed, 17 Jan 2024 20:48:28 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=159954#p159954</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: хук для отслеживания появления/закрытия окон в системе]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=159953#p159953</link>
			<description><![CDATA[<p>А есть варианты этот хук (dll) связать со скриптом? <br />Передать параметры какие сообщения надо отслеживать, получать уведомления в анк какое сообщение было и какое окно.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Wed, 17 Jan 2024 15:52:34 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=159953#p159953</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: хук для отслеживания появления/закрытия окон в системе]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=159952#p159952</link>
			<description><![CDATA[<p>Такой нет, надо с установкой разбираться.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Wed, 17 Jan 2024 12:51:18 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=159952#p159952</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: хук для отслеживания появления/закрытия окон в системе]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=159951#p159951</link>
			<description><![CDATA[<p>Думаю, что запускать из: C:\TDM-GCC-32\bin.</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Wed, 17 Jan 2024 12:00:50 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=159951#p159951</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: хук для отслеживания появления/закрытия окон в системе]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=159950#p159950</link>
			<description><![CDATA[<p>Что то получилось!<br />Блокнот как вкопаный. )<br /></p><div class="codebox"><pre><code>if !hwnd := WinExist(&quot;ahk_exe notepad.exe&quot;)
	abort(&quot;no open notepads found&quot;)

if !hCBTDll := DllCall(&quot;LoadLibrary&quot;, &quot;Str&quot;, &quot;mydll.dll&quot;, &quot;Ptr&quot;)
	abort(&quot;LoadLibrary failed with &quot; A_LastError)

if !hCBTProc := DllCall(&quot;GetProcAddress&quot;, &quot;Ptr&quot;, hCBTDll, &quot;AStr&quot;, &quot;CBTProc&quot;, &quot;Ptr&quot;)
	abort(&quot;GetProcAddress failed with &quot; A_LastError)

threadId := DllCall(&quot;GetWindowThreadProcessId&quot;, &quot;Ptr&quot;, hwnd, &quot;Ptr&quot;, 0, &quot;UInt&quot;)

if !hHook := DllCall(&quot;SetWindowsHookEx&quot;, &quot;Int&quot;, WH_CBT := 5, &quot;Ptr&quot;, hCBTProc, &quot;Ptr&quot;, hCBTDll, &quot;UInt&quot;, threadId, &quot;Ptr&quot;)
	abort(&quot;SetWindowsHookEx failed with &quot; A_LastError)

MsgBox ur notepad is now unminimizable

Esc::
	DllCall(&quot;UnhookWindowsHookEx&quot;, &quot;Ptr&quot;, hHook)
	MsgBox ur notepad is once again minimizable
	ExitApp
return

abort(msg) {
	MsgBox % msg &quot;`n`n`nExiting&quot;
	ExitApp
}</code></pre></div><p>Я так понял битность длл, анк и процесса окна должны совпадать?<br />И как сделать длл под 32 бита?</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Wed, 17 Jan 2024 11:20:09 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=159950#p159950</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: хук для отслеживания появления/закрытия окон в системе]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=159943#p159943</link>
			<description><![CDATA[<p>Cmd надо запускать из папки, где лежит gcc.</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Tue, 16 Jan 2024 10:52:23 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=159943#p159943</guid>
		</item>
	</channel>
</rss>
