<?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>http://forum.script-coding.com/viewtopic.php?id=6502</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=6502&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK:Срабатывание звукового сигнала если размер директории не изменился».]]></description>
		<lastBuildDate>Thu, 01 Dec 2011 03:57:22 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK:Срабатывание звукового сигнала если размер директории не изменился]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=54091#p54091</link>
			<description><![CDATA[<p>А вот так работает.<br />Сегодня проверю в поле.<br />Спасибо!</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Thu, 01 Dec 2011 03:57:22 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=54091#p54091</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK:Срабатывание звукового сигнала если размер директории не изменился]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=54085#p54085</link>
			<description><![CDATA[<div class="quotebox"><cite>Malcev пишет:</cite><blockquote><p>То же самое.</p></blockquote></div><p>Да бл... А теперь?</p>]]></description>
			<author><![CDATA[null@example.com (Александр_)]]></author>
			<pubDate>Wed, 30 Nov 2011 19:43:30 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=54085#p54085</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK:Срабатывание звукового сигнала если размер директории не изменился]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=54081#p54081</link>
			<description><![CDATA[<p>То же самое.</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Wed, 30 Nov 2011 18:43:12 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=54081#p54081</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK:Срабатывание звукового сигнала если размер директории не изменился]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=54079#p54079</link>
			<description><![CDATA[<div class="quotebox"><cite>Malcev пишет:</cite><blockquote><p>На файл, который создаётся во время записи видео в папке для мониторинга.<br />Он создаётся с нулевым размером, таким и остаётся до нажатия стоп.<br />Его реальный размер можно узнать только нажав на его Properties.<br />Конечно же после окончания записи, msgbox показывает реальный размер этого файла</p></blockquote></div><p>А так?(исправил код в посте 12)</p>]]></description>
			<author><![CDATA[null@example.com (Александр_)]]></author>
			<pubDate>Wed, 30 Nov 2011 18:11:55 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=54079#p54079</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK:Срабатывание звукового сигнала если размер директории не изменился]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=54077#p54077</link>
			<description><![CDATA[<p>На файл, который создаётся во время записи видео в папке для мониторинга.<br />Он создаётся с нулевым размером, таким и остаётся до нажатия стоп.<br />Его реальный размер можно узнать только нажав на его Properties.<br />Конечно же после окончания записи, msgbox показывает реальный размер этого файла</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Wed, 30 Nov 2011 17:59:33 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=54077#p54077</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK:Срабатывание звукового сигнала если размер директории не изменился]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=54076#p54076</link>
			<description><![CDATA[<div class="quotebox"><cite>Malcev пишет:</cite><blockquote><p>Не подходит этот скрипт.<br />Я прописал в него<br /></p><div class="codebox"><pre><code>   FileGetSize NewFileSize, %FileName% ; получаем новый размер
msgbox, %FileSize%
msgbox, %NewFileSize%
   if (NewFileSize = FileSize) ; если они равны</code></pre></div><p>И во время записи он выдаёт, что у первого, что у второго нули.</p></blockquote></div><p>только на этих файлах или на любых?</p>]]></description>
			<author><![CDATA[null@example.com (Александр_)]]></author>
			<pubDate>Wed, 30 Nov 2011 17:52:54 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=54076#p54076</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK:Срабатывание звукового сигнала если размер директории не изменился]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=54074#p54074</link>
			<description><![CDATA[<p>Не подходит этот скрипт.<br />Я прописал в него<br /></p><div class="codebox"><pre><code>   FileGetSize NewFileSize, %FileName% ; получаем новый размер
msgbox, %FileSize%
msgbox, %NewFileSize%
   if (NewFileSize = FileSize) ; если они равны</code></pre></div><p>И во время записи он выдаёт, что у первого, что у второго нули.</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Wed, 30 Nov 2011 17:48:25 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=54074#p54074</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK:Срабатывание звукового сигнала если размер директории не изменился]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=54073#p54073</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>Во время записи в директорию, размер директории не изменяется, хоть сутки пиши.<br />Размер же файла в эксплорере определяется нулевым и только если нажимать на его свойства - видно, что размер изменяется.<br />Поэтому твой скрипт, показывает изменения в директории, только после остановки записи, так как после остановки записи и &quot;создаётся&quot; этот файл<br />А мне нужно чтобы скрипт проверял этот файл во время записи.<br />Вот в чём загвоздка <img src="//forum.script-coding.com/img/smilies/sad.png" width="15" height="15" /></p></blockquote></div><p>Ясно, значит программа пишет не закрывая хендл и это печально(для нас, не для программы). Тогда, если новый файл создаётся редко(раз в час, например <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" />), то алгоритм такой:<br /></p><div class="codebox"><pre><code>Path := A_ScriptDir
FileName := GetLastModifiedFileName(Path)
hFile := CreateFile(FileName, 0, 7, 0, 3, 0x80, 0)
FileSize := MyGetFileSize(hFile)
NewFileSize := FileSize
NewFileName := &quot;&quot;
loop
{
   Sleep 2000
   NewFileSize:=MyGetFileSize(hFile)
   if (NewFileSize = FileSize)
   {
      NewFileName := GetLastModifiedFileName(Path)
	  if(NewFileName=FileName)
	  {
	     SoundBeep 750, 500
	  }
	  else
	  {
         FileName := NewFileName
		 CloseHandle(hFile)
		 hFile := CreateFile(FileName, 0, 7, 0, 3, 0x80, 0)
		 FileSize := MyGetFileSize(hFile)
         NewFileSize := FileSize
	  }
   }
   else
   {
      FileSize := NewFileSize
   }
}
return

CreateFile(lpFileName, dwDesiredAccess, dwShareMode, lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile)
{
   return DllCall(&quot;CreateFile&quot;, &quot;str&quot;, lpFileName, &quot;uint&quot;, dwDesiredAccess, &quot;uint&quot;, dwShareMode, &quot;uint&quot;, lpSecurityAttributes, &quot;uint&quot;, dwCreationDisposition, &quot;uint&quot;, dwFlagsAndAttributes, &quot;uint&quot;, hTemplateFile, &quot;uint&quot;)
}

CloseHandle(Handle)
{
   return DllCall(&quot;CloseHandle&quot;, &quot;uint&quot;, Handle)
}

GetFileInformationByHandle(hFile, lpFileInformation)
{
   return DllCall(&quot;GetFileInformationByHandle&quot;, &quot;uint&quot;, hFile, &quot;uint&quot;, lpFileInformation, &quot;uint&quot;)
}

MyGetFileSize(hFile)
{
   VarSetCapacity(FileInformation, 52)
   GetFileInformationByHandle(hFile, &amp;FileInformation)
   ret := NumGet(&amp;FileInformation, 36)
   VarSetCapacity(FileInformation, 0)
   return ret
}

GetLastModifiedFileName(Path)
{
   FileTimeModified := 0
   FileName := &quot;&quot;
   Loop %Path%\*.*, , 1
   {
      if(A_LoopFileTimeModified&gt;FileTimeModified)
      {
         FileTimeModified := A_LoopFileTimeModified
		 FileName := A_LoopFileLongPath
      }
   }
   return FileName
}

Esc::ExitApp</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Александр_)]]></author>
			<pubDate>Wed, 30 Nov 2011 17:27:40 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=54073#p54073</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK:Срабатывание звукового сигнала если размер директории не изменился]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=54070#p54070</link>
			<description><![CDATA[<p>Вроде такой вариант проходит<br /></p><div class="codebox"><pre><code>#Persistent
FolderSize = 0
DriveSpaceFree, FreeSpace, e:\
FolderSize += %FreeSpace%
loop
{
   Folder2Size = 0
   DriveSpaceFree, FreeSpace, e:\
   Folder2Size += %FreeSpace%
if (Folder2Size = FolderSize)
   {
      SoundBeep, 750, 500
       }
else
{
   FolderSize := Folder2Size
}
sleep, 2000
}
return</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Wed, 30 Nov 2011 16:20:16 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=54070#p54070</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK:Срабатывание звукового сигнала если размер директории не изменился]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=54065#p54065</link>
			<description><![CDATA[<p>Во время записи в директорию, размер директории не изменяется, хоть сутки пиши.<br />Размер же файла в эксплорере определяется нулевым и только если нажимать на его свойства - видно, что размер изменяется.<br />Поэтому твой скрипт, показывает изменения в директории, только после остановки записи, так как после остановки записи и &quot;создаётся&quot; этот файл<br />А мне нужно чтобы скрипт проверял этот файл во время записи.<br />Вот в чём загвоздка <img src="//forum.script-coding.com/img/smilies/sad.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Wed, 30 Nov 2011 15:16:10 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=54065#p54065</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK:Срабатывание звукового сигнала если размер директории не изменился]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=54061#p54061</link>
			<description><![CDATA[<div class="quotebox"><cite>Malcev пишет:</cite><blockquote><div class="codebox"><pre><code>Тогда почему тут вся папка мониторится?</code></pre></div><p>Каждый час создаётся новый файл.<br />То есть мониторить надо последний файл из созданных.<br />Что-то не могу продумать алгоритм.<br />Это получается, что мы вначале находим последний созданный файл, потом в цикле его сравниваем размер, если размер одинаковый то пибикаем и возвращаемся к поиску последнему созданному файлу так?</p></blockquote></div><p>Лучше ничего не искать, а получать уведомления об изменениях в этой папке, указав тип изменений FILE_NOTIFY_CHANGE_SIZE(изменился размер) или FILE_NOTIFY_CHANGE_LAST_WRITE(изменилась дата последней записи). Далее два варианта:<br />&quot;точный&quot;- при получении уведомления ставим(изменяем, если он уже поставлен) таймер.<br />&quot;безтаймерный&quot;- сохраняем время получения уведомления в переменную и в цикле со sleep&#039;ом сравниваем его с текущим временем.</p>]]></description>
			<author><![CDATA[null@example.com (Александр_)]]></author>
			<pubDate>Wed, 30 Nov 2011 14:36:45 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=54061#p54061</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK:Срабатывание звукового сигнала если размер директории не изменился]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=54048#p54048</link>
			<description><![CDATA[<div class="codebox"><pre><code>Тогда почему тут вся папка мониторится?</code></pre></div><p>Каждый час создаётся новый файл.<br />То есть мониторить надо последний файл из созданных.<br />Что-то не могу продумать алгоритм.<br />Это получается, что мы вначале находим последний созданный файл, потом в цикле его сравниваем размер, если размер одинаковый то пибикаем и возвращаемся к поиску последнему созданному файлу так?</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Wed, 30 Nov 2011 11:40:30 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=54048#p54048</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK:Срабатывание звукового сигнала если размер директории не изменился]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=54047#p54047</link>
			<description><![CDATA[<div class="quotebox"><cite>Malcev пишет:</cite><blockquote><p>Александр_, твой код наверное не подойдёт, потому что это всё мне надо для проверки не прекратилась ли запись.<br />Я с камеры практически безостановочно (с перерывом на 5 секунд в час) одним файлом записываю видео в директорию.</p></blockquote></div><p>Тогда почему тут вся папка мониторится? Самое медленно место в программе- это обращения к винчестеру, поэтому их нужно сводить к минимуму.<br /></p><div class="quotebox"><cite>Malcev пишет:</cite><blockquote><p>А чем Goto лучше чем SetTimer?<br />В хэлпе написано - &quot;The use of Goto is discouraged because it generally makes scripts less readable and harder to maintain. Consider using Else, Blocks, Break, and Continue as substitutes for Goto. &quot;</p></blockquote></div><p>Угу, но таймер надо ставить один раз, а в конце удалять. Если следовать этой рекомендации, то лучше всего, наверно так:<br /></p><div class="codebox"><pre><code>loop
{
   ...
   sleep 2000
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Александр_)]]></author>
			<pubDate>Wed, 30 Nov 2011 10:16:08 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=54047#p54047</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK:Срабатывание звукового сигнала если размер директории не изменился]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=54032#p54032</link>
			<description><![CDATA[<p>Александр_, твой код наверное не подойдёт, потому что это всё мне надо для проверки не прекратилась ли запись.<br />Я с камеры практически безостановочно (с перерывом на 5 секунд в час) одним файлом записываю видео в директорию.<br />Поэтому мне и надо чтоб компьютер пибикал, во время этого перерыва либо при каких-либо ошибках.<br />Что-то действительно я не подумал о присвоении значения FolderSize := Folder2Size<br />Тогда код должен быть таким?<br /></p><div class="codebox"><pre><code>#Persistent
FolderPath := &quot;E:\TEST&quot;
  FolderSize = 0
  Loop, %FolderPath%\*.*, , 1
  FolderSize += %A_LoopFileSize%
DoThis:
   Folder2Size = 0
   Loop, %FolderPath%\*.*, , 1
   Folder2Size += %A_LoopFileSize%
if (Folder2Size = FolderSize)
   {
      SoundBeep, 750, 500
       }
else
{
   FolderSize := Folder2Size
}
sleep, 2000
Goto, DoThis
return</code></pre></div><p>А чем Goto лучше чем SetTimer?<br />В хэлпе написано - &quot;The use of Goto is discouraged because it generally makes scripts less readable and harder to maintain. Consider using Else, Blocks, Break, and Continue as substitutes for Goto. &quot;</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Wed, 30 Nov 2011 06:36:34 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=54032#p54032</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK:Срабатывание звукового сигнала если размер директории не изменился]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=54026#p54026</link>
			<description><![CDATA[<div class="quotebox"><cite>Александр_ пишет:</cite><blockquote><p>Для числовых значений не важно &quot;=&quot; или &quot;==&quot;.</p></blockquote></div><p>Сейчас проверил, действительно.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Tue, 29 Nov 2011 20:02:48 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=54026#p54026</guid>
		</item>
	</channel>
</rss>
