<?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="http://forum.script-coding.com/extern.php?action=feed&amp;tid=6502&amp;type=atom" />
	<updated>2011-12-01T03:57:22Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=6502</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK:Срабатывание звукового сигнала если размер директории не изменился]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=54091#p54091" />
			<content type="html"><![CDATA[<p>А вот так работает.<br />Сегодня проверю в поле.<br />Спасибо!</p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2011-12-01T03:57:22Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=54091#p54091</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK:Срабатывание звукового сигнала если размер директории не изменился]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=54085#p54085" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Malcev пишет:</cite><blockquote><p>То же самое.</p></blockquote></div><p>Да бл... А теперь?</p>]]></content>
			<author>
				<name><![CDATA[Александр_]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24888</uri>
			</author>
			<updated>2011-11-30T19:43:30Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=54085#p54085</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK:Срабатывание звукового сигнала если размер директории не изменился]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=54081#p54081" />
			<content type="html"><![CDATA[<p>То же самое.</p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2011-11-30T18:43:12Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=54081#p54081</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK:Срабатывание звукового сигнала если размер директории не изменился]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=54079#p54079" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Malcev пишет:</cite><blockquote><p>На файл, который создаётся во время записи видео в папке для мониторинга.<br />Он создаётся с нулевым размером, таким и остаётся до нажатия стоп.<br />Его реальный размер можно узнать только нажав на его Properties.<br />Конечно же после окончания записи, msgbox показывает реальный размер этого файла</p></blockquote></div><p>А так?(исправил код в посте 12)</p>]]></content>
			<author>
				<name><![CDATA[Александр_]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24888</uri>
			</author>
			<updated>2011-11-30T18:11:55Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=54079#p54079</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK:Срабатывание звукового сигнала если размер директории не изменился]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=54077#p54077" />
			<content type="html"><![CDATA[<p>На файл, который создаётся во время записи видео в папке для мониторинга.<br />Он создаётся с нулевым размером, таким и остаётся до нажатия стоп.<br />Его реальный размер можно узнать только нажав на его Properties.<br />Конечно же после окончания записи, msgbox показывает реальный размер этого файла</p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2011-11-30T17:59:33Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=54077#p54077</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK:Срабатывание звукового сигнала если размер директории не изменился]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=54076#p54076" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Александр_]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24888</uri>
			</author>
			<updated>2011-11-30T17:52:54Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=54076#p54076</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK:Срабатывание звукового сигнала если размер директории не изменился]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=54074#p54074" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2011-11-30T17:48:25Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=54074#p54074</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK:Срабатывание звукового сигнала если размер директории не изменился]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=54073#p54073" />
			<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>Во время записи в директорию, размер директории не изменяется, хоть сутки пиши.<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>]]></content>
			<author>
				<name><![CDATA[Александр_]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24888</uri>
			</author>
			<updated>2011-11-30T17:27:40Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=54073#p54073</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK:Срабатывание звукового сигнала если размер директории не изменился]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=54070#p54070" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2011-11-30T16:20:16Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=54070#p54070</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK:Срабатывание звукового сигнала если размер директории не изменился]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=54065#p54065" />
			<content type="html"><![CDATA[<p>Во время записи в директорию, размер директории не изменяется, хоть сутки пиши.<br />Размер же файла в эксплорере определяется нулевым и только если нажимать на его свойства - видно, что размер изменяется.<br />Поэтому твой скрипт, показывает изменения в директории, только после остановки записи, так как после остановки записи и &quot;создаётся&quot; этот файл<br />А мне нужно чтобы скрипт проверял этот файл во время записи.<br />Вот в чём загвоздка <img src="//forum.script-coding.com/img/smilies/sad.png" width="15" height="15" /></p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2011-11-30T15:16:10Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=54065#p54065</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK:Срабатывание звукового сигнала если размер директории не изменился]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=54061#p54061" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Александр_]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24888</uri>
			</author>
			<updated>2011-11-30T14:36:45Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=54061#p54061</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK:Срабатывание звукового сигнала если размер директории не изменился]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=54048#p54048" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>Тогда почему тут вся папка мониторится?</code></pre></div><p>Каждый час создаётся новый файл.<br />То есть мониторить надо последний файл из созданных.<br />Что-то не могу продумать алгоритм.<br />Это получается, что мы вначале находим последний созданный файл, потом в цикле его сравниваем размер, если размер одинаковый то пибикаем и возвращаемся к поиску последнему созданному файлу так?</p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2011-11-30T11:40:30Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=54048#p54048</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK:Срабатывание звукового сигнала если размер директории не изменился]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=54047#p54047" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Александр_]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24888</uri>
			</author>
			<updated>2011-11-30T10:16:08Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=54047#p54047</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK:Срабатывание звукового сигнала если размер директории не изменился]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=54032#p54032" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2011-11-30T06:36:34Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=54032#p54032</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK:Срабатывание звукового сигнала если размер директории не изменился]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=54026#p54026" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Александр_ пишет:</cite><blockquote><p>Для числовых значений не важно &quot;=&quot; или &quot;==&quot;.</p></blockquote></div><p>Сейчас проверил, действительно.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2011-11-29T20:02:48Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=54026#p54026</id>
		</entry>
</feed>
