<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Запись экрана в видеофайл Directx9/11+Microsoft Media Foundation]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=15098</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=15098&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Запись экрана в видеофайл Directx9/11+Microsoft Media Foundation».]]></description>
		<lastBuildDate>Sat, 13 May 2023 16:55:56 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Запись экрана в видеофайл Directx9/11+Microsoft Media Foundation]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=158180#p158180</link>
			<description><![CDATA[<p>О, спасибо!<br />Тут бы методом тыка не получилось бы добавить.)</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Sat, 13 May 2023 16:55:56 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=158180#p158180</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Запись экрана в видеофайл Directx9/11+Microsoft Media Foundation]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=158177#p158177</link>
			<description><![CDATA[<p>Надо типа так:<br /></p><div class="codebox"><pre><code>loop
{
   hr := IDXGIFactory_EnumAdapters(IDXGIFactory, A_Index-1, IDXGIAdapter)
   if (hr = &quot;DXGI_ERROR_NOT_FOUND&quot;)
      break
   loop
   {
      hr := IDXGIAdapter_EnumOutputs(IDXGIAdapter, A_Index-1, IDXGIOutput)
      if (hr = &quot;DXGI_ERROR_NOT_FOUND&quot;)
         break
      VarSetCapacity(DXGI_OUTPUT_DESC, 88+A_PtrSize, 0)
      IDXGIOutput_GetDesc(IDXGIOutput, &amp;DXGI_OUTPUT_DESC)
      AttachedToDesktop := NumGet(DXGI_OUTPUT_DESC, 80, &quot;int&quot;)
      if (AttachedToDesktop = 1)
      {
         width := NumGet(DXGI_OUTPUT_DESC, 72, &quot;int&quot;) - NumGet(DXGI_OUTPUT_DESC, 64, &quot;int&quot;)
         height := NumGet(DXGI_OUTPUT_DESC, 76, &quot;int&quot;) - NumGet(DXGI_OUTPUT_DESC, 68, &quot;int&quot;)
         list .= IDXGIAdapter &quot;,&quot; IDXGIOutput &quot;,&quot; width &quot;,&quot; height &quot;`n&quot;
      }
   }
}
msgbox % list

IDXGIFactory_EnumAdapters(this, Adapter, ByRef ppAdapter)
{
   hr := DllCall(NumGet(NumGet(this+0)+7*A_PtrSize), &quot;ptr&quot;, this, &quot;uint&quot;, Adapter, &quot;ptr*&quot;, ppAdapter)
   if hr or ErrorLevel
   {
      if !ErrorLevel
      {
         if (hr&amp;=0xFFFFFFFF) = 0x887A0002   ; DXGI_ERROR_NOT_FOUND
            return &quot;DXGI_ERROR_NOT_FOUND&quot;
      }
      _Error(A_ThisFunc &quot; error: &quot; hr &quot;`nErrorLevel: &quot; ErrorLevel)
   }
}

IDXGIAdapter_EnumOutputs(this, Output, ByRef ppOutput)
{
   hr := DllCall(NumGet(NumGet(this+0)+7*A_PtrSize), &quot;ptr&quot;, this, &quot;uint&quot;, Output, &quot;ptr*&quot;, ppOutput)
   if hr or ErrorLevel
   {
      if !ErrorLevel
      {
         if (hr&amp;=0xFFFFFFFF) = 0x887A0002   ; DXGI_ERROR_NOT_FOUND
            return &quot;DXGI_ERROR_NOT_FOUND&quot;
      }
      _Error(A_ThisFunc &quot; error: &quot; hr &quot;`nErrorLevel: &quot; ErrorLevel)
   }
}</code></pre></div><p>Только не нужно забывать вызывать ObjRelease для неиспользуемых IDXGIAdapter и IDXGIOutput.<br />Я их в коде забыл прописать. Сейчас прописал.</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Sat, 13 May 2023 16:31:42 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=158177#p158177</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Запись экрана в видеофайл Directx9/11+Microsoft Media Foundation]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=158172#p158172</link>
			<description><![CDATA[<div class="quotebox"><cite>Malcev пишет:</cite><blockquote><p>А как координаты огут быть отрицательными?</p></blockquote></div><p>Экранные, относительно главного монитора.<br /></p><div class="quotebox"><cite>Malcev пишет:</cite><blockquote><p>Если несколько дисплеев, то их перечисление происходит тут:</p></blockquote></div><p>Тут только первый берётся. А не сложно поправить на все мониторы? Так понял надо как то получить все мониторы, и потом координаты относительно монитора и сам монитор указывать для записи.<br />Попробовал так. второй MsgBox выдаёт ноль.<br /></p><div class="codebox"><pre><code>loop
{
	IDXGIFactory_EnumAdapters(IDXGIFactory, A_Index-1, IDXGIAdapter)
	loop
	{
		hr := IDXGIAdapter_EnumOutputs(IDXGIAdapter, A_Index-1, IDXGIOutput)
		if (hr = &quot;DXGI_ERROR_NOT_FOUND&quot;)
			break
		VarSetCapacity(DXGI_OUTPUT_DESC, 88+A_PtrSize, 0)
		IDXGIOutput_GetDesc(IDXGIOutput, &amp;DXGI_OUTPUT_DESC)
		Width := NumGet(DXGI_OUTPUT_DESC, 72, &quot;int&quot;)
		Height := NumGet(DXGI_OUTPUT_DESC, 76, &quot;int&quot;)
		AttachedToDesktop := NumGet(DXGI_OUTPUT_DESC, 80, &quot;int&quot;)
		; if (AttachedToDesktop = 1)
			; break           
		MsgBox % Width
	}
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Sat, 13 May 2023 09:39:33 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=158172#p158172</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Запись экрана в видеофайл Directx9/11+Microsoft Media Foundation]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=158168#p158168</link>
			<description><![CDATA[<p>А как координаты огут быть отрицательными?<br />Если несколько дисплеев, то их перечисление происходит тут:<br /></p><div class="codebox"><pre><code>loop
{
   IDXGIFactory_EnumAdapters(IDXGIFactory, A_Index-1, IDXGIAdapter)
   loop
   {
      hr := IDXGIAdapter_EnumOutputs(IDXGIAdapter, A_Index-1, IDXGIOutput)
      if (hr = &quot;DXGI_ERROR_NOT_FOUND&quot;)
         break
      VarSetCapacity(DXGI_OUTPUT_DESC, 88+A_PtrSize, 0)
      IDXGIOutput_GetDesc(IDXGIOutput, &amp;DXGI_OUTPUT_DESC)
      Width := NumGet(DXGI_OUTPUT_DESC, 72, &quot;int&quot;)
      Height := NumGet(DXGI_OUTPUT_DESC, 76, &quot;int&quot;)
      AttachedToDesktop := NumGet(DXGI_OUTPUT_DESC, 80, &quot;int&quot;)
      if (AttachedToDesktop = 1)
         break 2         
   }
}</code></pre></div><p>Скрипт берет первый.</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Sat, 13 May 2023 09:05:44 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=158168#p158168</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Запись экрана в видеофайл Directx9/11+Microsoft Media Foundation]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=158166#p158166</link>
			<description><![CDATA[<p><strong>Malcev</strong><br />Привет!<br />У меня ошибка при отрицательных координатах, возможно как то исправить?<br /></p><div class="quotebox"><blockquote><p>DirectX 11 + DXGI.ahk<br />---------------------------<br />ID3D11DeviceContext_Map error: -2005270523<br />ErrorLevel: 0</p></blockquote></div>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Sat, 13 May 2023 06:02:09 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=158166#p158166</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Запись экрана в видеофайл Directx9/11+Microsoft Media Foundation]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=157237#p157237</link>
			<description><![CDATA[<div class="quotebox"><cite>Malcev пишет:</cite><blockquote><p>Понадобилось тут исключить окно из записи экрана и оказалось, что SetWindowDisplayAffinity не работает с окнами использующими UpdateLayeredWindow.</p></blockquote></div><p>Не копал больше по теме исключения окон?</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Sun, 19 Mar 2023 09:55:43 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=157237#p157237</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Запись экрана в видеофайл Directx9/11+Microsoft Media Foundation]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=156908#p156908</link>
			<description><![CDATA[<p>Добавлен пример с запуском/остановкой записи и выбором области захвата с помощью горячих клавиш.</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Sat, 25 Feb 2023 06:29:43 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=156908#p156908</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Запись экрана в видеофайл Directx9/11+Microsoft Media Foundation]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=151703#p151703</link>
			<description><![CDATA[<div class="quotebox"><cite>teadrinker пишет:</cite><blockquote><p>В смысле, нужно как-то пропатчить существующий процесс dwm.exe? Ты пробовал?</p></blockquote></div><p>Если версия Виндовса ниже чем Windows 10 Version 2004, то можно и пропатчить, но я не пробовал.<br /></p><div class="quotebox"><cite>teadrinker пишет:</cite><blockquote><p>Эта фраза понятна только тому, кто погружён в тему. Какие именно флаги меняет, и где?</p></blockquote></div><p>Да я и сам только поверхностно пробежался.<br />Как я понимаю у обычных приложений изображение показывается через DWM swapchain&nbsp; и соответственно на те окна на которые наложены SetWindowDisplayAffinity, dwm устанавливает в swapchain&nbsp; нужные флаги.<br />Вот тут есть кое-какая информация.<br /><a href="https://jackmin.home.blog/2018/12/14/swapchains-present-and-present-latency/">https://jackmin.home.blog/2018/12/14/sw … t-latency/</a></p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Fri, 21 Jan 2022 12:11:59 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=151703#p151703</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Запись экрана в видеофайл Directx9/11+Microsoft Media Foundation]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=151700#p151700</link>
			<description><![CDATA[<p>В смысле, нужно как-то пропатчить существующий процесс dwm.exe? Ты пробовал?<br /></p><div class="quotebox"><cite>Malcev пишет:</cite><blockquote><p>Как оказалось SetWindowDisplayAffinity просто меняет флаги на DXGI_SWAP_CHAIN_FLAG_DISPLAY_ONLY и DXGI_SWAP_CHAIN_FLAG_HW_PROTECTED соответственно</p></blockquote></div><p>Эта фраза понятна только тому, кто погружён в тему. Какие именно флаги меняет, и где?</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Fri, 21 Jan 2022 11:12:38 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=151700#p151700</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Запись экрана в видеофайл Directx9/11+Microsoft Media Foundation]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=151697#p151697</link>
			<description><![CDATA[<p>Как оказалось SetWindowDisplayAffinity просто меняет флаги на DXGI_SWAP_CHAIN_FLAG_DISPLAY_ONLY и DXGI_SWAP_CHAIN_FLAG_HW_PROTECTED соответственно.<br /><a href="https://docs.microsoft.com/en-us/windows/win32/api/dxgi/ne-dxgi-dxgi_swap_chain_flag">https://docs.microsoft.com/en-us/window … chain_flag</a><br /></p><div class="quotebox"><cite>teadrinker пишет:</cite><blockquote><p>Пока не нашёл, где WDA_EXCLUDEFROMCAPTURE определено.</p></blockquote></div><p>Тут. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" />))<br /></p><div class="quotebox"><blockquote><p>nothing special, just a trick that makes WDA_MONITOR window transparent instead of black rekted (tested on win10 version 10.0.17763.973)</p></blockquote></div><div class="codebox"><pre><code>    auto c1(xParseByteArray(&quot;48 89 5C 24 08 57 48 83 EC 30 49 8B C0 48 8B FA 48 8B D0 4C 8D 05 CC CC CC CC 48 8B CF E8 CC CC CC CC 8B D8 85 C0 78 09&quot;));
     
    auto c2(xParseByteArray(&quot;48 89 5C 24 08 57 48 83 EC 30 49 8B C0 48 8B FA 48 8B D0 4C 8D 05 CC CC CC CC 48 8B CF B8 00 00 00 00 8B D8 85 C0 78 09&quot;));
     
    xPatchProcess(L&quot;dwm.exe&quot;, c1, c2, NULL, 0);</code></pre></div><p><a href="https://www.unknowncheats.me/forum/general-programming-and-reversing/374636-transparent-wda_monitor.html">https://www.unknowncheats.me/forum/gene … nitor.html</a></p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Fri, 21 Jan 2022 02:05:22 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=151697#p151697</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Запись экрана в видеофайл Directx9/11+Microsoft Media Foundation]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=151688#p151688</link>
			<description><![CDATA[<p>Понадобилось тут исключить окно из записи экрана и оказалось, что SetWindowDisplayAffinity не работает с окнами использующими UpdateLayeredWindow.</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Thu, 20 Jan 2022 04:00:39 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=151688#p151688</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Запись экрана в видеофайл Directx9/11+Microsoft Media Foundation]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=137875#p137875</link>
			<description><![CDATA[<p>Да.</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Mon, 17 Feb 2020 11:39:37 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=137875#p137875</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Запись экрана в видеофайл Directx9/11+Microsoft Media Foundation]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=137874#p137874</link>
			<description><![CDATA[<div class="quotebox"><cite>Malcev пишет:</cite><blockquote><p>это апи используется только для ретранслирования изображения с Thumbnail  в наше окно</p></blockquote></div><p>Значит я не понял в каком контексте по ссылке на гитхабе оно упоминалось. Просто вспомнил что как то использовал для отображения сразу нескольких окон, и нагрузки на проц совсем не было.<br />А апи лупы обсуждалось чтобы потом в колбеке битмап получать?</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Mon, 17 Feb 2020 10:11:54 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=137874#p137874</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Запись экрана в видеофайл Directx9/11+Microsoft Media Foundation]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=137869#p137869</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>This API will start being available in 20H1, I don&#039;t believe any new capture features are showing up in 19H2.</p></blockquote></div><p><a href="https://github.com/microsoft/Windows.UI.Composition-Win32-Samples/issues/44">https://github.com/microsoft/Windows.UI … /issues/44</a></p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Mon, 17 Feb 2020 01:34:07 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=137869#p137869</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Запись экрана в видеофайл Directx9/11+Microsoft Media Foundation]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=137868#p137868</link>
			<description><![CDATA[<p>Пока не нашёл, где WDA_EXCLUDEFROMCAPTURE определено.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Mon, 17 Feb 2020 01:22:39 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=137868#p137868</guid>
		</item>
	</channel>
</rss>
