<?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=16783&amp;type=atom" />
	<updated>2021-12-05T17:41:37Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=16783</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Простой секундомер в виде отдельного окна (динамический)]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=150989#p150989" />
			<content type="html"><![CDATA[<p><strong>__Михаил__</strong><br />Огромное спасибо! Всё работает!</p>]]></content>
			<author>
				<name><![CDATA[Michael]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=41356</uri>
			</author>
			<updated>2021-12-05T17:41:37Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=150989#p150989</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Простой секундомер в виде отдельного окна (динамический)]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=150965#p150965" />
			<content type="html"><![CDATA[<p>Остановить секундомер не проблема - отключить таймер.</p><div class="codebox"><pre><code>Start := 0
gui -caption +alwaysontop +LastFound
gui, font, s50, impact
;gui color, 0x1c9900
;WinSet, TransColor, 0x1c9900
Gui Add, Text, vText x8 y8 w250 h60 +0x200, --:--:--
Gui Show, w275 h80 x5 y380 NA, Секундомер
Return

GuiEscape:
GuiClose:
ExitApp

F10::
KeyWait, %A_ThisHotkey%, U
If (Start := !Start){
 Time := A_TickCount
 SetTimer, Now, 1000
}
Else
 SetTimer, Now, Off
Now:
GuiControl,, Text, % FormatTime(A_TickCount-Time)
Return


FormatTime(Time) {
 Local Rest, Hours, Min, Sec
 If Time &lt; 0
  Return &quot;00:00:00&quot;
 Rest := Mod(Time, 3600000)
  Hours := Format(&quot;{:02d}&quot;, Time // 3600000)
  Min := Format(&quot;{:02d}&quot;, Rest // 60000)
  Sec := Format(&quot;{:02d}&quot;, Mod(Rest, 60000) // 1000)
 Return Hours &quot;:&quot; Min &quot;:&quot; Sec
}

F8:: 
 IfWinExist, Секундомер
 {
  WinGet ExStyle, ExStyle
  if Not (ExStyle &amp; 0x8)  ; 0x8 is WS_EX_TOPMOST. The window is always-on-top.
  {
   WinSet ExStyle, +0x20 ; чтобы клики проходили сквозь окошко
   WinSet Transparent, 255 ; прозрачность окна: 0 - максимальная, 255 - непрозрачное 
   WinSet AlwaysOnTop, On
  } else 
   {
   WinSet ExStyle, -0x20
   WinSet Transparent, 255
   WinSet AlwaysOnTop, Off
   ; переключаем режим &quot;поверх всех&quot; в окне игры, чтобы окошко ушло на задний план
   WinSet AlwaysOnTop, On, A
   WinSet AlwaysOnTop, Off, A
   }
 }</code></pre></div>]]></content>
			<author>
				<name><![CDATA[__Михаил__]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=40928</uri>
			</author>
			<updated>2021-12-05T13:36:05Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=150965#p150965</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Простой секундомер в виде отдельного окна (динамический)]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=150959#p150959" />
			<content type="html"><![CDATA[<p><strong>teadrinker</strong><br />Для игры, сорян, тупанул. Точнее для всех игр одновременно, как оверлей. Универсально, так сказать.</p><p><strong>__Михаил__</strong><br />Остановился на варианте без прозрачного фона. Он не так важен.<br />Хочу вот что еще добавить: чтобы при первом нажатии F10 таймер стартовал (что уже есть), при повторном - останавливался, третье нажатие - запуск с нуля снова. И так далее.<br />Текущий скрипт где работает исчезновение оверлея корректно:<br /></p><div class="codebox"><pre><code>gui -caption +alwaysontop +LastFound
gui, font, s50, impact
;gui color, 0x1c9900
;WinSet, TransColor, 0x1c9900
Gui Add, Text, vText x8 y8 w250 h60 +0x200, --:--:--
Gui Show, w511 h80 x5 y380 NA, Секундомер
Return

GuiEscape:
GuiClose:
ExitApp

F10::
Time := A_TickCount
SetTimer, Now, 1000
Return

Now:
GuiControl,, Text, % FormatTime(A_TickCount-Time)
Return

FormatTime(Time) {
	Local Rest, Hours, Min, Sec
	If Time &lt; 0
		Return &quot;00:00:00&quot;
	Rest := Mod(Time, 3600000)
	 Hours := Format(&quot;{:02d}&quot;, Time // 3600000)
	 Min := Format(&quot;{:02d}&quot;, Rest // 60000)
	 Sec := Format(&quot;{:02d}&quot;, Mod(Rest, 60000) // 1000)
	Return Hours &quot;:&quot; Min &quot;:&quot; Sec
}

F8:: 
	IfWinExist, Секундомер
	{
		WinGet ExStyle, ExStyle
		if Not (ExStyle &amp; 0x8)  ; 0x8 is WS_EX_TOPMOST. The window is always-on-top.
		{
			WinSet ExStyle, +0x20 ; чтобы клики проходили сквозь окошко
			WinSet Transparent, 255 ; прозрачность окна: 0 - максимальная, 255 - непрозрачное 
			WinSet AlwaysOnTop, On
		} else 
		 {
			WinSet ExStyle, -0x20
			WinSet Transparent, 255
			WinSet AlwaysOnTop, Off
			; переключаем режим &quot;поверх всех&quot; в окне игры, чтобы окошко ушло на задний план
			WinSet AlwaysOnTop, On, A
			WinSet AlwaysOnTop, Off, A
		 }
	}
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Michael]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=41356</uri>
			</author>
			<updated>2021-12-05T12:48:05Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=150959#p150959</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Простой секундомер в виде отдельного окна (динамический)]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=150916#p150916" />
			<content type="html"><![CDATA[<p><strong>Michael</strong>, если скрипт применяется для игры, он должен быть в соответствующей ветке, переношу.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2021-12-03T06:51:08Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=150916#p150916</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Простой секундомер в виде отдельного окна (динамический)]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=150913#p150913" />
			<content type="html"><![CDATA[<p><strong>__Михаил__</strong><br />К сожалению, нет...<br />Некоторые игры крашатся при такое функцией, потестил, тут именно нужно что-то с прозрачность сделать.</p>]]></content>
			<author>
				<name><![CDATA[Michael]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=41356</uri>
			</author>
			<updated>2021-12-03T00:09:55Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=150913#p150913</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Простой секундомер в виде отдельного окна (динамический)]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=150912#p150912" />
			<content type="html"><![CDATA[<p>Тут дело со стилем Gui, а я стилями мало знаком, редко их использую.<br />Как такой вариант:</p><div class="codebox"><pre><code>SW=1
Gui -Caption +AlwaysOnTop +LastFound 
Gui, Font, s50, impact
Gui Color, 0x1c9900
WinSet, TransColor, 0x1c9900
Gui Add, Text, vText x8 y8 w250 h60 +0x200, --:--:--
Gui Show, w400 h100 NA, Секундомер
Return

GuiEscape:
GuiClose:
ExitApp

F10::
Time := A_TickCount
SetTimer, Now, 1000
Now:
GuiControl,, Text, % FormatTime(A_TickCount-Time)
Return

FormatTime(Time){
 Local Rest, Hours, Min, Sec
 If (Time &lt; 0)
  Return &quot;00:00:00&quot;
 Rest := Mod(Time, 3600000)
 Hours := Format(&quot;{:02d}&quot;, Time // 3600000)
 Min := Format(&quot;{:02d}&quot;, Rest // 60000)
 Sec := Format(&quot;{:02d}&quot;, Mod(Rest, 60000) // 1000)
 Return Hours &quot;:&quot; Min &quot;:&quot; Sec
}

F9::
If (SW := !SW)
 Gui Show, NA
Else
 Gui Hide
Return</code></pre></div>]]></content>
			<author>
				<name><![CDATA[__Михаил__]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=40928</uri>
			</author>
			<updated>2021-12-02T23:39:38Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=150912#p150912</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Простой секундомер в виде отдельного окна (динамический)]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=150911#p150911" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>__Михаил__ пишет:</cite><blockquote><p>Вот пример с Gui:</p><div class="codebox"><pre><code>Gui -MinimizeBox -MaximizeBox
Gui Add, Text, vText x8 y8 w120 h23, --:--:--
Gui Add, Button, gGT x136 y8 w80 h23, Запуск
Gui Show, w222 h39, Секундомер
Return

GuiEscape:
GuiClose:
ExitApp

GT:
Time := A_TickCount
SetTimer, Now, 1000
Now:
GuiControl,, Text, % FormatTime(A_TickCount-Time)
Return</code></pre></div></blockquote></div><p>Спасибо большое! Начинаю подгонять под то что нужно.</p><p>Сделал прозрачный фон, убрал кнопки, запуск по горячей клавише - все работает.</p><p>На F9 хотел сделать реализацию &quot;скрыть/показать&quot; поверх игры, но вместо скрытия оно окрашивается в зеленый и не скрывается... В чем может быть проблема? Понимаю, что что-то с прозрачностью перемудрил...<br /></p><div class="codebox"><pre><code>gui -caption +alwaysontop +lastfound 
gui, font, s50, impact
gui color, 0x1c9900
winset, transcolor, 0x1c9900
Gui Add, Text, vText x8 y8 w250 h60 +0x200, --:--:--
Gui Show, w400 h100, Секундомер
Return

GuiEscape:
GuiClose:
ExitApp

F10::
Time := A_TickCount
SetTimer, Now, 1000
Return

Now:
GuiControl,, Text, % FormatTime(A_TickCount-Time)
Return

FormatTime(Time) {
	Local Rest, Hours, Min, Sec
	If Time &lt; 0
		Return &quot;00:00:00&quot;
	Rest := Mod(Time, 3600000)
	 Hours := Format(&quot;{:02d}&quot;, Time // 3600000)
	 Min := Format(&quot;{:02d}&quot;, Rest // 60000)
	 Sec := Format(&quot;{:02d}&quot;, Mod(Rest, 60000) // 1000)
	Return Hours &quot;:&quot; Min &quot;:&quot; Sec
}

F9::
	IfWinExist, Секундомер
	{
		WinGet ExStyle, ExStyle
		if Not (ExStyle &amp; 0x8)  ; 0x8 is WS_EX_TOPMOST. The window is always-on-top.
		{
			WinSet ExStyle, +0x20 ; чтобы клики проходили сквозь окошко
			WinSet Transparent, 255 ; прозрачность окна: 0 - максимальная, 255 - непрозрачное 
			WinSet AlwaysOnTop, On
		} else 
		 {
			WinSet ExStyle, -0x20
			WinSet Transparent, 255
			WinSet AlwaysOnTop, Off
			; переключаем режим &quot;поверх всех&quot; в окне игры, чтобы окошко ушло на задний план
			WinSet AlwaysOnTop, On, A
			WinSet AlwaysOnTop, Off, A
		 }
	}

</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Michael]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=41356</uri>
			</author>
			<updated>2021-12-02T23:25:02Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=150911#p150911</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Простой секундомер в виде отдельного окна (динамический)]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=150909#p150909" />
			<content type="html"><![CDATA[<p>Вот пример с Gui:</p><div class="codebox"><pre><code>Gui -MinimizeBox -MaximizeBox
Gui Add, Text, vText x8 y8 w120 h23, --:--:--
Gui Add, Button, gGT x136 y8 w80 h23, Запуск
Gui Show, w222 h39, Секундомер
Return

GuiEscape:
GuiClose:
ExitApp

GT:
Time := A_TickCount
SetTimer, Now, 1000
Now:
GuiControl,, Text, % FormatTime(A_TickCount-Time)
Return</code></pre></div>]]></content>
			<author>
				<name><![CDATA[__Михаил__]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=40928</uri>
			</author>
			<updated>2021-12-02T23:02:02Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=150909#p150909</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Простой секундомер в виде отдельного окна (динамический)]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=150908#p150908" />
			<content type="html"><![CDATA[<p>Вроде уже обсуждали такое.</p>]]></content>
			<author>
				<name><![CDATA[__Михаил__]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=40928</uri>
			</author>
			<updated>2021-12-02T22:56:07Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=150908#p150908</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: Простой секундомер в виде отдельного окна (динамический)]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=150907#p150907" />
			<content type="html"><![CDATA[<p>Приветствую!<br />Хотелось бы реализовать простой секундомер в виде отдельного окна GUI, которое будет при нажатии на клавишу (в примере F2) - показываться в определенной области экрана, при повторном нажатии клавиши - скрываться.<br />Запускает секундомер другая клавиша (в примере - F1).<br />В данном примере показывается статические цифры, а мне хотелось бы что они были динамическими, т.е. чтобы я мог бы видеть идущие секунды при нажатии F2.<br />Элементы окна я думаю сам смогу убрать, и шрифт побольше сделать тоже. В первую очередь хочется понять как сделать это элементов GUI (отдельного окна) и чтобы циферки бегали, без статики. <br /></p><div class="codebox"><pre><code>F1:: time := A_TickCount ; старт таймера

F2:: msgbox, % &quot;Прошло времени: &quot; FormatTime(A_TickCount-time)

FormatTime(Time) {
	Local Rest, Hours, Min, Sec
	If Time &lt; 0
		Return &quot;00:00:00&quot;
	Rest := Mod(Time, 3600000)
	 Hours := Format(&quot;{:02d}&quot;, Time // 3600000)
	 Min := Format(&quot;{:02d}&quot;, Rest // 60000)
	 Sec := Format(&quot;{:02d}&quot;, Mod(Rest, 60000) // 1000)
	Return Hours &quot;:&quot; Min &quot;:&quot; Sec
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Michael]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=41356</uri>
			</author>
			<updated>2021-12-02T22:34:40Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=150907#p150907</id>
		</entry>
</feed>
