Проверяй настройки подключения - там у тебя проблема.Цитата:
Сообщение от dima007
Вид для печати
Проверяй настройки подключения - там у тебя проблема.Цитата:
Сообщение от dima007
Ну вроде запустил обновление, в разделе помощь-информация есть данные о обновлении и пробки показывает, а на экране "нет" горит и на кнопке "в сети" и "нет" ничего не понимаю..........
в разделе "редактируемые переменные - настройки" все ОК?Цитата:
Сообщение от dima007
Проверь действительно ли у тебя существует файлЦитата:
Сообщение от dima007
C:\Program Files\City Guide\78SPb.jam
или пробки пишутся всё ж в какое-то другое место.
Если путь к jam-файлу указал правильно, то должно работать...
Если путь указан верно, но не работает, попробуй мою текущую версию avc_control.ahk:
KeyWait'ы добавлены для устранения проблем с разными способами софтверных имитации нажатий клавиш.Код:#NoTrayIcon ; не отображать значок скрипта в трее
#SingleInstance force ; перезагрузить скрипт, если он уже запущен
DetectHiddenWindows, On ; искать в скрытых окнах
#NoEnv ; запрещаем имена переменных как у переменных окружения
SendMode Input ; ускорренный ввод
#Persistent ; держать скрипт запущенным
SetTitleMatchMode 2 ; 2 - заголовок окна должен содержать значение, заданное в параметре
; ----------- редактируемые переменные - настройки ------------
winampid := "RRWinamp" ; идентификатор класса окна винампа
cityguide := "City Guide" ; название окна CityGuide
myconnection := "BluetoothConnection" ; название подключения к Инету
btadapter := "Jabra - A320s" ; название адаптера bluetooth
pinghost1 := "193.125.152.104" ; кого мучаем пингами в первую очередь (www.relcom.ru)
pinghost2 := "194.87.0.50" ; кого мучаем пингами во вторую очередь (www.ru)
onlinestr := "В сети" ; сообщение "Online" на экране (переменная RR OnlineStatus)
offlinestr := "---" ; сообщение "Offline" на экране
chkonline := "+ +" ; сообщение "постоянное подключение" на экране
pstripwin := "Меры предосторожности" ; название стартового окна восстановления PowerStrip'а
svhostwin := "svchost.exe - Ошибка приложения" ; название окна ошибки службы (вероятнее всего служба Windows Audio)
winamperror := "NullSoft DirectSound output" ; название окна винампа с ошибкой звукового устройства
checkperiod := 30 ; через сколько секунд (примерно) запускаем процедуру проверки сети и пробок СитиГида
myjamfile := "C:\Program Files\City Guide\78SPb.jam" ; за каким файлом пробок следим (боевой)
;myjamfile := "C:\CityGuide\City Guide 2.2\78SPb.jam" ; за каким файлом пробок следим (тестовый)
jamgreen := 8 ; до скольки минут считать возраст пробок зеленым
jamred := 50 ; до скольки минут считать возраст пробок красным
empty := "нет" ; что пишем на экране, если пробочный файл очень старый
; -------- конец редактируемых переменных - настроек ----------
WinAmpActive := 0
CityGuideActive := 0
day := 1
online := 0
setoffline := 0
oncheckonline := 0
Lastcheck := 0
checkperiod := - checkperiod * 1000
jamexpired := 1
; Создаем пустое окно и сразу его прячем. Окно необходимо для получения команд управления от RR
Gui, Show
Sleep, 5000
WinWait, avc_control.ahk
WinHide
; Устанавливаем обработчик для приёма команд через WM_COPYDATA от RR
OnMessage(0x4A, "OnCopyData")
SetTimer, CheckWarnings, 2000
SetTimer, CheckJam, 30000
SetTimer, CheckInternet, %checkperiod%, -1 ; периодическая проверка подключения к Интернету (с пониженным приоритетом)
return
StartWinAmp:
SendMessage, 0x400,, 104,, ahk_class %winampid% ; проверка воспроизведения
If ErrorLevel = 0 ; если не воспроизводится, то...
PostMessage, 0x111, 40045,,, ahk_class %winampid% ; включить воспроизведение
; наверняка было выключение, поэтому проверяем подключение к Инету
; инициируем новый цикл проверки Интернета через 1 секунду
If (oncheckonline <> 1)
SetTimer, CheckInternet, -1000, -1
return
CheckWarnings:
; Обработчик варнингов
If WinAmpActive = 0
{
IfWinExist, ahk_class %winampid%
{
; WinAmp не был запущен, а сейчас найден в списке окон
Gosub StartWinAmp
WinAmpActive := 1
}
}
Else
{
IfWinNotExist, ahk_class %winampid%
{
WinAmpActive := 0
}
Else
{
If (Lastcheck + 20000 < A_TickCount)
{
; WinAmp был запущен и существует до сих пор, но
; давно не было проверок, возможно, работа останавливалась
SetTimer, StartWinAmp, -5000
}
}
}
If CityGuideActive = 0
{
IfWinExist, %cityguide%
{
; CityGuide не был запущен, а сейчас найден в списке окон
WinActivate
Send, 5 ; включить GPS
CityGuideActive := 1
}
}
Else
{
IfWinNotExist, %cityguide%
{
CityGuideActive := 0
}
}
IfWinExist, %pstripwin%
{
; Найдено стартовое окно восстановления PowerStrip'а
WinActivate
Send, Д
}
IfWinExist, %winamperror%
{
; Найдено окно WinAmp'а с ошибкой звукового устройства
; Вероятнее всего звуковая usb-карта не успела проинициализироваться
; закрываем окно с ошибкой и через 5 секунд пытаемся запустить PLAY
WinActivate
Send, {Enter}
SetTimer, StartWinAmp, -5000
}
IfWinExist, %svhostwin%
{
; Скидываем полученную ошибку приложения (вероятнее всего служба Windows Audio)
WinActivate
Send, {Esc}
; SetTimer, RestartAudio, -1000
}
Lastcheck := A_TickCount
return
RestartAudio:
RunWait, net stop AudioSrv,, Hide
RunWait, net start AudioSrv,, Hide
return
CheckInternet:
; Обработчик интернет-проверок
oncheckonline := 1
If (setoffline = 1)
Gosub DoOffline
Gosub DoOnline
oncheckonline := 0
SetTimer, CheckInternet, %checkperiod%, -1
return ; конец процедуры CheckInternet
CheckJam:
; Получаем время файла пробок
FileGetTime, OutputVar, %myjamfile%
mhour := Substr(OutputVar, 9, 2)
mmin := Substr(OutputVar, 11, 2)
; Собираем текущую отметку времени (в минутах)
currconntimestamp := A_Min + A_Hour*60
lastjamtimestamp := mmin + mhour*60
If (currconntimestamp < lastjamtimestamp)
currconntimestamp := currconntimestamp + 24*60
; Получаем возраст файла пробок
jamtime := currconntimestamp - lastjamtimestamp
jamexpired := 0
If (currconntimestamp > lastjamtimestamp + jamgreen)
jamexpired := 1
If (currconntimestamp > lastjamtimestamp + jamred)
jamtime := empty
; тут надо нарисовать цветом возраст пробочного файла
If (jamexpired = 0)
{
; Делаем зеленым
SendToRR("SETVAR;MYJAMR||SETVAR;MYJAMG;" . jamtime)
}
Else
{
; Делаем красным
SendToRR("SETVAR;MYJAMG||SETVAR;MYJAMR;" . jamtime)
}
return ; конец процедуры CheckJam
DoOffline:
If (online = 1)
SendToRR("SETVAR;OnlineSwitch;" . chkonline)
Else
SendToRR("SETVAR;OnlineSwitch")
setoffline := 0
RunWait, rasdial %myconnection% /DISCONNECT,, Hide
SendToRR("SETVAR;OnlineStatus;" . offlinestr)
return
DoOnline:
If (online = 1)
SendToRR("SETVAR;OnlineSwitch;" . chkonline)
Else
SendToRR("SETVAR;OnlineSwitch")
If (jamexpired = 0)
{
; пробки свежие - считаем, что с тырнетом всё в порядке
SendToRR("SETVAR;OnlineStatus;" . onlinestr)
return
}
Loop, 5 ; предпринимаем 5 попыток подключиться
{
RunWait, ping -n 3 -f -w 2000 %pinghost1%,, UseErrorLevel|Hide
If (ErrorLevel = 0)
{
SendToRR("SETVAR;OnlineStatus;" . onlinestr)
Break
}
Else
{
If (online = 1)
Sleep, 5000
RunWait, ping -n 3 -f -w 2000 %pinghost2%,, UseErrorLevel|Hide
If (ErrorLevel = 0)
{
SendToRR("SETVAR;OnlineStatus;" . onlinestr)
Break
}
Else
{
SendToRR("SETVAR;OnlineStatus;" . offlinestr)
}
}
If (online = 1)
{
Gosub DoOffline
Sleep, 2000
If (A_Index > 4)
{
; 4 попытки подключиться прошли напрасно - принимаем радикальные меры
; Отключаем и снова подключаем адаптер bluetooth
RunWait, C:\Tools\usr.exe stop -n "%btapapter%",, Hide
RunWait, C:\Tools\usr.exe return -n "%btadapter%",, Hide
Sleep, 5000 ; даём системе прийти в себя после такого надругательства
}
RunWait, rasdial %myconnection%,, Hide
}
Else
{
Break
}
}
return
OnCopyData(wparam, lparam)
{
; функция получения входящего сообщение WM_COPYDATA
; Сюда приходит вызов с полученным сообщением-командой от RR
local pStr
pStr := NumGet(lparam+8), len := NumGet(lparam+4)
RecvMessage := SubStr(DllCall("MulDiv", "Int", pStr, "Int",1, "Int",1, "str"),1,len)
If (RecvMessage = "switch") {
If (online = 1)
online := 0
Else
online := 1
}
Else
{
If (RecvMessage = "online")
online := 1
Else
online := 0
}
If (online = 1)
{
setoffline := 0
SendToRR("SETVAR;OnlineSwitch;" . chkonline)
}
Else
{
setoffline := 1
SendToRR("SETVAR;OnlineSwitch")
}
If (oncheckonline <> 1)
SetTimer, CheckInternet, -1000, -1 ; инициируем новый цикл проверки Интернета
return 1 ; подтверждаем успешный приём сообщения
}
; Функция отправки команды в RoadRunner
SendToRR(msg="")
{
len := StrLen(msg)
port := 1 ; RR слушает команды, приходящие на порт 1
VarSetCapacity(CopyDataStruct, 12, 0)
NumPut(port, CopyDataStruct, 0)
NumPut(len, CopyDataStruct, 4) ; тут именно len, а не len+1 как пишут в некоторых примерах
NumPut(&msg, CopyDataStruct, 8)
SendMessage, 0x4A,, &CopyDataStruct,, RoadRunner
}
; Далее - обычные реакции на хоткеи
^!+c::
Critical
KeyWait, c
KeyWait, Shift
KeyWait, Alt
KeyWait, Control
IfWinExist, ahk_class Winamp v1.x
{
; Нашли активный KMPlayer - управляем им
ControlSend, , !``
}
Else
{
Send, ^!5 ; AutoHide для указателя мышки
}
return
^!+b::
Critical
KeyWait, b
KeyWait, Shift
KeyWait, Alt
KeyWait, Control
Send, {Click right} ; имитация правой кнопки мышки
return
^!+a:: ; screenshot текущего экрана
Critical
KeyWait, a
KeyWait, Shift
KeyWait, Alt
KeyWait, Control
RunWait, nircmd savescreenshot C:\PrScr.png,, Hide
FileGetTime, OutputVar, C:\PrScr.png, C
FileMove C:\PrScr.png, C:\Scrns\ss_%OutputVar%.png
return
^!+e:: ; Команда NEXT для WinAmp'а / KMPlayer'а
Critical
KeyWait, e
KeyWait, Shift
KeyWait, Alt
KeyWait, Control
IfWinExist, ahk_class Winamp v1.x
{
; Нашли активный KMPlayer - управляем им
PostMessage, 0x111, 40048,,, ahk_class Winamp v1.x ; следующий трек
}
Else
{
PostMessage, 0x111, 40048,,, ahk_class RRWinamp ; следующий трек
}
return
^!+f:: ; Команда PREV для WinAmp'а / KMPlayer'а
Critical
KeyWait, f
KeyWait, Shift
KeyWait, Alt
KeyWait, Control
IfWinExist, ahk_class Winamp v1.x
{
; Нашли активный KMPlayer - управляем им
PostMessage, 0x111, 40044,,, ahk_class Winamp v1.x ; предыдущий трек
}
Else
{
PostMessage, 0x111, 40044,,, ahk_class RRWinamp ; предыдущий трек
}
return
^!+h:: ; Команда PLAY/PAUSE для WinAmp'а / KMPlayer'а
Critical
KeyWait, h
KeyWait, Shift
KeyWait, Alt
KeyWait, Control
IfWinExist, ahk_class Winamp v1.x
{
; Нашли активный KMPlayer - управляем им
SendMessage, 0x400,, 104,, ahk_class Winamp v1.x ; проверка воспроизведения
If ErrorLevel = 0 ; если не воспроизводится, то...
PostMessage, 0x111, 40045,,, ahk_class Winamp v1.x ; включить воспроизведение
Else ; если воспроизводится, то...
PostMessage, 0x111, 40046,,, ahk_class Winamp v1.x ; поставить на паузу
}
Else
{
SendMessage, 0x400,, 104,, ahk_class RRWinamp ; проверка воспроизведения
If ErrorLevel = 0 ; если не воспроизводится, то...
PostMessage, 0x111, 40045,,, ahk_class RRWinamp ; включить воспроизведение
Else ; если воспроизводится, то...
PostMessage, 0x111, 40046,,, ahk_class RRWinamp ; поставить на паузу
}
return
^!+i:: ; Переключатель профилей PowerStrip'а день/ночь
Critical
KeyWait, i
KeyWait, Shift
KeyWait, Alt
KeyWait, Control
if(!day)
{
Send, ^!1
day := 1
}
else
{
Send, ^!2
day := 0
}
return
Пробки обновляются, на главном виде Road Runner наверху надпись "в сети" открываб сити гай на экране в правом верхнем углу "нет" горит и не убирается никак, а на кнопке тоже горит "в сети" и "нет" , но это еще что, если выйти из Road Runner и открыв Internet Explorer в одной из вкладки зайти на сайт сити гай, то в правом углу тоже выскочит "нет", а в панели задач CGJAM.
Я думаю наверное какие то детские ошибки, нестаит где нибудь чего нибудь, а на большом комп. тоже самое плюс пробки обновляет но не показывает.
Ну, ты намешал...Цитата:
Сообщение от dima007
Судя по всему, ты запустил сразу оба скрипта - и avc_control.ahk, и cityguide-is.ahk :)
В принципе, ничего плохого в этом нет. Но раз оба пишут "НЕТ", значит ты в обоих неправильно указал путь к jam-файлу (78SPb.jam).
Как вариант - системное время на компе у тебя стоит неправильное.
А, что надо по одному запускать, я по обоим щелкаю
Ну вроде доходит,
-avc_control.ahk это для Road Runner
-ahk, и cityguide- это когда просто программу одну запускаешь, правельно?
Пишет в "сети 4"-5 меняет значения, я понял это красные пробки, а других нету и еще прием GPS 4 палки, а Sаt:0, так и должно быть?
Спасибо все пошло.
Поздравляю! Добил таки, не отступил!:)Цитата:
Сообщение от dima007