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

Вернуться   PCCar.ru - Ваш автомобильный компьютер > MP3Car ТехИнфа > Разработка программ > Программы управления > iCarDS

Ответ
 
Опции темы Поиск в этой теме
Старый 28.08.2015, 02:50   #101
seriousstas
Бывалый писикарщик
 
Регистрация: 14.06.2013
Регион: Украина
Машина: Nissan Qashqai+2
Сообщений: 3,424
seriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant future
По умолчанию

Цитата:
Сообщение от Lexx09 Посмотреть сообщение
Если я правильно понял, ты хочешь закрывать сам iCarDS из скрипта, который встроен в iCarDS, и который срабатывает при входе в сон? Если да, то:
  1. Закрывать родительский процесс (iCarDS.exe) из дочернего (ahk- или autoit-скрипт) не совсем неправильно. Ведь неизвестно, что там еще iCarDS будет делать после запуска встроенного скрипта. Хотя с ahk-скриптом вроде работает...
  2. Функция Suspend срабатывает в тот момент, когда Windows перед сном рассылает специальное сообщение (PBT_APMSUSPEND) всем процессам в системе. Как реализована обработка этого сообщения в iCarDS - неизвестно. Разработчик практически не участвует в наших дискуссиях.
Для экспериментов - вот код всего скрипта для встраивания в iCarDS:
Код:
WinClose("iCar DS")

If (ProcessWaitClose("iCarDS.exe", 3) == 0) Then
	ProcessClose("iCarDS.exe")
EndIf
iCar DS гарантированно запускает скрипт при входе в сон , но
вопрос успеет-ли скрипт закрыть загруженный окнами Икар ,
поэтому и спросил за SUSPEND . Представляю это так :
по нажатию кнопки или повороте ключа Икар запускает скрипт
и посылается небольшая задержка системе для корректной выгрузки Икара .
Попробовал скрипт выше - работает ! Но опять-же у меня нет ни тяжелого Икара ни слабого железа для экспериментов , поэтому спрошу , можно-ли в этот скрипт добавить задержку системе в 2 секунды перед полным отключением питания ?
seriousstas вне форума   Ответить с цитированием
Старый 28.08.2015, 04:16   #102
seriousstas
Бывалый писикарщик
 
Регистрация: 14.06.2013
Регион: Украина
Машина: Nissan Qashqai+2
Сообщений: 3,424
seriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant future
По умолчанию

sirota
Спасибо большое! Теперь есть примерная картинка работы Твоей системы ,
будет полезно тем, кто задумал апгрейд .
seriousstas вне форума   Ответить с цитированием
Старый 28.08.2015, 05:07   #103
Krysanov
Super Moderator
 
Аватар для Krysanov
 
Регистрация: 12.11.2013
Возраст: 45
Город: Горно-Алтайск
Регион: 04
Машина: lexus rx300
Сообщений: 3,145
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 Посмотреть сообщение
Смысл слежения за процессом iCarDS.exe вот в чем:
  • Если в течение заданного определенного времени, например, 3 сек, после выполнения команды WinClose("iCar DS") процесс iCarDS.exe все еще висит в памяти, то он принудительно завершается. Т.е. если iCarDS заглючил и подвис при закрытии, он будет принудительно убит, и только потом Windows уснет.
  • Если же iCarDS закрылся быстрее 3 сек, то скрипт сразу же начинает выполняться дальше, а не ждет истечения 3 сек. В результате - более быстрое наступление сна.
Функция Suspend будет такая:
Код:
; Вход в спящий режим
Func Suspend()

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

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

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

    ; Закрываем BlueStacks
    ShellExecute("C:\Program Files (x86)\BlueStacks\HD-Quit.exe")

    If (ProcessWaitClose("iCarDS.exe", 3) == 0) Then
        ProcessClose("iCarDS.exe")
    EndIfп

EndFunc
Цифра 3 в команде ProcessWaitClose - это и есть количество секунд ожидания завершения iCarDS до принудительного убития. В принципе, можно и 10 сек поставить, все равно такая пауза будет только тогда, когда iCarDS зависнет.

В варианте просто с паузой скрипт по любому будет ждать 3 сек, даже, если iCarDS закрылся за 1 сек. А если iCarDS заглючил, то при выходе из сна глюки продолжатся.
О, спасибо, очень понятно и полезно
__________________
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 вне форума   Ответить с цитированием
Старый 28.08.2015, 06:40   #104
Krysanov
Super Moderator
 
