PCCar.ru - Ваш автомобильный компьютер

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   iCarDS (http://pccar.ru/forumdisplay.php?f=121)
-   -   iCarDS + Сон, Гибридный сон и Гибернация (http://pccar.ru/showthread.php?t=23331)

seriousstas 17.10.2015 03:47

Krysanov
Цитата:

Давай уже в студию, хочу тоже потестить..
Держи (видео работы и файлы добавил в шапку) , спрашивай , если не ясно чего...
WinClose("iCar DS") должно быть в конце . Перед ним закрывай , всё , что нужно
Запуск сверху (рядом с Run("taskkill....). Икар запускается самим скриптом без доп. команд .
Код:

#NoTrayIcon ; спрятать икону из трея
#RequireAdmin ; Запуск от админа
#include
#pragma compile(Icon, "C:\Users\carPC\Documents\iCarDS\skins\Chameleon\Scripts\iCar_ico.ico") ; Переместить иконку по тому-же пути
Sleep(3000) ; Поставить нужное время
Run("taskkill /f /im BlueSoleilCS.exe","", @SW_HIDE) ; Закрыть системный процесс при старте
Global $PBT_APMSUSPEND = 0x0004
Global $PBT_APMRESUMESUSPEND = 0x0007
$hGUI = GUICreate("Restart", 100, 100, 1, 1)
GUIRegisterMsg($WM_POWERBROADCAST, "Standby")

Local $omyerror
$omyerror = ObjEvent("AutoIt.Error", "MyErrFunc")
Dim $vol_from_speed[201]
Global $rr = ObjCreate("RideRunner.sdk")
_main()

Func myerrfunc()
        $hexnumber = Hex($omyerror.number, 8)
        Exit
EndFunc

Func _initvolarray()
        $delta = 0
        $vol_from_speed[0] = $delta
        For $i = 0 To 150 Step 10
                $tmp_vol_from_speed = $rr.getinfo("=$vol_from_speed_" & $i + 10 & "$") / 10
                For $j = 1 To 10 Step 1
                        $delta = $delta + $tmp_vol_from_speed
                        $vol_from_speed[$i + $j] = Round($delta, 2)
                Next
        Next
        For $i = 162 To 200 Step 1
                $delta = $delta + $tmp_vol_from_speed
                $vol_from_speed[$i] = Round($delta, 2)
        Next
EndFunc

Func _main()
        Global $iswork = 1
        Global $isrun = 0
        Global $name = "[CLASS:TSkinForm]"
        Global $namecontrol = ""
        Global $foobarwindowtitleprev = ""
        Global $speed_prev = Round(Number($rr.getinfo("$IsDriveSpd$")), 0)
        Global $speed_prev_round = Round($speed_prev, -1)
        Global $vol_from_speed_full = 0
        Global $vol_min = Number($rr.getinfo("=$vol_from_speed_min$"))
        Global $vol_max = Number($rr.getinfo("=$vol_from_speed_max$"))
        _initvolarray()
        $rr.execute("SetVar;vol_from_speed_full;" & Round($vol_from_speed[$speed_prev], 2))
        While $iswork
                $handle = WinGetHandle($name)
                If @error Then
                        If $isrun Then
                                $iswork = 0
                        EndIf
                Else
                        $isrun = 1
                        If WinActive($name) OR WinActive("[CLASS:TOverlayForm]") OR WinActive("[CLASS:TPopupSkinForm]") OR WinActive("[CLASS:TModalSkinForm]") OR WinActive("[CLASS:TMediaForm]") Then
                                $rr.execute("SETIND;!iCarDS_Active;ON")
                        Else
                                $rr.execute("SETIND;!iCarDS_Active;OFF")
                        EndIf
                EndIf
                $volume = StringSplit($rr.getinfo("VOLUME"), "%")
                If @error = 0 Then
                        $current_volume = Number($volume[1])
                Else
                        $current_volume = 0
                EndIf
                $speed_current = Round(Number($rr.getinfo("$IsDriveSpd$")), 0)
                If $speed_current > $speed_prev Then
                        $delta_vol = Round($vol_from_speed[$speed_current] - $vol_from_speed[$speed_prev], 2)
                        If $current_volume + $delta_vol < $vol_max Then $rr.execute("volperc+;" & $delta_vol & "||SetVar;vol_from_speed_full;" & $vol_from_speed[$speed_current])
                Else
                        If $speed_current < $speed_prev Then
                                $delta_vol = Round($vol_from_speed[$speed_prev] - $vol_from_speed[$speed_current], 2)
                                If $current_volume - $delta_vol > $vol_min Then $rr.execute("volperc-;" & $delta_vol & "||SetVar;vol_from_speed_full;" & $vol_from_speed[$speed_current])
                        EndIf
                EndIf
                $speed_prev = $speed_current
                If Number($rr.getinfo("=$Is_new_vol_from_speed$")) = 1 Then
                        _initvolarray()
                        $rr.execute("SetVar;Is_new_vol_from_speed;0")
                EndIf
                Sleep(300)
        WEnd
EndFunc

While 1
    Sleep(100)
WEnd

Func Standby($hWnd, $Msg, $wParam, $lParam)
    Select
        ; Вход в спящий режим
        Case $wParam = $PBT_APMSUSPEND
            Suspend()
        Case Else
    EndSelect
EndFunc

; Вход в спящий режим
Func Suspend()
  ; Закрываем foobar2000
    WinClose("foobar2000")
  ; Закрываем iCarDS
    WinClose("iCar DS")
EndFunc


Krysanov 17.10.2015 19:29

Спасибо, возьму на заметку..
Сейчас вроде все работает.. Иногда бывает вот что.. Если завожу машину, которая ушла в сон (по времени до 30 мин), то монитор не включается, голосом приветствует и тишина... Потом нажимаю кнопку включения компа, все загружается почти мгновенно:shok:
БП у меня m2-atx, , настройки электропитания выставлены как на стр 3 темы тонкая настройка электропитания
http://www.pccar.ru/showthread.php?t...F0%EE%E9%EA%E0

Krysanov 18.10.2015 16:41

Во , как бывает.. Обнаружил, что настройки внешней звуковой карты сбрасываются по дефолту (все на одном уровне). Сон тут может быть причиной?

Krysanov 19.10.2015 18:39

Seriousstas, в первом посте темы пункт 2 ты пишешь

Убрал из третей строки ExecTBL.ini папки Chameleon команду
Код:
||RUN;$skinpath$Scripts\iCarMainScript.exe

Если не пользоваться твоим первым вариантом скрипта, и применить то, что ты предложил.. Ничего не нарушится? Сам пока не пробовал

seriousstas 19.10.2015 19:27

Цитата:

Сообщение от Krysanov (Сообщение 340840)
Seriousstas, в первом посте темы пункт 2 ты пишешь

Убрал из третей строки ExecTBL.ini папки Chameleon команду
Код:
||RUN;$skinpath$Scripts\iCarMainScript.exe

Если не пользоваться твоим первым вариантом скрипта, и применить то, что ты предложил.. Ничего не нарушится? Сам пока не пробовал

Это команда на запуск скрипта iCarMainScript.exe вместе с Икаром .
Тк мы теперь наоборот - скриптом запускаем Икар - она просто не
нужна (если оставить, то в памяти будет висеть дубликат...).
Ничего не нарушается - метод обкатан несколько недель ..

Krysanov 19.10.2015 20:11

Цитата:

Сообщение от seriousstas (Сообщение 340841)
Это команда на запуск скрипта iCarMainScript.exe в места с Икаром .
Тк мы теперь наоборот - скриптом запускаем Икар - она просто не
нужна (если оставить, то в памяти будет висеть дубликат...).
Ничего не нарушается - метод обкатан несколько недель ..

Спасибо, Стас

Krysanov 20.10.2015 18:13

Lexx09, нужна проверка скрипта
Так будут "отваливаться" лишние иконки?

Krysanov 20.10.2015 18:16

Цитата:

Сообщение от Krysanov (Сообщение 340846)
Спасибо, Стас

Убрал из 3 строки ExecTBL.ini папки Chameleon

Код:

||RUN;$skinpath$Scripts\iCarMainScript.exe
теперь иконка iCarMainScript.exe не появляется вообще
Это правильно?

seriousstas 20.10.2015 18:36

Цитата:

Сообщение от Krysanov (Сообщение 340937)
Убрал из 3 строки ExecTBL.ini папки Chameleon

Код:

||RUN;$skinpath$Scripts\iCarMainScript.exe
теперь иконка iCarMainScript.exe не появляется вообще
Это правильно?

Верхняя строка #NoTrayIcon ; спрятать икону из трея
можно убрать если нужна иконка в трее...

Наличие скрипта можно посмотреть в "Диспетчере задач"

Кстати по твоей ссылке #207 никакого скрипта не видно ..

Krysanov 20.10.2015 19:08

вопрос по существу... ссд быстрее умрет, если пользоваться сном?

Krysanov 20.10.2015 19:10

Цитата:

Сообщение от seriousstas (Сообщение 340940)
Верхняя строка #NoTrayIcon ; спрятать икону из трея
можно убрать если нужна иконка в трее...

Наличие скрипта можно посмотреть в "Диспетчере задач"

Кстати по твоей ссылке #207 никакого скрипта не видно ..

ясно, посмотрю в "Диспетчере задач"

seriousstas 21.11.2015 02:16

Lexx09
Вопрос задержек важен для корректного выхода из сна , вот решил ещё потестить :
http://pccar.ru/showpost.php?p=336689&postcount=107
выяcнил , что ни под 8.1 ни под 10 это не работает ,
соответственно и не будут работать задержки типа :
Цитата:

If (ProcessWaitClose("iCarDS.exe", 3) == 0) Then
ProcessClose("iCarDS.exe")
EndIf
If (ProcessWaitClose("SP Dialer.exe", 3) == 0) Then
ProcessClose("SP Dialer.exe")
EndIf
If (ProcessWaitClose("HD-Frontend.exe", 3) == 0) Then
ProcessClose("HD-Frontend.exe")
Может есть правильные команды для новых систем ?

Lexx09 24.11.2015 00:44

seriousstas, судя по MSDN, в Windows 8 и выше мелкософт уменьшил максимальную задержку до перехода в сон с 20 сек до примерно 2 сек. Если приложение не вернуло управление обратно в систему в течение 2 сек с момента начала перехода в сон, то оно принудительно прерывается.

Цитата:

Сообщение от Microsoft

An application should process this event by completing all tasks necessary to save data.

The system allows approximately two seconds for an application to handle this notification. If an application is still performing operations after its time allotment has expired, the system may interrupt the application.

В сети пишут, что вроде бы эта задержка не касается драйверов. Т.о., для задержки перехода в сон Windows 8 и выше нужно писать драйвер. Обычным приложением задержку не сделать.

seriousstas 25.11.2015 01:40

Цитата:

Сообщение от Lexx09 (Сообщение 344513)
seriousstas, судя по MSDN, в Windows 8 и выше мелкософт уменьшил максимальную задержку до перехода в сон с 20 сек до примерно 2 сек. Если приложение не вернуло управление обратно в систему в течение 2 сек с момента начала перехода в сон, то оно принудительно прерывается.



В сети пишут, что вроде бы эта задержка не касается драйверов. Т.о., для задержки перехода в сон Windows 8 и выше нужно писать драйвер. Обычным приложением задержку не сделать.

Понял , "засада"...

seriousstas 26.11.2015 03:41

Сегодня случайно забрёл в настройки ком порта FTDI от HDRadio (висит на 8-м)
увеличил параметр время ожидания в мс с 16 до 50 и ... чудо ,
без проблем выходит из сна .Отпала необходимость в рестарте Икара.

Lexx09 не по теме - при запуске Фубара через шаблон "FSReal"
иконка не становится прозрачной(нужно тыкать в неё пальцем. тогда светлеет ) - можешь помочь с этим?
Где-то читал твой пост , что можно контролировать это (скриптом или может при встраивании что-то поправить?).

Lexx09 26.11.2015 14:45

Цитата:

Сообщение от seriousstas (Сообщение 344731)
Lexx09 не по теме - при запуске Фубара через шаблон "FSReal"
иконка не становится прозрачной(нужно тыкать в неё пальцем. тогда светлеет ) - можешь помочь с этим?
Где-то читал твой пост , что можно контролировать это (скриптом или может при встраивании что-то поправить?).

Можно принудительно делать полупрозрачной. На Autoit как-то так:
Код:

While(True)
        $winList = WinList("[CLASS:TOverlayForm; H:68]")
        If ($winList[0][0] = 1) Then
                $hwnd = $winList[1][1]
                WinActivate("iCar DS")
                WinMove($hwnd, "", 200, 0)
                WinSetTrans($hWnd, "", 50)
        EndIf
        Sleep(100)
WEnd

Описание кода построчно:
1 - начало цикла
2 - ищем все окна с классом TOverlayForm и высотой 68 пикселей (это и есть наложенная кнопка)
3 - проверяем, сколько нашлось таких окон; если 1, то выполняем следующий код
4 - присваиваем переменной хэндл найденного окна
5 - активируем окно iCarDS, т.е. кнопку, т.к. она иногда пропадает
6 - размещаем кнопку в координатах 200,0 (смещена вправо на 200 пикселей), т.к. она иногда убегает в левый верхний угол
7 - устанавливаем прозрачность кнопки (от 0 до 255)
8 - конец условия
9 - пауза 100 мс
10 - конец цикла

Скомпилируй, закинь exe в автозагрузку. Скрипт будет работать бесконечно, и будет постоянно отслеживать наложенную кнопку.

seriousstas 27.11.2015 00:20

Lexx09
Спасибо - испробовал (запускается иконка красной , если свернуть-развернуть - зелёная и исчезает).
Предположу , после
Sleep(100)
нужно
EndIf
хотя с правкой тоже становится прозрачной , только после тычка в неё :(

Lexx09 27.11.2015 10:12

Опечатался. EndIf - вместо Else. Исправил.

Krysanov 01.12.2015 17:48

Цитата:

Сообщение от Krysanov (Сообщение 340711)
Во , как бывает.. Обнаружил, что настройки внешней звуковой карты сбрасываются по дефолту (все на одном уровне). Сон тут может быть причиной?

Апну вопрос. Очень часто такое происходит..:angry: Причем и после обычного выключения (но не уверен на 100 процентов, тк пользуюсь сейчас смешанным режимом.. На работе, в гараже использую ПОИ, комп выключается совсем, завершая работу.. Если двигаюсь на авто, то использую гибридный режим..)
Никто не сталкивался?

nicselin 01.12.2015 21:12

Цитата:

Сообщение от Krysanov (Сообщение 345195)
Апну вопрос. Очень часто такое происходит..:angry: Причем и после обычного выключения (но не уверен на 100 процентов, тк пользуюсь сейчас смешанным режимом.. На работе, в гараже использую ПОИ, комп выключается совсем, завершая работу.. Если двигаюсь на авто, то использую гибридный режим..)
Никто не сталкивался?

Было то же после перезагрузки на 8.1, на 10 такое уже не наблюдается, чему и рад...

seriousstas 02.12.2015 00:49

Lexx09
Хм ,
подправленный вариант тоже не действует на кнопку (как будто и нет скрипта...)
Кнопка с такими параметрами :
Цитата:

>>>> Window <<<<
Title:
Class: TOverlayForm
Position: 0, 0
Size: 77, 73
Style: 0x96000000
ExStyle: 0x08090008
Handle: 0x0001092A

>>>> Control <<<<
Class: TSkin
Instance: 1
ClassnameNN: TSkin1
Name:
Advanced (Class): [CLASS:TSkin; INSTANCE:1]
ID: 67884
Text:
Position: 0, 0
Size: 77, 73
ControlClick Coords: 52, 50
Style: 0x54000000
ExStyle: 0x00000000
Handle: 0x0001092C

>>>> Mouse <<<<
Position: 52, 50
Cursor ID: 0
Color: 0x7B6B5E

Lexx09 02.12.2015 11:22

У тебя высота кнопки не 68, а 73. Попробуй так:
Код:

While(True)
        $winList = WinList("[CLASS:TOverlayForm; W:77; H:73]")
        If ($winList[0][0] = 1) Then
                $hwnd = $winList[1][1]
                WinActivate("iCar DS")
                WinMove($hwnd, "", 200, 0)
                WinSetTrans($hWnd, "", 50)
        EndIf
        Sleep(100)
WEnd


seriousstas 03.12.2015 00:46

Прогресс , спасибо!
Что-то не работало на дефолтном скине (кнопка моргала , но не исчезала)-
поставил этот
http://pccar.ru/showthread.php?t=23602
и сразу потухла, а что-б не моргала в фоне и не перемещалась ,
убрал
Код:

                WinActivate("iCar DS")
                WinMove($hwnd, "", 200, 0)

Теперь пр старте - сразу добавляется прозрачность.
Цитата:

т.к. она иногда убегает в левый верхний угол
для Фубара годится :)

seriousstas 03.12.2015 00:59

Цитата:

Сообщение от Krysanov (Сообщение 345195)
Апну вопрос. Очень часто такое происходит..:angry: Причем и после обычного выключения (но не уверен на 100 процентов, тк пользуюсь сейчас смешанным режимом.. На работе, в гараже использую ПОИ, комп выключается совсем, завершая работу.. Если двигаюсь на авто, то использую гибридный режим..)
Никто не сталкивался?

Ты используешь полное выключение , тк есть проблемы ?
Мне хватает гибридного , сейчас настроил на идеальную работу этот
процесс . Перезапуск Икара (и др) все-таки оставил и все-таки отдельной прогой . Если правильно отстроить цепочку (открыть-закрыть) и использовать только
WinClose(" программа.exe") на входе (без ProcessClose)
проблем не должно быть .
Для старта при обычной загрузке использую планировщик .
Примерный вид моего скрипта :
Код:

#NoTrayIcon
#RequireAdmin
#pragma compile(Icon, "C:\Program Files (x86)\AutoIt3\Icons\au3script_v9.ico")
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_UseUpx=y
#AutoIt3Wrapper_Run_AU3Check=n
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

#include
; Это команда на сон
Global $PBT_APMSUSPEND = 0x0004
Global $PBT_APMRESUMESUSPEND = 0x0007

$hGUI = GUICreate("Restart", 100, 100, 1, 1)
GUIRegisterMsg($WM_POWERBROADCAST, "Standby")

 
While 1
        $winList = WinList("[CLASS:TOverlayForm; W:77; H:73]")
        If ($winList[0][0] = 1) Then
                $hwnd = $winList[1][1]
                WinSetTrans($hWnd, "", 50)
        EndIf
        Sleep(10000)
WEnd


Func Standby($hWnd, $Msg, $wParam, $lParam)
    Select
        ; Вход в спящий режим
        Case $wParam = $PBT_APMSUSPEND
            Suspend()
        ; Выход из спящего режима
        Case $wParam = $PBT_APMRESUMESUSPEND
            ResumeSuspend()
        Case Else
    EndSelect
EndFunc

; Вход в спящий режим
Func Suspend()
WinClose("iCar DS")
WinClose("Vkey_ARDUINO")
WinClose("CityGuide")
WinClose("foobar2000")


EndFunc

; Выход из спящего режима
Func ResumeSuspend()
    ; Закрываем BlueSoleilCS
    Run('taskkill /f /im BlueSoleilCS.exe',"", @SW_HIDE)
 
    If (ProcessWaitClose("iCarDS.exe", 3) == 0) Then
        WinClose("iCar DS")
  EndIf
  If (ProcessWaitClose("Vkey_ARDUINO.exe", 3) == 0) Then
        ProcessClose("Vkey_ARDUINO.exe")
  EndIf
    If (ProcessWaitClose("foobar2000.exe", 3) == 0) Then
        WinClose("foobar2000")
  EndIf
Sleep(500)
    ShellExecute("C:\Users\carPC\Documents\iCarDS\skins\Chameleon\Scripts\Vkey_СARDUINO.exe")
Sleep(1000)
    ; Запускаем iCarDS
    ShellExecute("C:\Program Files (x86)\TipTop software\iCar DS\iCarDS.exe")

EndFunc

На выходе из сна - обычная проверка , если вдруг чего не успело закрыться + запуск...
Ещё возможное решение Твоего вопроса :
http://pccar.ru/showpost.php?p=345011&postcount=24

Krysanov 03.12.2015 05:14

Спасибо за развёрнутый ответ.

Lexx09 03.12.2015 10:54

Цитата:

Сообщение от seriousstas (Сообщение 345334)
Прогресс , спасибо!
Что-то не работало на дефолтном скине (кнопка моргала , но не исчезала)

Моргает потому, что iCarDS задает свою прозрачность (вернее, ее отсутствие), а скрипт - свою. Странно, что iCarDS не делает кнопку прозрачной...:dntknw: Может, сам что-то накрутил в скине?

seriousstas 03.12.2015 16:55

Цитата:

Может, сам что-то накрутил в скине?
В сам скин не лазил , да особо не экспериментировал - заработало с этим самодельным Classic - так и пользуюсь )
PS : поклацал сегодня - всё ок на любом скине , не знаю , что вчера было ,
а по-поводу
Цитата:

Странно, что iCarDS не делает кнопку прозрачной
это только с Фубаром так - причём с любым .

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

Lexx09 08.12.2015 00:37

Цитата:

Сообщение от mendisabal (Сообщение 330493)
короче блюстак вроде и спит ,но сабака не так ,после каждого просыпания гпс брайд по новой конектиться к гпс гейту ,о чем последний и свидетельствует кол-вом подключений ,в итоге после 6 таких подключений гпс гейт загораеться желтеньким ,типо хватит меня тормошить ,заепали вы вас много а я один) ну и собственно чистая перезагрузка всего блюстака ,новый конект - все в норме .

Что-то я засомневался в том, что GPSBridge после сна подключается по новой к GpsGate, и она после 6 снов/подключений отказывается работать. Желтеет GpsGate из-за того, что с приемника идут невалидные координаты. Скорее всего, просто совпадение.

Но решил проверить на домашнем компе. На нем установлены: iCarDS, Bluestacks, Яндекс.Навигатор, GPSBridge, GpsGate и u-center. В качестве GPS-приемника - VK-172 с батарейкой, частота 10Гц, лежит возле окна. Не менее 6 раз входил в гибернацию с отключением питания системника. Также ждал, когда перестанет мигать светодиод на приемнике. Каждый раз при возобновлении все нормально работало - и координаты в iCarDS, и Яндекс.Навигатор. GpsGate ни разу не пожелтела. Пожелтела только тогда, когда я приемник от окна убрал подальше и накрыл разводным ключом. После обратного поднесения к окну GpsGate позеленела, координаты в iCarDS появились, Яндекс.Навигатор заработал. GpsGate пишет "1 client connected".

Посему думаю, что из Autoit-скриптов в этой теме нужно убрать завершение iCarDS, GpsGate, Bluestacks перед входом в сон, и их запуск после возобновления.

Поправил свой рабочий скрипт. В итоге в нем осталось только включение/выключение USB-реле, управляющего сигналом Remote усилителя, и слежение за кнопкой iCarDS, наложенной на встроенное приложение. Поезжу, потестирую...

PS: Мне кажется, с батарейкой вместо ионистора лучше стал прием. :dntknw: Убрал приемник от окна в глубь квартиры - ловит. Накрыл дуршлагом - ловит. Положил сверху на приемник разводной ключ - сигнал пропал, хотя изредка все-же пробегали зеленые спутники (в u-center). А раньше, когда только купил, что-то не хотел ловить спутники в квартире. Хотя, может, это спутники мощные налетели...

seriousstas 08.12.2015 06:42

Lexx09
Нет Блюстака (пока нет надобности) , но мысли такие :
Цитата:

Но решил проверить на домашнем компе
Парочка девайсов (BT и Радио Г а Г а) без проблем работают на домашнем
и криво в машине . Тебе нужно учесть различия в стабильности питания ,
как хабов, так и встроенных портов - дома и в Авто .
Перезапускать Икар можно и даже нужно , тк в итоге эта сложная "махина" работает
всё-таки стабильнее . Есть и разные мелкие преимущества , например бегущая
строка сикбара Фубара пытается "догнать" время после восстановления , после перезапуска - норм .
Но кроме Икара нужно подумать последовательность закрытия-открытия и ,
как и писал ранее - стараться не использовать ProcessClose. Скриптик , что выше -
ещё ни разу не подкачал(можно прикинуть его работу сейчас здесь (на 5-й мин) http://pccar.ru/showpost.php?p=345707&postcount=581) . Сложнее всего при гибридом сне загрузка после Гибернации ,
что без проблем решается проверкой( If (ProcessWaitClose) при выходе из сна ...
В этом случае бывает та самая 1-3 секундная задержка . Те запуск вместо 10
получается на пару секунд дольше
Цитата:

VK-172 с батарейкой
- пошёл заказывать)

seriousstas 10.12.2015 02:36

Lexx09
Есть загадка , как отдельный скрипт для Сна работает ,
даже при значении
While 1
Sleep(99999999)
WEnd
?
Тесть выходит - цикла вообще не нужно , а достаточно аналога
#Persistent , как в AHK , просто в Autoit такого нет .

Это позволяет поставить секунд 10-ть для иконки и избежать моргания :
Код:

While 1
        $winList = WinList("[CLASS:TOverlayForm; W:77; H:73]")
        If ($winList[0][0] = 1) Then
                $hwnd = $winList[1][1]
                WinSetTrans($hWnd, "", 50)
        EndIf
        Sleep(10000)
WEnd

Проверил - поправил.

Lexx09 10.12.2015 10:46

Честно говоря, ничего не понял. :dntknw: В чем загадка-то?

Цикл нужен для того, чтобы постоянно висеть в памяти и мониторить кнопку.

seriousstas 10.12.2015 17:44

Lexx09
Цитата:

В чем загадка-то?
Хотел , для себя разобраться :)
Речь не про кнопку. Вопрос , КАК отслеживание режимов сна продолжается,
даже при высоких задержках Sleep.
Выше писал , что сунул "мониторинг кнопки" в скрипт для отслеживания сна , вместо его цикла и
все работает , но неясно как ,при условии, что увеличить задержку например со 100мс до хоть Sleep(99999999) .
Выходит , мониторинг продолжается и без цикличности , но КАК ??
+ увеличив значение Sleep - перестаёт моргать кнопка...
Цитата:

чтобы постоянно висеть в памяти
это ясно , но повторюсь - в AHK есть команда #Persistent - держать скрипт запущенным , в autoit такого не нашел

Lexx09 10.12.2015 18:17

Цитата:

Сообщение от seriousstas (Сообщение 345947)
Вопрос , КАК отслеживание режимов сна продолжается,
даже при высоких задержках Sleep.

А, ну это просто...

Этим кодом создается окно, которое ловит широковещательное сообщение WM_POWERBROADCAST, рассылаемое ОС всем окнам:
Код:

$hGUI = GUICreate("Restart", 100, 100, 1, 1)
GUIRegisterMsg($WM_POWERBROADCAST, "Standby")

При поступлении сообщения WM_POWERBROADCAST автоматически вызывается функция Standby, которая обрабатывает один из параметров сообщения. Если параметр равен PBT_APMSUSPEND, то это событие "Переход в спящий/гибридный режим", вызывается функция Suspend. Если PBT_APMRESUMESUSPEND - то "Возобновление из спящего/гибридного режима", вызывается функция ResumeSuspend.

Окно ловит сообщение всегда, независимо от того, сколько там в Sleep прописано.

seriousstas 10.12.2015 23:44

Цитата:

Сообщение от Lexx09 (Сообщение 345951)
А, ну это просто...

Этим кодом создается окно, которое ловит широковещательное сообщение WM_POWERBROADCAST, рассылаемое ОС всем окнам:
Код:

$hGUI = GUICreate("Restart", 100, 100, 1, 1)
GUIRegisterMsg($WM_POWERBROADCAST, "Standby")

....

Понял - большое Спасибо! за разъяснения .

Krysanov 24.12.2015 20:23

Seriousstas, lexx09, привет!!
Решил снести систему и поставить ваши сборки (по очереди), применить скрипты и посмотреть как поведёт себя комп после гипер сна.. У меня ничего не получается.. Все этот бридж не перезапускается, чего бы я не делал..
Так как у вас обоих все работает и не глючит вот уже продолжительное время, думаю и у меня получится.. Жду от вас ссылок на ваши сборки в личку..

seriousstas 25.12.2015 04:24

Krysanov
Привет!
Цитата:

Жду от вас ссылок на ваши сборки в личку..
Сборки чего ? Скрипт который использую - на предидущей странице .

mendisabal 25.12.2015 14:28

Цитата:

Сообщение от seriousstas (Сообщение 347102)
Сборки чего ?

виндовса , я так понимаю , на которых вы сами сидите .
вот 10 ка , сам пока только собирась , должна быть норм .

Krysanov 25.12.2015 18:26

Цитата:

Сообщение от mendisabal (Сообщение 347125)
виндовса , я так понимаю , на которых вы сами сидите .
вот 10 ка , сам пока только собирась , должна быть норм .

За 10-ку спасибо.. Только очкую пока её ставить

Krysanov 25.12.2015 18:38

Цитата:

Сообщение от seriousstas (Сообщение 347102)
Krysanov
Привет!

Сборки чего ? Скрипт который использую - на предидущей странице .

Сборка винды

mendisabal 25.12.2015 18:46

Цитата:

Сообщение от Krysanov (Сообщение 347136)
Только очкую пока её ставить

с 8.1 минимальная разница ,по драйверам и т.п. но что бы 100% работали как надо чужие макросы ,возможно будет лучше перестраховаться , например , написал макрос под 7 , который посылал нужные мне нажатия в фубар , на 8.1 перелопатили все коды окон , не фурычит зараза , думаю в 10 еше раз его перевернули с верх на голову . По названию активного окна не прокатывало .


Часовой пояс GMT +4, время: 03:06.

Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot