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 10.08.2015 01:16

Krysanov
Цитата:

seriousstas, как у тебя работает после длительного 3-4 часового сна?
Работает без проблем и после полного отключения питания .
Если у тебя работает и включен "гибридный сон " , то после перехода в гибернацию
действует тот-же Код события: 1 . И всё должно также, как и при обычном сне запускаться.
Я так понимаю , после гибернации загружается просто рабочий стол ?
Попробуй несколько действий :
Отключи , выгрузи другие скрипты , то-же от LEXX09 ,тк одновременно (без правки) они работать не будут.
На вкладке "Параметры" планировщика поставь галку "Немедленно запускать..." и убери с "Принудительная остановка.."
Убери все таймеры в настройках электропитания винды , поставь "никогда"
Там-же отключи "быстрый запуск" и перезагрузи систему .
Помести IcarStart.exe в папку с английским названием или в корень диска .
Задачу тоже назови(и создай всё поновой) на инглише .
Попробуй разные значения
Sleep, 2200
Больше - например 5000 ,
или меньше 500 .
Если не поможет , увы не знаю тогда, но догадываюсь , что возможно причина в обрезанной винде .

Lexx09 10.08.2015 12:25

Цитата:

Сообщение от Krysanov (Сообщение 334957)
Что то никто не отвечает... видать что то застопорилось..
LEXX09 посмотри, пожалуйста, этот код.. будет работать? Или что-нибудь добавить нужно?
Замысел в том, чтобы перед сном GPSGATE, икар, программа-звонилка для интернета закрывались, а после пробуждения, в том числе длительного трех и более часов запускались

В этом коде не отслеживается переход в сон. Соответственно, перед сном ничего закрываться не будет. Закрытие программ и их запуск будут происходить после выхода из сна.

Чтобы закрывать программы при переходе в сон - нужно отслеживать сообщение PBT_APMSUSPEND. См. тут.

ProcessClose("SP Dialer.exe.exe") - один exe лишний, должно быть ProcessClose("SP Dialer.exe")

В общем, будет примерно так:
Код:

#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
#include
#include

Global $PBT_APMSUSPEND = 0x0004
Global $PBT_APMRESUMESUSPEND = 0x0007

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

; Запускаем iCarDS
ShellExecute("C:\Program Files (x86)\TipTop software\iCar DS\iCarDS.exe")

While 1
    Sleep(100)
WEnd

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

; Вход в спящий режим
Func Suspend()

    ; Закрываем GpsGate, если запущена
    If ProcessExists("GpsGateXP.exe") Then
        ProcessClose("GpsGateXP.exe")
    EndIf

    ; Закрываем программу по коннекту инернета, если запущена
    If ProcessExists("SP Dialer.exe") Then
        ProcessClose("SP Dialer.exe")
    EndIf

    ; Закрываем iCarDS, если запущена
    If ProcessExists("iCarDS.exe") Then
        ProcessClose("iCarDS.exe")
    EndIf

EndFunc

; Выход из спящего режима
Func ResumeSuspend()

    ; Запускаем GpsGate
    ShellExecute("C:\Program Files (x86)\Franson\GpsGate 2.0\GpsGateXP.exe")

    ; Запускаем программу по коннекту инернета
    ShellExecute("C:\Program Files (x86)\SP Dialer\SP Dialer.exe")

    ; Запускаем iCarDS
    ShellExecute("C:\Program Files (x86)\TipTop software\iCar DS\iCarDS.exe")

EndFunc


Krysanov 10.08.2015 12:27

Цитата:

Сообщение от seriousstas (Сообщение 334963)
Krysanov

Работает без проблем и после полного отключения питания .
Если у тебя работает и включен "гибридный сон " , то после перехода в гибернацию
действует тот-же Код события: 1 . И всё должно также, как и при обычном сне запускаться.
Я так понимаю , после гибернации загружается просто рабочий стол ?
Попробуй несколько действий :
Отключи , выгрузи другие скрипты , то-же от LEXX09 ,тк одновременно (без правки) они работать не будут.
На вкладке "Параметры" планировщика поставь галку "Немедленно запускать..." и убери с "Принудительная остановка.."
Убери все таймеры в настройках электропитания винды , поставь "никогда"
Там-же отключи "быстрый запуск" и перезагрузи систему .
Помести IcarStart.exe в папку с английским названием или в корень диска .
Задачу тоже назови(и создай всё поновой) на инглише .
Попробуй разные значения
Sleep, 2200
Больше - например 5000 ,
или меньше 500 .
Если не поможет , увы не знаю тогда, но догадываюсь , что возможно причина в обрезанной винде .

Жму руку, с уважением, Андрей

Krysanov 10.08.2015 12:31

Цитата:

Сообщение от Lexx09 (Сообщение 334995)
В этом коде не отслеживается переход в сон. Соответственно, перед сном ничего закрываться не будет. Закрытие программ и их запуск будут происходить после выхода из сна.

Чтобы закрывать программы при переходе в сон - нужно отслеживать сообщение PBT_APMSUSPEND. См. тут.

