<?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=18014&amp;type=atom" />
	<updated>2023-12-06T09:24:05Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=18014</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: при закрытии чужого окна минимизировать его]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=159655#p159655" />
			<content type="html"><![CDATA[<p>Спасибо, большое, всем откликнувшимся, но для меня это слишком сложно. Но, если бы кто-то реализовал такое да еще для окна любого приложения, то можно было бы написать что-то вроде Minimize(Close) To Tray. Хотя мне было бы достаточно для Firefox.</p>]]></content>
			<author>
				<name><![CDATA[Samotek]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=32672</uri>
			</author>
			<updated>2023-12-06T09:24:05Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=159655#p159655</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: при закрытии чужого окна минимизировать его]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=159621#p159621" />
			<content type="html"><![CDATA[<p>Попробовал ещё с Edge, минимизацию перехватывает, после закрытия крашится.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2023-12-03T14:23:39Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=159621#p159621</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: при закрытии чужого окна минимизировать его]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=159620#p159620" />
			<content type="html"><![CDATA[<p>Возможно у броузеров дополнительная защита стоит, так как с хромом и фаерфоксом у меня стало срабатывать только после запуска через uia.</p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2023-12-03T14:20:23Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=159620#p159620</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: при закрытии чужого окна минимизировать его]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=159619#p159619" />
			<content type="html"><![CDATA[<p>Со стандартными окнами работает, без UIA.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2023-12-03T14:19:09Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=159619#p159619</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: при закрытии чужого окна минимизировать его]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=159618#p159618" />
			<content type="html"><![CDATA[<p>Запускал, у меня нет разницы.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2023-12-03T14:17:41Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=159618#p159618</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: при закрытии чужого окна минимизировать его]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=159616#p159616" />
			<content type="html"><![CDATA[<p>У меня всегда перехватывает HCBT_MINMAX.<br />Пробуй запускать через UIA.</p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2023-12-03T14:13:55Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=159616#p159616</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: при закрытии чужого окна минимизировать его]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=159615#p159615" />
			<content type="html"><![CDATA[<p>У меня один раз перехватило сворачивание, и больше с FF не работало.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2023-12-03T14:03:44Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=159615#p159615</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: при закрытии чужого окна минимизировать его]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=159613#p159613" />
			<content type="html"><![CDATA[<p>Хотя HCBT_SYSCOMMAND у меня пресекается, возможно надо через uia запускать.<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><p>Компилирую через:<br /></p><div class="codebox"><pre><code>C:\TDM-GCC-64\bin\gcc -c source.cpp
C:\TDM-GCC-64\bin\gcc -shared -o mydll.dll source.o</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2023-12-03T13:51:39Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=159613#p159613</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: при закрытии чужого окна минимизировать его]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=159612#p159612" />
			<content type="html"><![CDATA[<p>Да, тоже так думаю.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2023-12-03T13:46:53Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=159612#p159612</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: при закрытии чужого окна минимизировать его]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=159607#p159607" />
			<content type="html"><![CDATA[<p><strong>teadrinker</strong>, да, с броузерами похоже такое не прокатывает, наверное посылаются сообщения о закрытии в другие потоки, не дожидаясь ответа.</p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2023-12-03T02:17:46Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=159607#p159607</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: при закрытии чужого окна минимизировать его]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=159606#p159606" />
			<content type="html"><![CDATA[<p>Да, попутал, она же в процессе ахк выполняется.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2023-12-02T22:49:39Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=159606#p159606</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: при закрытии чужого окна минимизировать его]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=159605#p159605" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p>только для окон своего процесса</p></blockquote></div><p>Для какого — своего? Мы же окно чужого процесса отлавливаем. Когда для своего, dll не нужно писать.<br />С инжектом не пробовал.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2023-12-02T22:36:35Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=159605#p159605</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: при закрытии чужого окна минимизировать его]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=159604#p159604" />
			<content type="html"><![CDATA[<p>Там разве нельзя указать, что только для окон своего процесса, чтобы сделать немного универсальнее. Или с реестра читать свои настройки.<br />И с инжектом не пробовал?</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2023-12-02T21:24:55Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=159604#p159604</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: при закрытии чужого окна минимизировать его]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=159602#p159602" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Malcev пишет:</cite><blockquote><p>Я бы для данной задачи использовал WH_CBT хук.</p></blockquote></div><p>Попробовал WH_CBT. С блокнотом работает так:<br /></p><div class="codebox"><pre><code>#include &lt;Windows.h&gt;

extern &quot;C&quot; __declspec(dllexport) LRESULT CALLBACK CBTProc(int nCode, WPARAM wParam, LPARAM lParam)
{
    if (nCode == HCBT_SYSCOMMAND &amp;&amp; wParam == SC_CLOSE)
    {
        HWND hWnd = GetForegroundWindow();
        char className[256];
        GetClassNameA(hWnd, className, 256);

        if (strcmp(className, &quot;Notepad&quot;) == 0)
        {
            bool hasOtherWindows = false;
            HWND hWndOther = FindWindowA(&quot;Notepad&quot;, NULL);
            while (hWndOther != NULL)
            {
                if (hWndOther != hWnd)
                {
                    hasOtherWindows = true;
                    break;
                }
                hWndOther = FindWindowExA(NULL, hWndOther, &quot;Notepad&quot;, NULL);
            }

            if (!hasOtherWindows)
            {
                ShowWindow(hWnd, SW_MINIMIZE);
                return 1;
            }
        }
    }

    return CallNextHookEx(NULL, nCode, wParam, lParam);
}</code></pre></div><p>И так:<br /></p><div class="codebox"><pre><code>#include &lt;Windows.h&gt;

extern &quot;C&quot; __declspec(dllexport) LRESULT CALLBACK CBTProc(int nCode, WPARAM wParam, LPARAM lParam)
{
    if (nCode == HCBT_DESTROYWND)
    {
        HWND hWnd = (HWND)wParam;
        char className[256];
        GetClassNameA(hWnd, className, 256);
        
        if (strcmp(className, &quot;Notepad&quot;) == 0)
        {
            bool hasOtherWindows = false;
            HWND hWndOther = FindWindowA(&quot;Notepad&quot;, NULL);
            while (hWndOther != NULL)
            {
                if (hWndOther != hWnd)
                {
                    hasOtherWindows = true;
                    break;
                }
                hWndOther = FindWindowExA(NULL, hWndOther, &quot;Notepad&quot;, NULL);
            }

            if (!hasOtherWindows)
            {
                ShowWindow(hWnd, SW_MINIMIZE);
                return 1;
            }
        }
    }

    return CallNextHookEx(NULL, nCode, wParam, lParam);
}</code></pre></div><p>С FF ни один из этих вариантов не работает. HCBT_SYSCOMMAND вообще не перехватывает, а HCBT_DESTROYWND отлавливает, сначала вроде минимизируется, но потом исчезает.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2023-12-02T19:29:15Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=159602#p159602</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: при закрытии чужого окна минимизировать его]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=159599#p159599" />
			<content type="html"><![CDATA[<p>Думаю, самым простым (но некрасивым) будет решение поверх кнопки [X] целевого окна каким-то образом прикрепить свою кнопку [X], которая уже будет делать то, что нам нужно.</p>]]></content>
			<author>
				<name><![CDATA[ypppu]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=5974</uri>
			</author>
			<updated>2023-12-02T08:03:52Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=159599#p159599</id>
		</entry>
</feed>
