<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Запись экрана в видеофайл Directx9/11+Microsoft Media Foundation]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=15098&amp;type=atom" />
	<updated>2023-05-13T16:55:56Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=15098</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Запись экрана в видеофайл Directx9/11+Microsoft Media Foundation]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=158180#p158180" />
			<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-05-13T16:55:56Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=158180#p158180</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Запись экрана в видеофайл Directx9/11+Microsoft Media Foundation]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=158177#p158177" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2023-05-13T16:31:42Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=158177#p158177</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Запись экрана в видеофайл Directx9/11+Microsoft Media Foundation]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=158172#p158172" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2023-05-13T09:39:33Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=158172#p158172</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Запись экрана в видеофайл Directx9/11+Microsoft Media Foundation]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=158168#p158168" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2023-05-13T09:05:44Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=158168#p158168</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Запись экрана в видеофайл Directx9/11+Microsoft Media Foundation]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=158166#p158166" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2023-05-13T06:02:09Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=158166#p158166</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Запись экрана в видеофайл Directx9/11+Microsoft Media Foundation]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=157237#p157237" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Malcev пишет:</cite><blockquote><p>Понадобилось тут исключить окно из записи экрана и оказалось, что SetWindowDisplayAffinity не работает с окнами использующими UpdateLayeredWindow.</p></blockquote></div><p>Не копал больше по теме исключения окон?</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2023-03-19T09:55:43Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=157237#p157237</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Запись экрана в видеофайл Directx9/11+Microsoft Media Foundation]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=156908#p156908" />
			<content type="html"><![CDATA[<p>Добавлен пример с запуском/остановкой записи и выбором области захвата с помощью горячих клавиш.</p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2023-02-25T06:29:43Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=156908#p156908</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Запись экрана в видеофайл Directx9/11+Microsoft Media Foundation]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=151703#p151703" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2022-01-21T12:11:59Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=151703#p151703</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Запись экрана в видеофайл Directx9/11+Microsoft Media Foundation]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=151700#p151700" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2022-01-21T11:12:38Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=151700#p151700</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Запись экрана в видеофайл Directx9/11+Microsoft Media Foundation]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=151697#p151697" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2022-01-21T02:05:22Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=151697#p151697</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Запись экрана в видеофайл Directx9/11+Microsoft Media Foundation]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=151688#p151688" />
			<content type="html"><![CDATA[<p>Понадобилось тут исключить окно из записи экрана и оказалось, что SetWindowDisplayAffinity не работает с окнами использующими UpdateLayeredWindow.</p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2022-01-20T04:00:39Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=151688#p151688</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Запись экрана в видеофайл Directx9/11+Microsoft Media Foundation]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=137875#p137875" />
			<content type="html"><![CDATA[<p>Да.</p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2020-02-17T11:39:37Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=137875#p137875</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Запись экрана в видеофайл Directx9/11+Microsoft Media Foundation]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=137874#p137874" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Malcev пишет:</cite><blockquote><p>это апи используется только для ретранслирования изображения с Thumbnail  в наше окно</p></blockquote></div><p>Значит я не понял в каком контексте по ссылке на гитхабе оно упоминалось. Просто вспомнил что как то использовал для отображения сразу нескольких окон, и нагрузки на проц совсем не было.<br />А апи лупы обсуждалось чтобы потом в колбеке битмап получать?</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2020-02-17T10:11:54Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=137874#p137874</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Запись экрана в видеофайл Directx9/11+Microsoft Media Foundation]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=137869#p137869" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2020-02-17T01:34:07Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=137869#p137869</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Запись экрана в видеофайл Directx9/11+Microsoft Media Foundation]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=137868#p137868" />
			<content type="html"><![CDATA[<p>Пока не нашёл, где WDA_EXCLUDEFROMCAPTURE определено.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2020-02-17T01:22:39Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=137868#p137868</id>
		</entry>
</feed>
