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

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Пульты ДУ (http://pccar.ru/forumdisplay.php?f=164)
-   -   Ик приемник irlink и windows 7 (http://pccar.ru/showthread.php?t=12554)

lunatig 06.07.2010 00:43

Ик приемник irlink и windows 7
 
настроил irlink приемник с 64 windows7, все работает, но если комп уходит в гибернацию, то при возврате приемник больше не работает.
помогает только перезагрузка самой проги irlink.

Подскажите как можно вылечить это зависание или как можно сделать автоматическую перезагрузку проги.
тупо завершить процесс и запустить заново после выхода из гибернации.

admin 06.07.2010 01:03

Можно написать програмулину, которая должна будет выполнять следующие действия
1 - Запустить программу IRLINK
2 - Отслеживать сообщения виндовс
3 - Перед гибернацией закрыть программу IRLINK
4 - После пробуждения переходим к первоу пункту

lunatig 06.07.2010 01:29

звучит красиво. но кто бы мог помочь написать такую прогу, да еще для windows7.

мож батник можно создать и через планировщик заданий его запускать?

admin 06.07.2010 01:39

Батник не сможет сообщения виндовс отслеживать и анализировать

MiD_E34 06.07.2010 13:45

Цитата:

Сообщение от lunatig (Сообщение 148170)
звучит красиво. но кто бы мог помочь написать такую прогу, да еще для windows7.

мож батник можно создать и через планировщик заданий его запускать?

Такие проги есть. Например devcon:
1. Получаем список устройств: devcon.exe hwids
2. Находим в списке нужное нам устройство. К примеру, это буит мышь. У меня:
USB\VID_046D&PID_C00E\5&31DF5786&0&1
Name: USB Human Interface Device
Hardware ID's:
USB\Vid_046d&Pid_c00e&Rev_1110
USB\Vid_046d&Pid_c00e
Compatible ID's:
USB\Class_03&SubClass_01&Prot_02
USB\Class_03&SubClass_01
USB\Class_03
3. Выключить устройство: devcon.exe disable USB\Vid_046d*
Звездочка тут нужна, потому что если указать полный ID утилита его почему-то не понимает
4. Включить устройство: devcon.exe enable USB\Vid_046d*
К сожалению, у меня BT под рукой нет, поэтому попробовать не могу. Возможно нуна будет не включать (enable) устройство, а рестартит

А сами батники - через проги, отрабатывающие гибер

adami 06.07.2010 15:43

Там надо программу передергивать, не устройство. Драйвер устройства нормальный, а вот программа гибернейта не понимает.
Как это сделано у меня

скрипт hypernate.vbs, забит в авторан
при уходе в слип выполняет команду c:\bat\time_to_sleep.cmd
при просыпании - выполняет команду c:\bat\time_to_wakeup.cmd

Код:

Set WshShell = WScript.CreateObject("WScript.Shell")
Set FileSys = CreateObject("Scripting.FileSystemObject")
Set colMonitoredEvents = GetObject("winmgmts:")._
ExecNotificationQuery("Select * from Win32_PowerManagementEvent")
Do
Set objLatestEvent = colMonitoredEvents.NextEvent
If objLatestEvent.EventType = 4 Then
intReturn = WshShell.Run("c:\bat\time_to_sleep.cmd", 4, FALSE)
End If
If objLatestEvent.EventType = 7 Then
intReturn = WshShell.Run("c:\bat\time_to_wakeup.cmd", 4, FALSE)
End If

а вот сам time_to_wakeup.cmd - находит процесс irlink, его
убивает и запускает снова
Требует утилиты cmdow (поищи поиском по форуму)


Код:

@echo off
C:
cd \bat
cmdow @ /hid

for /f "tokens=1,9" %%a in ('cmdow') do (
 if /i "%%b"=="IrlinkTrayWindowClass" (
  cmdow %%a /END
 )
)

"C:\Program Files\IRLink\IRLink.3\IRLink.3.exe"

Update: у меня работает это под Windows XP, возможно под Windows 7 придется переделывать

lunatig 06.07.2010 20:34

Цитата:

Сообщение от adami (Сообщение 148243)
скрипт hypernate.vbs, забит в авторан
при уходе в слип выполняет команду c:\bat\time_to_sleep.cmd
при просыпании - выполняет команду c:\bat\time_to_wakeup.cmd

а в time_to_sleep что должно быть?

adami 08.07.2010 12:19

Для данной задачи - ничего не надо. У меня лично там был разрыв соединения, когда я пользовался скайлинком

sdyz 27.07.2010 12:36

Планировщик заданий виндовс может поможет?
...
В итоге поковырял планировщик виндовс (стоит семерка) и сделал вот такой батник:
Код:

echo off
taskkill /IM SlyCtrl2r.exe - программа которую нужно "убить"
ping 127.0.0.1 -n 2 - единственный доступный вариант создания паузы между задачами :-)
start C:\SlyDiman\SlyControl2\SlyCtrl2r.exe - соответственно запуск нужной программы

Потом создал в планировщике заданий событие с триггером "При событии" Система - Power-Troubleshooter - код события 1
Вот и все. Все гениальное - просто!
З.Ы. Также при помощи фриварной программы "Bat_To_Exe_Converter" преобразовал этот батник в экзешник с функцией "Invisible application". Т.е. все происходит в тихую...

sdyz 30.07.2010 11:52

Немного доработал батник
Код:

echo off
taskkill /IM SlyCtrl2ror.exe /T - программа которую нужно "убить" и дерево её процессов
taskkill /F /IM SlyCtrl2ror.exe /T - контрольный "выстрел" с параметром "принудительное завершение"
start C:\SlyControl2\SlyCtrl2ror.exe - запуск программы



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

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