Аватар для Krysanov
 
Регистрация: 12.11.2013
Возраст: 45
Город: Горно-Алтайск
Регион: 04
Машина: lexus rx300
Сообщений: 3,145
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
Есть, например, три чувствительные ко сну программы...."iCar DS", "SP Dialer.exe" и "Franson GpsGate"

Функция Suspend будет такая?:

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

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

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

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

   
    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("iCarDS.exe", 3) == 0) Then
        ProcessClose("Franson GpsGate")
    EndIf

EndFunc
или так ?

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

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

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

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

   
    If (ProcessWaitClose("iCarDS.exe", 3) == 0) Then
        ProcessClose("iCarDS.exe")
   
 If (ProcessWaitClose("SP Dialer.exe", 3) == 0) Then
        ProcessClose("SP Dialer.exe")
    
 If (ProcessWaitClose("iCarDS.exe", 3) == 0) Then
        ProcessClose("Franson GpsGate")
     
EndIf

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 вне форума   Ответить с цитированием
Старый 28.08.2015, 09:11   #105
Игорь_К
Старший Пользователь
 
Регистрация: 27.01.2014
Город: Алексин
Регион: 71
Машина: Aveo
Сообщений: 235
Игорь_К is on a distinguished road
По умолчанию

У меня почему то при конвертировании скрипта из au3 в exe выдает ошибку со строкой #include <MsgBoxConstants.au3> (win8.1 x32)
Игорь_К вне форума   Ответить с цитированием
Старый 28.08.2015, 10:58   #106
Krysanov
Super Moderator
 
Аватар для Krysanov
 
Регистрация: 12.11.2013
Возраст: 45
Город: Горно-Алтайск
Регион: 04
Машина: lexus rx300
Сообщений: 3,145
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
По умолчанию

Цитата:
Сообщение от Игорь_К Посмотреть сообщение
У меня почему то при конвертировании скрипта из au3 в exe выдает ошибку со строкой #include <MsgBoxConstants.au3> (win8.1 x32)
В самом верху кода написано для 64 бит
Код:
#pragma compile(Icon, "C:\Program Files (x86)\AutoIt3\Icons\au3script_v9.ico")
у тебя есть такая папка Program Files (x86)? Если нет (не помню уже), то подправь верхнюю строчку на
Код:
#pragma compile(Icon, "C:\Program Files\AutoIt3\Icons\au3script_v9.ico")
__________________
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 вне форума   Ответить с цитированием
Старый 28.08.2015, 11:24   #107
Lexx09
Старший Пользователь
 
Регистрация: 18.04.2009
Город: Краснодар
Регион: 23, 93
Машина: Приора хэтчбек
Сообщений: 977
Lexx09 has much to be proud ofLexx09 has much to be proud ofLexx09 has much to be proud ofLexx09 has much to be proud ofLexx09 has much to be proud ofLexx09 has much to be proud ofLexx09 has much to be proud ofLexx09 has much to be proud ofLexx09 has much to be proud ofLexx09 has much to be proud ofLexx09 has much to be proud of
По умолчанию

Цитата:
Сообщение от seriousstas Посмотреть сообщение
iCar DS гарантированно запускает скрипт при входе в сон , но
вопрос успеет-ли скрипт закрыть загруженный окнами Икар ,
поэтому и спросил за SUSPEND . Представляю это так :
по нажатию кнопки или повороте ключа Икар запускает скрипт
и посылается небольшая задержка системе для корректной выгрузки Икара .
Попробовал скрипт выше - работает ! Но опять-же у меня нет ни тяжелого Икара ни слабого железа для экспериментов , поэтому спрошу , можно-ли в этот скрипт добавить задержку системе в 2 секунды перед полным отключением питания ?
Добавление паузы в скрипт ничего не даст, т.к. iCarDS не ждет завершения работы встроенных скриптов. Только что проверил. К тому же iCarDS завершается из встроенного скрипта.

Чтобы задержать уход Windows в сон - нужна отдельная постоянно запущенная программа, отслеживающая переход в сон. Например, для Windows 7 и ниже, такая:
Код:
#include <WindowsConstants.au3>

Global $PBT_APMSUSPEND = 0x0004

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

While 1
    Sleep(100)
WEnd

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

; Вход в спящий режим
Func Suspend()
	Sleep(5000)
