<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Подача сигнала чтения на жёсткий диск каждые 5с, возможно ли это?]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=11604</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=11604&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Подача сигнала чтения на жёсткий диск каждые 5с, возможно ли это?».]]></description>
		<lastBuildDate>Fri, 27 May 2016 11:33:36 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Подача сигнала чтения на жёсткий диск каждые 5с, возможно ли это?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=104301#p104301</link>
			<description><![CDATA[<p><strong>YMP</strong><br />Спасибо большое, всё работает отлично! <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (Waveshaper)]]></author>
			<pubDate>Fri, 27 May 2016 11:33:36 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=104301#p104301</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Подача сигнала чтения на жёсткий диск каждые 5с, возможно ли это?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=104282#p104282</link>
			<description><![CDATA[<div class="codebox"><pre><code>
Gui, Add, Text, x4 h20, Диск (D:) в работе
Gui, Add, Text, yp x+8 w50 h20 vTimeText, 00:00:00
Gui, Add, Button, x4 w80 h20 vStartStop gStartStop, Стоп
Gui, Show, Restore w450 h300
Gui, Add, Picture, x0 y0 h350 w450, D:\disk.ico

FileName = D:\DRIVE_AWAKE
FileSize := 4096    ; Должен быть кратен 4096.
Timeout = 5000
hFile := pBuf := Running := 0

StartStop:
    If (Running = 1) {
        SetTimer, ReadTimer, Off
        SetTimer, ClockTimer, Off
        Gosub, Cleanup
        Return
    }
    pBuf := DllCall(&quot;VirtualAlloc&quot;, &quot;ptr&quot;, 0
                                  , &quot;ptr&quot;, FileSize
                                  , &quot;uint&quot;, 0x3000      ; MEM_RESERVE | MEM_COMMIT
                                  , &quot;uint&quot;, 4           ; PAGE_READWRITE
                                  , &quot;ptr&quot;)
    If (pBuf = 0) {
        Gosub, Cleanup
        MsgBox, Ошибка VirtualAlloc.
        Return
    }
    hFile := DllCall(&quot;CreateFile&quot;, &quot;str&quot;, FileName
                                 , &quot;uint&quot;, 0xC0000000   ; GENERIC_READ | GENERIC_WRITE
                                 , &quot;uint&quot;, 0
                                 , &quot;ptr&quot;, 0
                                 , &quot;uint&quot;, 2            ; CREATE_ALWAYS
                                 , &quot;uint&quot;, 0x20000000   ; FILE_FLAG_NO_BUFFERING
                                 , &quot;ptr&quot;, 0
                                 , &quot;ptr&quot;)
    If (hFile = -1) {   ; INVALID_HANDLE_VALUE
        Gosub, Cleanup
        MsgBox, Ошибка CreateFile.
        Return
    }
    If !DllCall(&quot;WriteFile&quot;, &quot;ptr&quot;, hFile
                           , &quot;ptr&quot;, pBuf
                           , &quot;uint&quot;, FileSize
                           , &quot;uint *&quot;, BytesWritten
                           , &quot;ptr&quot;, 0)
    {
        Gosub, Cleanup
        MsgBox, Ошибка WriteFile.
        Return
    }
    Running := 1
    SetTimer, ReadTimer, %Timeout%
    GuiControl,, StartStop, Стоп
    TickCount0 := A_TickCount
    SetTimer, ClockTimer, 1000

ReadTimer:
    DllCall(&quot;SetFilePointer&quot;, &quot;ptr&quot;, hFile
                            , &quot;int&quot;, 0
                            , &quot;ptr&quot;, 0
                            , &quot;uint&quot;, 0)        ; FILE_BEGIN
    If !DllCall(&quot;ReadFile&quot;, &quot;ptr&quot;, hFile
                          , &quot;ptr&quot;, pBuf
                          , &quot;uint&quot;, FileSize
                          , &quot;uint *&quot;, BytesRead
                          , &quot;ptr&quot;, 0)
    {
        SetTimer, ReadTimer, Off
        Gosub, Cleanup
        MsgBox, Ошибка ReadFile.
    }
    Return

Cleanup:
    If (hFile &gt; 0) {
        DllCall(&quot;CloseHandle&quot;, &quot;ptr&quot;, hFile)
    }
    If (pBuf != 0) {
        DllCall(&quot;VirtualFree&quot;, &quot;ptr&quot;, pBuf, &quot;ptr&quot;, 0, &quot;uint&quot;, 0x8000)   ; MEM_RELEASE
    }
    hFile := pBuf := Running := 0
    GuiControl,, StartStop, Старт
    GuiControl,, TimeText, 00:00:00
    Return

ClockTimer:
    Time := (A_TickCount - TickCount0) // 1000
    Time := Format(&quot;{1:02i}:{2:02i}:{3:02i}&quot;
                    , Time // 3600
                    , Mod(Time, 3600) // 60
                    , Mod(Time, 60) )
    GuiControl,, TimeText, %Time%
    Return

GuiClose:
    ExitApp
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Thu, 26 May 2016 13:34:16 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=104282#p104282</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Подача сигнала чтения на жёсткий диск каждые 5с, возможно ли это?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=104277#p104277</link>
			<description><![CDATA[<p><strong>YMP</strong><br />Вообще отлично получается, а можно старт/стоп инвертировать, т.е. чтобы после запуска скрипт сразу работал, а кнопка была стоп, сейчас же, после запуска нужно нажимать старт.</p><p>А часы, показывать сколько времени прошло после начала работы скрипта, при нажатии кнопки стоп, его обнулять, а при нажатии старт, начинать отсчёт сначала. В виде ЧЧ:ММ:СС (01:27:55).</p>]]></description>
			<author><![CDATA[null@example.com (Waveshaper)]]></author>
			<pubDate>Thu, 26 May 2016 11:35:01 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=104277#p104277</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Подача сигнала чтения на жёсткий диск каждые 5с, возможно ли это?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=104264#p104264</link>
			<description><![CDATA[<p>Кнопку можно так.&nbsp; Секундомер или часы? Какое конкретно время измерять?<br /></p><div class="codebox"><pre><code>
Gui, Add, Text,, Диск (D:) в работе
Gui, Add, Button, w80 h20 vStartStop gStartStop, Старт
Gui, Show, Restore w450 h300
Gui, Add, Picture, x0 y0 h350 w450, D:\disk.ico

FileName = D:\DRIVE_AWAKE
FileSize := 4096    ; Должен быть кратен 4096.
Timeout = 5000
hFile := pBuf := Running := 0
Return

StartStop:
    If (Running = 1) {
        SetTimer, ReadTimer, Off
        Gosub, Cleanup
        Return
    }
    pBuf := DllCall(&quot;VirtualAlloc&quot;, &quot;ptr&quot;, 0
                                  , &quot;ptr&quot;, FileSize
                                  , &quot;uint&quot;, 0x3000      ; MEM_RESERVE | MEM_COMMIT
                                  , &quot;uint&quot;, 4           ; PAGE_READWRITE
                                  , &quot;ptr&quot;)
    If (pBuf = 0) {
        Gosub, Cleanup
        MsgBox, Ошибка VirtualAlloc.
        Return
    }
    hFile := DllCall(&quot;CreateFile&quot;, &quot;str&quot;, FileName
                                 , &quot;uint&quot;, 0xC0000000   ; GENERIC_READ | GENERIC_WRITE
                                 , &quot;uint&quot;, 0
                                 , &quot;ptr&quot;, 0
                                 , &quot;uint&quot;, 2            ; CREATE_ALWAYS
                                 , &quot;uint&quot;, 0x20000000   ; FILE_FLAG_NO_BUFFERING
                                 , &quot;ptr&quot;, 0
                                 , &quot;ptr&quot;)
    If (hFile = -1) {   ; INVALID_HANDLE_VALUE
        Gosub, Cleanup
        MsgBox, Ошибка CreateFile.
        Return
    }
    If !DllCall(&quot;WriteFile&quot;, &quot;ptr&quot;, hFile
                           , &quot;ptr&quot;, pBuf
                           , &quot;uint&quot;, FileSize
                           , &quot;uint *&quot;, BytesWritten
                           , &quot;ptr&quot;, 0)
    {
        Gosub, Cleanup
        MsgBox, Ошибка WriteFile.
        Return
    }
    Running := 1
    SetTimer, ReadTimer, %Timeout%
    GuiControl,, StartStop, Стоп

ReadTimer:
    DllCall(&quot;SetFilePointer&quot;, &quot;ptr&quot;, hFile
                            , &quot;int&quot;, 0
                            , &quot;ptr&quot;, 0
                            , &quot;uint&quot;, 0)        ; FILE_BEGIN
    If !DllCall(&quot;ReadFile&quot;, &quot;ptr&quot;, hFile
                          , &quot;ptr&quot;, pBuf
                          , &quot;uint&quot;, FileSize
                          , &quot;uint *&quot;, BytesRead
                          , &quot;ptr&quot;, 0)
    {
        SetTimer, ReadTimer, Off
        Gosub, Cleanup
        MsgBox, Ошибка ReadFile.
    }
    Return

Cleanup:
    If (hFile &gt; 0) {
        DllCall(&quot;CloseHandle&quot;, &quot;ptr&quot;, hFile)
    }
    If (pBuf != 0) {
        DllCall(&quot;VirtualFree&quot;, &quot;ptr&quot;, pBuf, &quot;ptr&quot;, 0, &quot;uint&quot;, 0x8000)   ; MEM_RELEASE
    }
    hFile := pBuf := Running := 0
    GuiControl,, StartStop, Старт
    Return
    
GuiClose:
    ExitApp
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Thu, 26 May 2016 10:00:45 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=104264#p104264</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Подача сигнала чтения на жёсткий диск каждые 5с, возможно ли это?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=104234#p104234</link>
			<description><![CDATA[<p><strong>Flasher</strong><br />Вам видимо повезло с диском и частота парковки выставлена на 5 минут (а не 8 секунд), WD, похоже, у одной и той же модели устанавливает разные значения, были даже Red-ы с 8 секундами.</p><p><strong>YMP</strong><br />Поработал я пару дней с Вашим скриптом, и наконец-то могу вздохнуть с облегчением, раньше, при обработке большого массива файлов, было разумней копировать их на нормальный HDD и обратно, а это 200-300ГБ, или элементарный просмотр фотографий портил нервы постоянными щелчками, а сейчас всё спокойно. Спасибо Вам огромное! <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p><br /><p>В процессе использования, появилось пару хотелок, это кнопка стоп/старт в GUI, которая нужна, при копировании большого количества файлов, можно ли её встроить в код? И секундомер, показывающий в GUI сколько времени прошло с начала запуска.</p><p>Вот текущий код:<br /></p><div class="codebox"><pre><code>Gui, Add, Text,, Диск (D:) в работе
Gui, Show, Restore w450 h300
Gui, Add, Picture, x0 y0 h350 w450, D:\disk.ico

FileName = D:\DRIVE_AWAKE
FileSize := 4096    ; Должен быть кратен 4096.
Timeout = 5000

pBuf := DllCall(&quot;VirtualAlloc&quot;, &quot;ptr&quot;, 0
                              , &quot;ptr&quot;, FileSize
                              , &quot;uint&quot;, 0x3000  ; MEM_RESERVE | MEM_COMMIT
                              , &quot;uint&quot;, 4       ; PAGE_READWRITE
                              , &quot;ptr&quot;)
If (pBuf = 0) {
    MsgBox, Ошибка VirtualAlloc.
    ExitApp
}
hFile := DllCall(&quot;CreateFile&quot;, &quot;str&quot;, FileName
                             , &quot;uint&quot;, 0xC0000000   ; GENERIC_READ | GENERIC_WRITE
                             , &quot;uint&quot;, 0
                             , &quot;ptr&quot;, 0
                             , &quot;uint&quot;, 2            ; CREATE_ALWAYS
                             , &quot;uint&quot;, 0x20000000   ; FILE_FLAG_NO_BUFFERING
                             , &quot;ptr&quot;, 0
                             , &quot;ptr&quot;)
If (hFile = -1) {   ; INVALID_HANDLE_VALUE
    MsgBox, Ошибка CreateFile.
    ExitApp
}
If !DllCall(&quot;WriteFile&quot;, &quot;ptr&quot;, hFile
                       , &quot;ptr&quot;, pBuf
                       , &quot;uint&quot;, FileSize
                       , &quot;uint *&quot;, BytesWritten
                       , &quot;ptr&quot;, 0)
{
    MsgBox, Ошибка WriteFile.
    ExitApp
}

Loop
{
    DllCall(&quot;SetFilePointer&quot;, &quot;ptr&quot;, hFile
                            , &quot;int&quot;, 0
                            , &quot;ptr&quot;, 0
                            , &quot;uint&quot;, 0)        ; FILE_BEGIN
    If !DllCall(&quot;ReadFile&quot;, &quot;ptr&quot;, hFile
                          , &quot;ptr&quot;, pBuf
                          , &quot;uint&quot;, FileSize
                          , &quot;uint *&quot;, BytesRead
                          , &quot;ptr&quot;, 0)
    {
        MsgBox, Ошибка ReadFile.
        ExitApp
    }
    Sleep, %Timeout%
}
	
GuiClose:
ExitApp</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Waveshaper)]]></author>
			<pubDate>Wed, 25 May 2016 20:29:40 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=104234#p104234</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Подача сигнала чтения на жёсткий диск каждые 5с, возможно ли это?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=104156#p104156</link>
			<description><![CDATA[<p><strong>Waveshaper</strong><br />При просыпании чувствую. При навигации не особо, иногда - слабый стук, но не щелчки. Диспетчер как к этому относится? Это же не системник, там, как полагается, - SSD. А этому диску 1.5 года. Компьютер сам по себе тихий, там кроме пары спящих Green-дисков на звук работают только пару почти неслышных 120-х кулеров, поэтому щелчки вполне будут различимы.</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Tue, 24 May 2016 07:10:54 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=104156#p104156</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Подача сигнала чтения на жёсткий диск каждые 5с, возможно ли это?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=104150#p104150</link>
			<description><![CDATA[<p><strong>Flasher</strong><br />А Вы сами не чувствуете, при навигации по папкам, щелчкам или диспетчеру задач?</p><p>Судя по количеству, у Вас совсем новый диск?</p>]]></description>
			<author><![CDATA[null@example.com (Waveshaper)]]></author>
			<pubDate>Mon, 23 May 2016 21:57:30 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=104150#p104150</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Подача сигнала чтения на жёсткий диск каждые 5с, возможно ли это?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=104148#p104148</link>
			<description><![CDATA[<p><strong>Waveshaper</strong><br />Не пойму, возможно просто статус в DiskInfo погашен из-за отсутствия поддержки опции.<br />Но у меня всего 186 циклов загрузки/выгрузки при 97 запусках/остановках шпинделя.</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Mon, 23 May 2016 21:50:02 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=104148#p104148</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Подача сигнала чтения на жёсткий диск каждые 5с, возможно ли это?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=104142#p104142</link>
			<description><![CDATA[<p><strong>Flasher</strong><br />Спасибо, вот и у меня AdvancedPM=no, а -B 255 <a href="http://forum.ixbt.com/topic.cgi?id=11:47418:7#7">вот</a> что выдаёт и непонятно в чём дело. А у Вас точно парковка отключилась, а была 8 секунд?</p>]]></description>
			<author><![CDATA[null@example.com (Waveshaper)]]></author>
			<pubDate>Mon, 23 May 2016 21:20:33 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=104142#p104142</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Подача сигнала чтения на жёсткий диск каждые 5с, возможно ли это?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=104140#p104140</link>
			<description><![CDATA[<p><strong>Waveshaper</strong><br />no WriteCache=enabled.<br />setting Advanced Power Management level to disabled<br />Win7 x32.</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Mon, 23 May 2016 21:09:51 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=104140#p104140</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Подача сигнала чтения на жёсткий диск каждые 5с, возможно ли это?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=104138#p104138</link>
			<description><![CDATA[<p><strong>Flasher</strong><br />Вроде можно и её, могли бы проверить команду hdparm.exe <strong>-i</strong> /dev/sda, что у Вас написано в строке <strong>AdvancedPM=</strong>? А при -B 255 никаких ошибок не выдаёт? И какая у Вас ОС?</p>]]></description>
			<author><![CDATA[null@example.com (Waveshaper)]]></author>
			<pubDate>Mon, 23 May 2016 21:05:52 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=104138#p104138</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Подача сигнала чтения на жёсткий диск каждые 5с, возможно ли это?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=104137#p104137</link>
			<description><![CDATA[<p><strong>Waveshaper</strong><br />Вот <a href="http://disablehddapm.blogspot.ru/">эту сборку</a>? Вроде работает. APM погашен.</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Mon, 23 May 2016 21:00:28 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=104137#p104137</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Подача сигнала чтения на жёсткий диск каждые 5с, возможно ли это?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=104125#p104125</link>
			<description><![CDATA[<p><strong>Flasher</strong><br />О, значит Вы понимаете, что такое парковка. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> Вы не пробовали hdparm?</p><p>Возможно влияет, что у меня в опциях электропитания, установлено &quot;Отключать жёсткий диск: никогда&quot;.</p>]]></description>
			<author><![CDATA[null@example.com (Waveshaper)]]></author>
			<pubDate>Mon, 23 May 2016 19:56:50 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=104125#p104125</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Подача сигнала чтения на жёсткий диск каждые 5с, возможно ли это?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=104124#p104124</link>
			<description><![CDATA[<p><strong>Waveshaper</strong><br />Такой же, только 60, а не 30.<br />Видимо, спал. Хотя я пробовал тормозить через hddmaster - не вышло.</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Mon, 23 May 2016 19:52:58 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=104124#p104124</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Подача сигнала чтения на жёсткий диск каждые 5с, возможно ли это?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=104119#p104119</link>
			<description><![CDATA[<p><strong>Flasher</strong><br />А у Вас какой диск? У меня WD Green WD30EZRX.</p><p>Может быть у Вас он спал, а не запаркован был?</p>]]></description>
			<author><![CDATA[null@example.com (Waveshaper)]]></author>
			<pubDate>Mon, 23 May 2016 19:35:22 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=104119#p104119</guid>
		</item>
	</channel>
</rss>
