1 (изменено: Zanoza, 2013-07-19 20:26:36)

Тема: AHK: Автоотключение компьютера

Я не специалист а только учусь. Помогите пожалуйста с кодом.
Написал вот такую програмку для автоотключения компютера.

;#NoTrayIcon   ;-откл для теста
#Persistent
SetTimer , timer , 10000 , On
timer:
If A_TimeIdle > 360          ;- уменшено для теста  
{
SoundPlay, *-1
time=60
CustomColor = EEAA99
Gui, +AlwaysOnTop +LastFound +Owner 
Gui, Color, %CustomColor%
Gui, Font, s11
Gui, Add, Text, , Автоматическое выключение системы через:
Gui, Font, s40
Gui, Add, Text, vMyText cYellow, XXXX YYYY
Gui, Font, s50
Gui, Add, Button, , Отмена
WinSet, TransColor, %CustomColor% 150
Gui, -Caption
SetTimer, UpdateOSD, 1000
Gosub, UpdateOSD
Gui, Show
return
}
else
{
    return
}
UpdateOSD:
time -= 1
GuiControl,, MyText, %time% - секунд
if time < 10
SoundBeep, 1200, 200
if time = 0    
goto ,A    
return


ButtonОтмена:
Gui , Destroy 
SoundPlay, *64
SetTimer, UpdateOSD, Off
return
A:
;Run, Shutdown.exe -s -f -t 00   ; -откл для теста
ExitApp

Все бы хорошо но после появления GUI через 5 секунд выдает ошибку.
Помогите устранить проблему!
Снимок ошибки-PunBB bbcode test

Win10 x64

2

Re: AHK: Автоотключение компьютера

Команда Gui, Add создаёт контрол. У вас она вызывается таймером снова и снова, т.е. контролы плодятся как тараканы. Не надо этого делать. Gui нужно создавать один раз.

3 (изменено: Zanoza, 2013-07-20 01:56:56)

Re: AHK: Автоотключение компьютера

YMP пишет:

Команда Gui, Add создаёт контрол. У вас она вызывается таймером снова и снова, т.е. контролы плодятся как тараканы. Не надо этого делать. Gui нужно создавать один раз.

Я часть скрипта взял отсюда - Примеры  http://www.script-coding.com/AutoHotkey/GUI.html
вот пример

; Пример: отображение выполняемых функций на экране (on-screen display).
; Данный скрипт требует версию 1.0.25.13 или выше.

CustomColor = EEAA99 ; Может быть любого RGB цвета (ниже он будет сделан прозрачным).
Gui, +AlwaysOnTop +LastFound +Owner ; Опция +Owner мешает появлению кнопки на панели задач.
Gui, Color, %CustomColor%
Gui, Font, s24
; XX & YY служит для того, чтобы автоматически задать размер окна.
Gui, Add, Text, vMyText cLime, XXXXX YYYYY
; Делаем все пиксели этого цвета прозрачными, а сам текст - полупрозрачным (150):
WinSet, TransColor, %CustomColor% 150
Gui, -Caption ; Удаляем границы и заголовок окна.
SetTimer, UpdateOSD, 200
Gosub, UpdateOSD ; Не ожидая таймера, делаем сразу первое обновление.
Gui, Show, x0 y400
return

UpdateOSD:
MouseGetPos, MouseX, MouseY
GuiControl,, MyText, X%MouseX%, Y%MouseY%
return

немного переделал
но чтото я упустил
никак не пойму - поправте пожалуйста!

Win10 x64

4

Re: AHK: Автоотключение компьютера

Так я ведь сказал, что вы упустили. Поправьте лучше сами. Вам это полезно в плане изучения АНК, а мне толку никакого.

5 (изменено: Zanoza, 2013-07-20 08:41:27)

Re: AHK: Автоотключение компьютера

Немогу никак понять - и сам какбы не дурак .
Может я справку не правильно понял ,или гдето опечатка.
Прошу проверте !

Win10 x64

6 (изменено: Zanoza, 2013-07-20 09:04:30)

Re: AHK: Автоотключение компьютера

Команда Gui, Add создаёт контрол. У вас она вызывается таймером снова и снова, т.е. контролы плодятся как тараканы.
Вот таймер

UpdateOSD:
time -= 1
GuiControl,, MyText, %time% - секунд
if time < 10
SoundBeep, 1200, 200
if time = 0    
goto ,A    
return

Gui, Add  нет - или есть?
Вот так я вызываю результат (обновление )- GuiControl,, MyText, %time% - секунд
Может я не прав то подскажите чуть-чуть.

Win10 x64

7

Re: AHK: Автоотключение компьютера

Не понял юмора. Она же вроде не суслик.

8

Re: AHK: Автоотключение компьютера

YMP - ну ладно спасибо за отзыв и помощь.

Win10 x64

9

Re: AHK: Автоотключение компьютера

Gui, Add надо использовать один раз, а у вас в таймере он создается несколько раз, вот и ошибка. Как вариант, отключите таймер после первого выполнения условия.

10

Re: AHK: Автоотключение компьютера

Не доконца понял как оно должно работать, но так хоть не будет ошибки ))))


;#NoTrayIcon   ;-откл для теста
#Persistent
CustomColor = EEAA99
Gui, +AlwaysOnTop +LastFound +Owner 
Gui, Color, %CustomColor%
Gui, Font, s11
Gui, Add, Text, , Автоматическое выключение системы через:
Gui, Font, s40
Gui, Add, Text, vMyText cYellow, XXXX YYYY
Gui, Font, s50
Gui, Add, Button, , Отмена
WinSet, TransColor, %CustomColor% 150
Gui, -Caption
Gosub, UpdateOSD
Gui, Show
return

SetTimer, UpdateOSD, 1000
SetTimer , timer , 10000 , On

timer:
    if A_TimeIdle > 360          ;- уменшено для теста  
    {
        SoundPlay, *-1
        time=60
        Gosub, UpdateOSD
    }
    else
    {
        return
    }
    
UpdateOSD:
    time -= 1
    GuiControl,, MyText, %time% - секунд
    if time < 10
    SoundBeep, 1200, 200
    if time = 0    
    goto ,A    
    return


ButtonОтмена:
    Gui , Destroy 
    SoundPlay, *64
    SetTimer, UpdateOSD, Off
    return
    A:
    ;Run, Shutdown.exe -s -f -t 00   ; -откл для теста
    ExitApp