<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Подача сигнала чтения на жёсткий диск каждые 5с, возможно ли это?]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=11604&amp;type=atom" />
	<updated>2016-05-27T11:33:36Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=11604</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Подача сигнала чтения на жёсткий диск каждые 5с, возможно ли это?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=104301#p104301" />
			<content type="html"><![CDATA[<p><strong>YMP</strong><br />Спасибо большое, всё работает отлично! <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></content>
			<author>
				<name><![CDATA[Waveshaper]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33899</uri>
			</author>
			<updated>2016-05-27T11:33:36Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=104301#p104301</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Подача сигнала чтения на жёсткий диск каждые 5с, возможно ли это?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=104282#p104282" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[YMP]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=81</uri>
			</author>
			<updated>2016-05-26T13:34:16Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=104282#p104282</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Подача сигнала чтения на жёсткий диск каждые 5с, возможно ли это?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=104277#p104277" />
			<content type="html"><![CDATA[<p><strong>YMP</strong><br />Вообще отлично получается, а можно старт/стоп инвертировать, т.е. чтобы после запуска скрипт сразу работал, а кнопка была стоп, сейчас же, после запуска нужно нажимать старт.</p><p>А часы, показывать сколько времени прошло после начала работы скрипта, при нажатии кнопки стоп, его обнулять, а при нажатии старт, начинать отсчёт сначала. В виде ЧЧ:ММ:СС (01:27:55).</p>]]></content>
			<author>
				<name><![CDATA[Waveshaper]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33899</uri>
			</author>
			<updated>2016-05-26T11:35:01Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=104277#p104277</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Подача сигнала чтения на жёсткий диск каждые 5с, возможно ли это?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=104264#p104264" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[YMP]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=81</uri>
			</author>
			<updated>2016-05-26T10:00:45Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=104264#p104264</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Подача сигнала чтения на жёсткий диск каждые 5с, возможно ли это?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=104234#p104234" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Waveshaper]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33899</uri>
			</author>
			<updated>2016-05-25T20:29:40Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=104234#p104234</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Подача сигнала чтения на жёсткий диск каждые 5с, возможно ли это?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=104156#p104156" />
			<content type="html"><![CDATA[<p><strong>Waveshaper</strong><br />При просыпании чувствую. При навигации не особо, иногда - слабый стук, но не щелчки. Диспетчер как к этому относится? Это же не системник, там, как полагается, - SSD. А этому диску 1.5 года. Компьютер сам по себе тихий, там кроме пары спящих Green-дисков на звук работают только пару почти неслышных 120-х кулеров, поэтому щелчки вполне будут различимы.</p>]]></content>
			<author>
				<name><![CDATA[Flasher]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27593</uri>
			</author>
			<updated>2016-05-24T07:10:54Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=104156#p104156</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Подача сигнала чтения на жёсткий диск каждые 5с, возможно ли это?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=104150#p104150" />
			<content type="html"><![CDATA[<p><strong>Flasher</strong><br />А Вы сами не чувствуете, при навигации по папкам, щелчкам или диспетчеру задач?</p><p>Судя по количеству, у Вас совсем новый диск?</p>]]></content>
			<author>
				<name><![CDATA[Waveshaper]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33899</uri>
			</author>
			<updated>2016-05-23T21:57:30Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=104150#p104150</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Подача сигнала чтения на жёсткий диск каждые 5с, возможно ли это?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=104148#p104148" />
			<content type="html"><![CDATA[<p><strong>Waveshaper</strong><br />Не пойму, возможно просто статус в DiskInfo погашен из-за отсутствия поддержки опции.<br />Но у меня всего 186 циклов загрузки/выгрузки при 97 запусках/остановках шпинделя.</p>]]></content>
			<author>
				<name><![CDATA[Flasher]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27593</uri>
			</author>
			<updated>2016-05-23T21:50:02Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=104148#p104148</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Подача сигнала чтения на жёсткий диск каждые 5с, возможно ли это?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=104142#p104142" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Waveshaper]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33899</uri>
			</author>
			<updated>2016-05-23T21:20:33Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=104142#p104142</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Подача сигнала чтения на жёсткий диск каждые 5с, возможно ли это?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=104140#p104140" />
			<content type="html"><![CDATA[<p><strong>Waveshaper</strong><br />no WriteCache=enabled.<br />setting Advanced Power Management level to disabled<br />Win7 x32.</p>]]></content>
			<author>
				<name><![CDATA[Flasher]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27593</uri>
			</author>
			<updated>2016-05-23T21:09:51Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=104140#p104140</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Подача сигнала чтения на жёсткий диск каждые 5с, возможно ли это?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=104138#p104138" />
			<content type="html"><![CDATA[<p><strong>Flasher</strong><br />Вроде можно и её, могли бы проверить команду hdparm.exe <strong>-i</strong> /dev/sda, что у Вас написано в строке <strong>AdvancedPM=</strong>? А при -B 255 никаких ошибок не выдаёт? И какая у Вас ОС?</p>]]></content>
			<author>
				<name><![CDATA[Waveshaper]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33899</uri>
			</author>
			<updated>2016-05-23T21:05:52Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=104138#p104138</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Подача сигнала чтения на жёсткий диск каждые 5с, возможно ли это?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=104137#p104137" />
			<content type="html"><![CDATA[<p><strong>Waveshaper</strong><br />Вот <a href="http://disablehddapm.blogspot.ru/">эту сборку</a>? Вроде работает. APM погашен.</p>]]></content>
			<author>
				<name><![CDATA[Flasher]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27593</uri>
			</author>
			<updated>2016-05-23T21:00:28Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=104137#p104137</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Подача сигнала чтения на жёсткий диск каждые 5с, возможно ли это?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=104125#p104125" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Waveshaper]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33899</uri>
			</author>
			<updated>2016-05-23T19:56:50Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=104125#p104125</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Подача сигнала чтения на жёсткий диск каждые 5с, возможно ли это?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=104124#p104124" />
			<content type="html"><![CDATA[<p><strong>Waveshaper</strong><br />Такой же, только 60, а не 30.<br />Видимо, спал. Хотя я пробовал тормозить через hddmaster - не вышло.</p>]]></content>
			<author>
				<name><![CDATA[Flasher]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27593</uri>
			</author>
			<updated>2016-05-23T19:52:58Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=104124#p104124</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Подача сигнала чтения на жёсткий диск каждые 5с, возможно ли это?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=104119#p104119" />
			<content type="html"><![CDATA[<p><strong>Flasher</strong><br />А у Вас какой диск? У меня WD Green WD30EZRX.</p><p>Может быть у Вас он спал, а не запаркован был?</p>]]></content>
			<author>
				<name><![CDATA[Waveshaper]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33899</uri>
			</author>
			<updated>2016-05-23T19:35:22Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=104119#p104119</id>
		</entry>
</feed>
