Показать сообщение отдельно
Старый 10.08.2015, 12:31   #34
Krysanov
Super Moderator
 
Аватар для Krysanov
 
Регистрация: 12.11.2013
Возраст: 45
Город: Горно-Алтайск
Регион: 04
Машина: lexus rx300
Сообщений: 3,146
Krysanov is a splendid one to beholdKrysanov is a splendid one to beholdKrysanov is a splendid one to beholdKrysanov is a splendid one to beholdKrysanov is a splendid one to beholdKrysanov is a splendid one to beholdKrysanov is a splendid one to beholdKrysanov is a splendid one to behold
По умолчанию

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

Чтобы закрывать программы при переходе в сон - нужно отслеживать сообщение 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 <WindowsConstants.au3>
#include <GUIConstants.au3>
#include <MsgBoxConstants.au3>

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
Жму руку, с уважением Андрей
__________________
Windows 8.1, 64 бит, iCar DS 1.7.0.60
LGA 1155 Intel(R) Core(TM) i5-3570 CPU @ 3,4 GHz (6 Mb), 2x DDRIII 4Gb 1333 MHz KINGMAX, ASRock IntelB75, VGA (DVI+HDMI)+PCX16 3,0, SSD TOSHIBA OCZ tr150 на 240 GB, 2,5 Samsung SATA 1 Tb 5400 rpm, 8Mb, M4-atx -hv
Проект Кристалл-М=многоканальный звук в Lexus rx300 на базе CarPC!
Установка Windows, iCarDS и всего, что необходимо для CarPC!
_________________________________________

Krysanov вне форума   Ответить с цитированием