EndFunc
__________________
Приора хэтчбек
Win7 x64 Pro, Intel Core i3-3240 Ivy Bridge 2x3.4GHz HT, DDR3 2x4Gb, SSD SiliconPower Ace A55 128GB SATAIII, ASRock B75M-ITX, M2-ITX rev.2F, GPS Beitian BN-808, Logitech Wireless Touch Keyboard K400r, ИК-пульт Prology RCD-350, круиз-контроль...

Последний раз редактировалось Lexx09; 23.11.2015 в 00:17.
Lexx09 на форуме   Ответить с цитированием
Старый 28.08.2015, 11:29   #108
Lexx09
Старший Пользователь
 
Регистрация: 18.04.2009
Город: Краснодар
Регион: 23, 93
Машина: Приора хэтчбек
Сообщений: 977
Lexx09 has much to be proud ofLexx09 has much to be proud ofLexx09 has much to be proud ofLexx09 has much to be proud ofLexx09 has much to be proud ofLexx09 has much to be proud ofLexx09 has much to be proud ofLexx09 has much to be proud ofLexx09 has much to be proud ofLexx09 has much to be proud ofLexx09 has much to be proud of
По умолчанию

Цитата:
Сообщение от Krysanov Посмотреть сообщение
Lexx09
Есть, например, три чувствительные ко сну программы...."iCar DS", "SP Dialer.exe" и "Franson GpsGate"

Функция Suspend будет такая?:

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

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

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

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

   
    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("iCarDS.exe", 3) == 0) Then
        ProcessClose("Franson GpsGate")
    EndIf

EndFunc
или так ?

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

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

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

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

   
    If (ProcessWaitClose("iCarDS.exe", 3) == 0) Then
        ProcessClose("iCarDS.exe")
   
 If (ProcessWaitClose("SP Dialer.exe", 3) == 0) Then
        ProcessClose("SP Dialer.exe")
    
 If (ProcessWaitClose("iCarDS.exe", 3) == 0) Then
        ProcessClose("Franson GpsGate")
     
EndIf

EndFunc
Оба варианта неправильные.

Должно быть так:
Код:
; Вход в спящий режим
Func Suspend()

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

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

    ; Закрываем GpsGate
    WinClose("Franson GpsGate")
   
    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("GpsGateXP.exe", 3) == 0) Then
        ProcessClose("GpsGateXP.exe")
    EndIf

EndFunc
__________________
Приора хэтчбек
Win7 x64 Pro, Intel Core i3-3240 Ivy Bridge 2x3.4GHz HT, DDR3 2x4Gb, SSD SiliconPower Ace A55 128GB SATAIII, ASRock B75M-ITX, M2-ITX rev.2F, GPS Beitian BN-808, Logitech Wireless Touch Keyboard K400r, ИК-пульт Prology RCD-350, круиз-контроль...
Lexx09 на форуме   Ответить с цитированием
Старый 28.08.2015, 11:30   #109
Игорь_К
Старший Пользователь
 
Регистрация: 27.01.2014
Город: Алексин
Регион: 71
Машина: Aveo
Сообщений: 235
Игорь_К is on a distinguished road
По умолчанию

Цитата:
Сообщение от Krysanov Посмотреть сообщение
В самом верху кода написано для 64 бит
Код:
#pragma compile(Icon, "C:\Program Files (x86)\AutoIt3\Icons\au3script_v9.ico")
у тебя есть такая папка Program Files (x86)? Если нет (не помню уже), то подправь верхнюю строчку на
Код:
#pragma compile(Icon, "C:\Program Files\AutoIt3\Icons\au3script_v9.ico")
В том и загвоздка что все пути поправлены под мою систему
Игорь_К вне форума   Ответить с цитированием
Старый 28.08.2015, 11:36   #110
seriousstas
Бывалый писикарщик
 
Регистрация: 14.06.2013
Регион: Украина
Машина: Nissan Qashqai+2
Сообщений: 3,424
seriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant future
По умолчанию

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

Чтобы задержать уход Windows в сон - нужна отдельная постоянно запущенная программа, отслеживающая переход в сон. Например, такая:
Ясно , так и думал , ещё думал, что можно где-то поправить реестр или распаковать iCarMainScript.exe(хотя с последними версиями это наверняка не возможно) и сунуть туда
seriousstas вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 2 (пользователей: 0 , гостей: 2)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



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


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