Что нового

Звуковые напоминания

BiG_BoY

Новичок
Сообщения
51
Репутация
1
Версия AutoIt: 3.3.6.1

Описание: Нужно сделать программку, которая в указанное мной время(чтоб его можно было менять) издавала некие звуки(что-то вроде будильника. И если можно, сворачивала все активные окна(в последнее время перестал замечать как идёт время).
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Re: АнтиЗадрот)

Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Как правильно называть темы

"АнтиЗадрот" - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, Модератор раздела.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
BiG_BoY
Так можно свернуть все окна:
Код:
#include <SendMessage.au3>
#include <WindowsConstants.au3>

$aList = WinList()
If $aList[0][0] Then
	For $i = 1 To $aList[0][0]
		If BitAND(WinGetState($aList[$i][1]), 2) Then
			_SendMessage($aList[$i][1], $WM_COMMAND, 0x019F, 0)
		EndIf
	Next
EndIf
 

Fever

Скриптер
Сообщения
308
Репутация
112
Код:
#include <Timers.au3>

_Sleep("23:10")

Beep(100, 100)

MsgBox(0, "", ":)")

Func _Sleep($Time)
	$sT = StringSplit($Time, ":")
	If Not @error Then
		Do
		Until (@HOUR == $sT[1]) And (@MIN == $sT[2])
	Else
		SetError(1)
		Exit
	EndIf
EndFunc
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
CreatoR [?]
А чем не понравилась
WinMinimizeAll() у меня непонятно работает в следующем скрипте:
Код:
#NoTrayIcon
#include <SendMessage.au3>
#include <WindowsConstants.au3>
#include <Sound.au3>

$iTimeGoSleep = 19
$iTimeCanWork = 9
$fPlay = True
$fSleep = True

While 1
	Switch @HOUR
		Case 0 To $iTimeCanWork, $iTimeGoSleep To 23
			If $fPlay Then
				If @OSVersion = 'WIN_XP' Then
					If FileExists(@SystemDir & '\oobe\images\title.wma') Then
						$hSound = _SoundOpen(@SystemDir & '\oobe\images\title.wma')
						$sTime = _SoundLength($hSound, 1)
						ToolTip('Пора спать. Вам осталось провести за компьютером ' & $sTime, 0, 0, 'Go To Sleep', 2)
						_SoundPlay($hSound, 1)
						_SoundClose($hSound)
					EndIf
				Else
					If FileExists(@WindowsDir & '\Media\onestop.mid') Then
						$hSound = _SoundOpen(@WindowsDir & '\Media\onestop.mid')
						$sTime = _SoundLength($hSound, 1)
						ToolTip('Пора спать. Вам осталось провести за компьютером ' & $sTime, 0, 0, 'Go Sleep', 2)
						_SoundPlay($hSound, 1)
						_SoundClose($hSound)
					EndIf
				EndIf
				$fPlay = False
				$fSleep = True
				BlockInput(1)
				AdlibRegister('_Go_Sleep', 5000)
				ToolTip('Спать!!!', 0, 0, 'Go Sleep', 2)
			EndIf
		Case Else
			If $fSleep Then
				BlockInput(0)
				AdlibUnRegister('_Go_Sleep')
				ToolTip('')
				$fPlay = True
				$fSleep = False
			EndIf
	EndSwitch
	Sleep(100)
WEnd

Func _Go_Sleep()
	Local $aList = WinList()
	If $aList[0][0] Then
		For $i = 1 To $aList[0][0]
			If BitAND(WinGetState($aList[$i][1]), 2) Then
				_SendMessage($aList[$i][1], $WM_COMMAND, 0x019F, 0)
			EndIf
		Next
	EndIf
	;WinMinimizeAll()
EndFunc   ;==>_Go_Sleep
Окна моргают туда-сюда. :wacko:
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Вот вариант с WinMinimizeAll():
Код:
Global $aTime[3][2] = [[11,0],[12,0],[13,0]] ; Время отдыха

OnAutoItExitRegister("_Exit")
AdlibRegister("_Alarm")

While 1
	Sleep(250)
WEnd

Func _Alarm()
	For $i = 0 To UBound($aTime) -1
		If $aTime[$i][0] = @HOUR And $aTime[$i][1] = @MIN  And @SEC = 0 Then 
			
			WinMinimizeAll()

			While @SEC < 5
				Sleep(250)
				Beep(1000, 100)
			WEnd

		EndIf
	Next
EndFunc

Func _Exit()
	AdlibUnRegister("_Alarm")
EndFunc
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
madmasles [?]
Окна моргают туда-сюда
Потому что повторный вызов WinMinimizeAll восстанавливает окна. Возможно бага, т.к для этого есть WinMinimizeAllUndo.
Можно ещё использовать Send("#m").
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
madmasles [?]
Так можно свернуть все окна
Вообще то нет необходимости перебирать все окна, достаточно послать это сообщение панеле задач:

Код:
#include <SendMessage.au3>
_SendMessage(WinGetHandle("[CLASS:Shell_TrayWnd]"), $WM_COMMAND, 0x019F)
 
Верх