Javascript-форум (https://javascript.ru/forum/)
-   Internet Explorer (https://javascript.ru/forum/css-html-internet-explorer/)
-   -   Таймер обратного отсчёта на .hta (https://javascript.ru/forum/css-html-internet-explorer/23397-tajjmer-obratnogo-otschjota-na-hta.html)

Magneto 22.12.2011 22:58

стр. 53:
Код:

oShell.SendKeys "% n{down 3}{enter}"

bk99 23.12.2011 10:02

Цитата:

Сообщение от nerv_
как мне кажется, зная дескриптор окна через Win API (VBScript) можно нарулить то, что Вам нужно.

Увы, я не умею...

Цитата:

Сообщение от nerv_
какая строка за это отвечает

вот рабочий пример:
<html>
<head>
<title></title>
  <hta:application
    applicationname=test
  />
<script language="VBScript">
	sub start()
		Set oShell = CreateObject("WScript.Shell")
        oShell.SendKeys "% n{DOWN 3}{ENTER}"
	end sub
</script>
</head>
<body>

<button onclick="start">Свернуть</button></td>

</body>
</html>

bk99 19.02.2012 13:17

Ну вот, сделал, что хотел:



При запуске Таймер сворачивается на панель задач, а по истечении времени пикает системным динамиком и выбрасывает окно с предупреждением.
Можно ли сделать так, чтобы главное окно Таймера нельзя было масштабировать (растягивать) потянув за уголок или за рамку окна?
Спасибо.

Magneto 19.02.2012 14:05

<hta:application
  id="MyApp"
  applicationname="MyApp"
  border="dialog"
  borderstyle="normal"
  innerborder="no"
  icon="myapp.ico"
  maximizeButton="no"
  minimizeButton="yes"
  scroll="no"
  selection="no"
  showintaskbar="yes"
  singleinstance="yes"
  version="1.0">
</hta:application>

bk99 19.02.2012 18:00

Цитата:

Сообщение от Magneto (Сообщение 158442)
...
  border="dialog"
...

Да, то, что надо!
Спасибо!

bk99 09.03.2012 22:38

Теперь такой вопрос. Сделал, чтобы время отображалось не только в главном окне программы, но и в названии окна. Т.е. было так:
document.getElementById('c').innerHTML=f2(h)+':'+f2(m)+':'+f2(s);

а стало так:
document.title=document.getElementById('c').innerHTML=f2(h)+':'+f2(m)+':'+f2(s);

Но, почему-то, время, отображаемое в названии окна, немного отстаёт от времени, отображаемом в самой программе. Чуть-чуть, буквально на долю секунды, но отстаёт! В чём может быть причина? Как это поправить? Xочу, чтобы время там и там тикало синхронно.
Спасибо.

<title>Timer</title>
  <hta:application
	border=thin
    innerborder=no
    scroll=no
    contextmenu=no
	maximizeButton=no
  />

<script language="JavaScript">
	var h=m=s=0;
	var timeId=null;
	resizeTo(380,126);
	moveTo((screen.width/2-190),(screen.height/2-63));
function f2 (v) {return (v<10?'0'+v:v)}
function inittime(hour,min,sec) {
	h=Math.max(hour,0); m=Math.max(min,0); s=Math.max(sec,0);
	timeID=setTimeout("showtime()",1000)}
function showtime() {
	var t=h*3600+m*60+s;
	setTimeout("showtime()",1000);
	document.title=document.getElementById('c').innerHTML=f2(h)+':'+f2(m)+':'+f2(s);
	if (t>0) {changetime()}
	else {fin()}}
function changetime() {
	s--;
	if (s<0) {
		s=59;
		m--;
		if (m<0) {
			m=59;
			if (h>0) h--;
	else {h=m=s=0}}}}
</script>

<script language="VBScript">
sub fin()
	Set S = CreateObject("WScript.Shell")   
	S.Run "%comspec% /c" & Chr(7),0
	MsgBox "Time is over!", vbSystemModal
	close
end sub
</script>

<style>
	body {background:buttonface; margin:2}
	table {border-collapse:collapse; text-align:center}
	button {height:55; border; font:50 monospace; color:buttonshadow}
	input {background-color:buttonface; border:transparent; height:66; width:97; font:86/.77 sans-serif}
	#a {font:55 sans-serif}
	#b {font:22/.76 monospace; color:buttonshadow}
	#c {font:95/.95 sans-serif}
</style>

<div id="c">
<table>
  <tr id="a">
	<td><input id="h" value="00" maxlength="2"></td>
	<td>:
	<td><input id="m" value="00" maxlength="2"></td>
	<td>:
	<td><input id="s" value="00" maxlength="2"></td>
	<td><button title="Start" onclick="inittime(
			getElementById('h').value,
			getElementById('m').value,
			getElementById('s').value)">&#9658;</button></td>
  <tr id="b">
	<td>hour
	<td>
	<td>min
	<td>
	<td>sec
	<td>
</table>
</div>

bk99 12.05.2012 10:12

Прошу помощи в таком вопросе.
Сейчас таймер запускается по нажатии на кнопку "Start". Как сделать, чтобы таймер запускался при нажатии Enter. Т.е. вводим в поля input часы, минуты и секунды, нажимаем Enter, и таймер запускается.
Спасибо.

Kolyaj 12.05.2012 10:28

Делаем форму, кнопку Start делаем submit, запуск таймера делаем на событии onsubmit формы, не забывая остановить обработку события, чтобы форма не отправилась, profit.

bk99 12.05.2012 12:40

Kolyaj, спасибо за ответ!
Честно говоря, имею наглость надеяться на то, что _НекийДобрыйЧеловек_ сделает это всё за меня покажет мне на примере как это всё делается. Сам я не силён в этом.
Мне правда очень неудобно!
Прошу прощения!

bk99 03.06.2012 14:21

Цитата:

Сообщение от bk99 (Сообщение 173945)
Как сделать, чтобы таймер запускался при нажатии Enter.

в кнопку button просто добавил
type="submit"
и всё заработало!
т.е. стало так:
<button type="submit" title="Start" onclick="inittime(getElementById('h').value,getElementById('m').value,getElementById('s').value)">

А как теперь сделать, чтобы кнопка button исчезла? Если поставить style="display:none;", то кнопка становится невидна, но и таймер по Enter не запускается.
Спасибо.


Часовой пояс GMT +3, время: 07:27.