ProcessClose("SP Dialer.exe.exe") - один exe лишний, должно быть ProcessClose("SP Dialer.exe")

В общем, будет примерно так:
Код:

#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
#include
#include

Global $PBT_APMSUSPEND = 0x0004
Global $PBT_APMRESUMESUSPEND = 0x0007

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

; Запускаем iCarDS
ShellExecute("C:\Program Files (x86)\TipTop software\iCar DS\iCarDS.exe")

While 1
    Sleep(100)
WEnd

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

; Вход в спящий режим
Func Suspend()

    ; Закрываем GpsGate, если запущена
    If ProcessExists("GpsGateXP.exe") Then
        ProcessClose("GpsGateXP.exe")
    EndIf

    ; Закрываем программу по коннекту инернета, если запущена
    If ProcessExists("SP Dialer.exe") Then
        ProcessClose("SP Dialer.exe")
    EndIf

    ; Закрываем iCarDS, если запущена
    If ProcessExists("iCarDS.exe") Then
        ProcessClose("iCarDS.exe")
    EndIf

EndFunc

; Выход из спящего режима
Func ResumeSuspend()

    ; Запускаем GpsGate
    ShellExecute("C:\Program Files (x86)\Franson\GpsGate 2.0\GpsGateXP.exe")

    ; Запускаем программу по коннекту инернета
    ShellExecute("C:\Program Files (x86)\SP Dialer\SP Dialer.exe")

    ; Запускаем iCarDS
    ShellExecute("C:\Program Files (x86)\TipTop software\iCar DS\iCarDS.exe")

EndFunc


Жму руку, с уважением Андрей

Krysanov 10.08.2015 17:20

seriousstas, воспользовался твоим советом, поковырялся в параметрах планировщика и вроде заработало, теперь время просыпания надо уменьшить , сек 5 вижу раб стол ....
Спасибо
...
Рано радовался, опять не загружается, буду ковырять дальше

Krysanov 10.08.2015 20:06

Lexx09, попробовал твой скрипт, скомпилировал RESTARRT.exe,скопировал на диск Д, закинул в планировщик, после просыпания, вылазит вот это

Цитата:

LINE 2326 (file "D:\RESTARRT.exe"): error: Illegal text at the end of statement (one statement per line)
Попробовал запустить "свой" код, с исправленными ошибками LEXX09, на домашнем ноуте загружается на ура, и засыпает....Но этот код отличается от крайнего... въехать не могу где ошибка..

Lexx09 11.08.2015 00:32

Лишнее Then после Case. Должно быть так:
Код:

#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
#include
#include

Global $PBT_APMSUSPEND = 0x0004
Global $PBT_APMRESUMESUSPEND = 0x0007

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

; Запускаем iCarDS
ShellExecute("C:\Program Files (x86)\TipTop software\iCar DS\iCarDS.exe")

While 1
    Sleep(100)
WEnd

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

; Вход в спящий режим
Func Suspend()

    ; Закрываем iCarDS
    WinClose("iCar DS")

    ; Закрываем программу по коннекту интернета
    ProcessClose("SP Dialer.exe")

    ; Закрываем GpsGate
    WinClose("Franson GpsGate")

EndFunc

; Выход из спящего режима
Func ResumeSuspend()

    ; Запускаем GpsGate
    ShellExecute("C:\Program Files (x86)\Franson\GpsGate 2.0\GpsGateXP.exe")

    ; Запускаем программу по коннекту интернета
    ShellExecute("C:\Program Files (x86)\SP Dialer\SP Dialer.exe")

    ; Запускаем iCarDS
    ShellExecute("C:\Program Files (x86)\TipTop software\iCar DS\iCarDS.exe")

EndFunc


seriousstas 11.08.2015 01:15

Lexx09
Я не тестил этот скрипт , но предполагаю
ProcessClose("iCarDS.exe")
"убьёт" Икар без сохранения последнего состояния
и при следующей загрузке произойдёт авто восстановление предидущих запущенных
до последнего закрытия окон .
WinClose или WinKill закрывает Икар с сохранением последнего состояния

Krysanov 11.08.2015 09:40

Попробовал исправленный lexx09 код, скомпилировал, закинул в планировщик, пару раз попробовал сон и выход с него (правда не ждал 1 час), все запустилось.. Буду дальше тестить..
Прошло три часа, все запустилось просто мгновенно.. Но вот бридж опять не зацепился с гейтом... Попробую использовать оба кода, предложенные выше, немного их доработав..

Lexx09 11.08.2015 10:42

Цитата:

Сообщение от seriousstas (Сообщение 335094)
Lexx09

Я не тестил этот скрипт , но предполагаю
ProcessClose("iCarDS.exe")
"убьёт" Икар без сохранения последнего состояния
и при следующей загрузке произойдёт авто восстановление предидущих запущенных
до последнего закрытия окон .
WinClose или WinKill закрывает Икар с сохранением последнего состояния

Да, WinClose лучше. Скрипт поправил.


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

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