<?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=16783</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=16783&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Простой секундомер в виде отдельного окна (динамический)».]]></description>
		<lastBuildDate>Sun, 05 Dec 2021 17:41:37 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Простой секундомер в виде отдельного окна (динамический)]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=150989#p150989</link>
			<description><![CDATA[<p><strong>__Михаил__</strong><br />Огромное спасибо! Всё работает!</p>]]></description>
			<author><![CDATA[null@example.com (Michael)]]></author>
			<pubDate>Sun, 05 Dec 2021 17:41:37 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=150989#p150989</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Простой секундомер в виде отдельного окна (динамический)]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=150965#p150965</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (__Михаил__)]]></author>
			<pubDate>Sun, 05 Dec 2021 13:36:05 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=150965#p150965</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Простой секундомер в виде отдельного окна (динамический)]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=150959#p150959</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Michael)]]></author>
			<pubDate>Sun, 05 Dec 2021 12:48:05 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=150959#p150959</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Простой секундомер в виде отдельного окна (динамический)]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=150916#p150916</link>
			<description><![CDATA[<p><strong>Michael</strong>, если скрипт применяется для игры, он должен быть в соответствующей ветке, переношу.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Fri, 03 Dec 2021 06:51:08 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=150916#p150916</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Простой секундомер в виде отдельного окна (динамический)]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=150913#p150913</link>
			<description><![CDATA[<p><strong>__Михаил__</strong><br />К сожалению, нет...<br />Некоторые игры крашатся при такое функцией, потестил, тут именно нужно что-то с прозрачность сделать.</p>]]></description>
			<author><![CDATA[null@example.com (Michael)]]></author>
			<pubDate>Fri, 03 Dec 2021 00:09:55 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=150913#p150913</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Простой секундомер в виде отдельного окна (динамический)]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=150912#p150912</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (__Михаил__)]]></author>
			<pubDate>Thu, 02 Dec 2021 23:39:38 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=150912#p150912</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Простой секундомер в виде отдельного окна (динамический)]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=150911#p150911</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Michael)]]></author>
			<pubDate>Thu, 02 Dec 2021 23:25:02 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=150911#p150911</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Простой секундомер в виде отдельного окна (динамический)]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=150909#p150909</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (__Михаил__)]]></author>
			<pubDate>Thu, 02 Dec 2021 23:02:02 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=150909#p150909</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Простой секундомер в виде отдельного окна (динамический)]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=150908#p150908</link>
			<description><![CDATA[<p>Вроде уже обсуждали такое.</p>]]></description>
			<author><![CDATA[null@example.com (__Михаил__)]]></author>
			<pubDate>Thu, 02 Dec 2021 22:56:07 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=150908#p150908</guid>
		</item>
		<item>
			<title><![CDATA[AHK: Простой секундомер в виде отдельного окна (динамический)]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=150907#p150907</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Michael)]]></author>
			<pubDate>Thu, 02 Dec 2021 22:34:40 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=150907#p150907</guid>
		</item>
	</channel>
</rss>
