Страница 2 из 13 ПерваяПервая 1234567812 ... ПоследняяПоследняя
Показано с 11 по 20 из 126
  1. #11
    Гуру Аватар для Parador
    Регистрация
    23.12.2007
    Возраст
    62
    Сообщений
    828
    Вес репутации
    607

    По умолчанию Re: Примеры ahk-скриптов

    Нда... В опчем Ж. Спасибо!
    Продаю домик у моря.
    Все в мире го*но, кроме мочи.

  2. #12
    Гуру Аватар для ashu
    Регистрация
    29.01.2008
    Возраст
    52
    Сообщений
    1,161
    Вес репутации
    582

    По умолчанию Re: Примеры ahk-скриптов

    Цитата Сообщение от Parador
    Нда... В опчем Ж. Спасибо!
    Не расстраивайся, дорогой. Я уже почитал документацию... Завтра напишу для тебя
    Демка заработала - показывает возраст пробок в окне СитиГида, если оно активно. Осталось прикрутить её к существующему скрипту... Но это уже точно не сегодня
    Последний раз редактировалось ashu; 24.11.2008 в 03:07.
    С уважением, Алексей
    Мой Prius NHW11

  3. #13
    Гуру Аватар для ashu
    Регистрация
    29.01.2008
    Возраст
    52
    Сообщений
    1,161
    Вес репутации
    582

    По умолчанию Re: Примеры ahk-скриптов

    Очередная версия (предыдущая содержала ошибки - удалена)

    Скрипт к предыдущему функционалу получил теперь умения:
    - поддерживать интернет-соединение
    - показывать "возраст" файла пробок СитиГида
    - СитиГид запускается сразу с включенным GPS
    - нормальная обработка ошибок подключения к Интернету
    - нормальная обработка ошибки WinAmp'а из-за долгой инициализации звуковой usb-карты

    В скине РоадРаннера:
    - переменная $OnlineStatus$ показывает статус подключения в Интернету (проверяется пингом);
    - переменная $OnlineSwitch$ показывает состояние переключателя "поддерживать соединение с Интернетом или нет";
    - переменная $MYJAMG$ показывает "возраст" пробочного файла СитиГида зеленым цветом;
    - переменная $MYJAMR$ показывает "возраст" пробочного файла СитиГида красным цветом (предполагается, что координаты надписи будут такими же, как и у $MYJAMG$; пример см. ниже).

    Для включения/отключения/переключения поддержателя соединения с Интернетом из RR надо дать команду (например, повесить это на отдельную кнопку):
    SENDMSG;avc_control.ahk;online - поддерживать соединение
    SENDMSG;avc_control.ahk;offline - не поддерживать соединение (при получении команды соединение разрывается)
    SENDMSG;avc_control.ahk;switch - поменять состояние поддерживать/не поддерживать

    avc_control.ahk:
    Код:
    #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	:= "www.relcom.ru"			; кого мучаем пингами в первую очередь (www.relcom.ru)
    pinghost2	:= "www.ru"				; кого мучаем пингами во вторую очередь (www.ru)
    onlinestr	:= "В сети"				; сообщение "Online" на экране (переменная RR OnlineStatus)
    offlinestr	:= "---"				; сообщение "Offline" на экране
    chkonline	:= "+                 +"		; сообщение "постоянное подключение" на экране
    pstripwin	:= "Меры предосторожности"		; название стартового окна восстановления PowerStrip'а
    svhostwin	:= "svchost.exe - Ошибка приложения"	; название окна ошибки службы (вероятнее всего служба Windows Audio)
    winamperror	:= "NullSoft DirectSound output"	; название окна винампа с ошибкой звукового устройства
    checkperiod	:= 40					; через сколько секунд (примерно) запускаем процедуру проверки сети и пробок СитиГида
    myjamfile	:= "C:\Program Files\City Guide\78SPb.jam" ; за каким файлом пробок следим (боевой)
    ;myjamfile	:= "C:\CityGuide\City Guide 2.2\78SPb.jam" ; за каким файлом пробок следим (тестовый)
    jamgreen	:= 8					; до скольки минут считать возраст пробок зеленым
    jamred		:= 40					; до скольки минут считать возраст пробок красным
    empty		:= "нет"				; что пишем на экране, если пробочный файл очень старый
    
    ; -------- конец редактируемых переменных - настроек ----------
    
    
    WinAmpActive := 0
    CityGuideActive := 0
    day := 1
    online := 0
    setoffline := 0
    oncheckonline := 0
    Lastcheck := 0
    checkperiod := - checkperiod * 1000
    
    ; Создаем пустое окно и сразу его прячем. Окно необходимо для получения команд управления от RR
    Gui, Show
    WinHide, avc_control.ahk
    
    ; Устанавливаем обработчик для приёма команд через WM_COPYDATA от RR
    OnMessage(0x4A, "OnCopyData")
    
    SetTimer, CheckWarnings, -1000
    SetTimer, CheckInternet, %checkperiod%, -1 ; периодическая проверка подключения к Интернету (с пониженным приоритетом)
    
    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 + 30000 < A_TickCount)
    			{
    				; WinAmp был запущен и существует до сих пор, но
    				; давно не было проверок, возможно, работа останавливалась
    				SetTimer, StartWinAmp, -1000
    			}
    		}
    	}
    	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
    	SetTimer, CheckWarnings, On
    	return
    
    RestartAudio:
    	RunWait, net stop AudioSrv,, Hide
    	RunWait, net start AudioSrv,, Hide
    	return
    
    CheckInternet:
    ; Обработчик интернет-проверок
    	If(oncheckonline = 1)
    		return
    	Else
    		oncheckonline := 1
    	If (setoffline = 1)
    		Gosub DoOffline
    	Gosub DoOnline
    
    ; Получаем время файла пробок
    	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 + 5 < 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)
    	}
    	SetTimer, CheckInternet, %checkperiod%, -1
    	oncheckonline := 0
    	return ; конец процедуры CheckInternet
    
    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")
            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::^!5		; AutoHide для указателя мышки
    
    ^!+b::Click right	; имитация правой кнопки мышки
    
    ^!+a::			; screenshot текущего экрана
    	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'а
    	PostMessage, 0x111, 40048,,, ahk_class RRWinamp ; следующий трек
    	return
    
    ^!+f::			; Команда PREV для WinAmp'а
    	PostMessage, 0x111, 40044,,, ahk_class RRWinamp ; предыдущий трек
    	return
    
    ^!+h::			; Команда PLAY/PAUSE для WinAmp'а
    	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'а день/ночь
    	if(!day)
    	{
    		Send, ^!1
    		day := 1
    	}
    	else
    	{
    		Send, ^!2
    		day := 0
    	}
    	return
    Пример показа СитиГида в скине DigitalFX 3.0 через External_GPS.skin:
    Код:
    RoadRunner Skin
    RRScreen CityGuide
    IGUIDANCE_OFF.png,IGUIDANCE_OFF.png,IGUIDANCE_ON.png,IGUIDANCE_OFF.png
    INC,DFX_Font_Color.txt
     
    /, L, x, y, w, h, color R;RGB, G, B, font size;FONT, font name, Code;LABELCODES, Tooltip;LABELALIGNMENT
    L,2,94,71,41,#DFX1R#,#DFX1G#,#DFX1B#,24,"Arial","GPSALT","CENTER"
    L,8,402,36,26,#DFX1R#,#DFX1G#,#DFX1B#,15,"Arial","=Sat:","RIGHT"
    L,6,504,75,17,#DFX2R#,#DFX2G#,#DFX2B#,8,"Arial","=$OnLineSwitch$","LEFT"
    L,0,503,75,17,#DFX1R#,#DFX1G#,#DFX1B#,10,"Arial","=$OnLineStatus$","CENTER"
    L,45,402,33,26,#DFX1R#,#DFX1G#,#DFX1B#,16,"Arial","GPSSAT","LEFT"
    L,0,468,75,26,#DFX1R#,#DFX1G#,#DFX1B#,24,"Arial:B","=$MYJAMG$","CENTER"
    L,0,466,75,26,#DFX2R#,#DFX2G#,#DFX2B#,26,"Arial:B","=$MYJAMR$","CENTER"
    L,0,549,75,26,#DFX1R#,#DFX1G#,#DFX1B#,17,"Arial","=MENU","CENTER"
    L,0,266,75,26,#DFX1R#,#DFX1G#,#DFX1B#,15,"Arial","=ExtPos","CENTER"
    L,0,193,75,26,#DFX1R#,#DFX1G#,#DFX1B#,15,"Arial","=CurPos","CENTER"
    L,0,237,75,26,#DFX1R#,#DFX1G#,#DFX1B#,15,"Arial","=Mem","CENTER"
    L,0,165,75,26,#DFX1R#,#DFX1G#,#DFX1B#,15,"Arial","=Mem","CENTER"
    L,0,313,75,26,#DFX1R#,#DFX1G#,#DFX1B#,15,"Arial","=Toggle","CENTER"
    L,0,339,75,26,#DFX1R#,#DFX1G#,#DFX1B#,15,"Arial","=Track","CENTER"
    L,1,6,72,59,#DFX1R#,#DFX1G#,#DFX1B#,36,"Arial:B","GPSSPD","CENTER"
     
    /, B, x, y, w, h, Command;COMMANDCODES, Tooltip
    B,1,229,73,73,"LOCOSK",
    B,0,302,73,73,"ACTIVATE;City Guide||SENDKEY;^t",
    B,0,375,75,74,"SENDMSG;CamGrabber;SAVE",""
    B,-1,451,75,74,"SENDMSG;avc_control.ahk;switch",""
    B,1,523,75,74,"MAIN",""
    B,0,150,75,75,"LOC",
     
    /, A, x, y, w, h, color R;RGB, G, B
    A,77,1,724,599,,,
    
    END
    Содержимое DFX_Font_Color.txt:
    Код:
    /DEFINE DFX1R 3
    /DEFINE DFX1G 255
    /DEFINE DFX1B 5
    /DEFINE DFX2R 255
    /DEFINE DFX2G 3
    /DEFINE DFX2B 5
    Последний раз редактировалось ashu; 30.11.2008 в 00:02.
    С уважением, Алексей
    Мой Prius NHW11

  4. #14
    Гуру Аватар для Parador
    Регистрация
    23.12.2007
    Возраст
    62
    Сообщений
    828
    Вес репутации
    607

    По умолчанию Re: Примеры ahk-скриптов

    Алексей, спасибо, см. личку.
    Продаю домик у моря.
    Все в мире го*но, кроме мочи.

  5. #15
    Гуру Аватар для ashu
    Регистрация
    29.01.2008
    Возраст
    52
    Сообщений
    1,161
    Вес репутации
    582

    По умолчанию Re: Примеры ahk-скриптов

    Цитата Сообщение от Parador
    Алексей, спасибо, см. личку.
    Честно говоря, ожидал там увидеть скриншот именно с компа из машинки - чтобы понять куда лучше размещать индикатор... Ладно, эт мелочи, потом сам подредактируешь позицию на экране
    Правда, в ближайшие пару дней со временем ожидается напряг... За выходные уж точно должно найтись время

    Кста, личка у тебя переполнена, поэтому пришлось сюда написать.
    С уважением, Алексей
    Мой Prius NHW11

  6. #16
    Гуру Аватар для Parador
    Регистрация
    23.12.2007
    Возраст
    62
    Сообщений
    828
    Вес репутации
    607

    По умолчанию Re: Примеры ahk-скриптов

    Цитата Сообщение от ashu
    Честно говоря, ожидал там увидеть скриншот именно с компа из машинки - чтобы понять куда лучше размещать индикатор... Ладно, эт мелочи, потом сам подредактируешь позицию на экране
    Правда, в ближайшие пару дней со временем ожидается напряг... За выходные уж точно должно найтись время

    Кста, личка у тебя переполнена, поэтому пришлось сюда написать.
    Спасибо! Буду ждать. Лицо почистил.

    ЗЫ. Мне было бы удобно по правому борту между средней и верхней кнопками.
    Последний раз редактировалось Parador; 28.11.2008 в 00:35.
    Продаю домик у моря.
    Все в мире го*но, кроме мочи.

  7. #17
    Гуру Аватар для ashu
    Регистрация
    29.01.2008
    Возраст
    52
    Сообщений
    1,161
    Вес репутации
    582

    По умолчанию Re: Примеры ahk-скриптов

    Цитата Сообщение от Parador
    ЗЫ. Мне было бы удобно по правому борту между средней и верхней кнопками.
    Ну, что-то, вроде, получилось
    Делал под 800x480. Если чего не так - сорцы открыты Можно, например, недостающий функционал перетащить из моего avc_control.ahk.

    В общем, ниже представлен обрезанный вариант моего скрипта avc_control.ahk для Parador'а и других, кто в силу обстоятельств не пользуется RoadRunner'ом.

    Скрипт умеет только:
    1. В только что запущенный СитиГид посылать "5" - включение GPS.
    2. Показывать поверх окна СитиГида "возраст" пробочного файла. Окно СитиГида при этом должно быть активным.

    cityguide-is.ahk:
    Код:
    #NoTrayIcon		; не отображать значок скрипта в трее
    #SingleInstance force	; перезагрузить скрипт, если он уже запущен
    #NoEnv			; запрещаем имена переменных как у переменных окружения
    SendMode Input		; ускорренный ввод
    #Persistent		; держать скрипт запущенным
    SetTitleMatchMode 2	; 2 - заголовок окна должен содержать значение, заданное в параметре
    
    ; ----------- редактируемые переменные - настройки ------------
    
    cityguide	:= "City Guide"				; название окна CityGuide
    myjamfile	:= "C:\Program Files\City Guide\78SPb.jam" ; за каким файлом пробок следим (боевой)
    ;myjamfile	:= "C:\CityGuide\City Guide 2.2\78SPb.jam" ; за каким файлом пробок следим (тестовый)
    jamgreen	:= 8					; до скольки минут считать возраст пробок зеленым
    jamred		:= 40					; до скольки минут считать возраст пробок красным
    empty		:= "НЕТ"				; что пишем на экране, если пробочный файл очень старый
    xPosition	:= 670					; x-позиция на экране
    yPosition	:= 105					; y-позиция на экране
    
    ; -------- конец редактируемых переменных - настроек ----------
    
    
    CityGuideActive := 0
    Custom1Color := "600305"
    Custom2Color := "036005"
    MyTextEmpty := ""
    gui, color, 000000
    gui, font, s48 bold, Arial
    Gui, Add, Text, c%Custom1Color% x200 y200 w130 h70 vMyRed, %MyText3%
    Gui, Add, Text, c%Custom2Color% x0 y0 w130 h70 vMyGreen, %MyText1%
    Gui, +LastFound +AlwaysOnTop
    WinSet, TransColor, 000000 200
    Gui, -Caption
    Gui, Show, x%xPosition% y%yPosition% w130 h70 NoActivate, CGJAM
    JamShow := 1
    SetTimer, ShowHideJam ; отслеживать показ на экране только в окне СитиГида
    SetTimer, SwitchText, 10000 ; проверять файл пробок каждые 10 секунд
    return
    
    GuiSize:
    	If (Errorlevel = 1)
    		Gui, Restore ; противодействуем минимизации окна
    
    ShowHideJam:
    	Act := 0
    	IfWinActive, %cityguide%
    	{
    		Act := 1
    	}
    	Else
    	{
    		IfWinActive, CGJAM
    		{
    			Act := 1
    		}
    	}
    	If (Act = 1)
    	{
    		If (JamShow <> 1)
    		{
    			WinShow, CGJAM
    			JamShow := 1
    		}
    	}
    	Else
    	{
    		If (JamShow = 1)
    		{
    			WinHide, CGJAM
    			JamShow = 0
    		}
    	}
    	If CityGuideActive = 0
    	{
    		IfWinExist, %cityguide%
    		{
    ; CityGuide не был запущен, а сейчас найден в списке окон
    			WinActivate
    			Send, 5 ; включить GPS
    			CityGuideActive := 1
    		}
    	}
    	Else
    	{
    		IfWinNotExist, %cityguide%
    		{
    			CityGuideActive := 0
    		}
    	}
    	return
    
    SwitchText:
    ; Получаем время файла пробок
    	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 + 5 < lastjamtimestamp)
    		currconntimestamp := currconntimestamp + 24*60
    
    ; Получаем возраст файла пробок
    	jamtime := currconntimestamp - lastjamtimestamp
    	If (jamtime > 9)
    	{
    		jamtime := "  " . jamtime
    	}
    	Else
    	{
    		jamtime := "   " . jamtime
    	}
    
    	jamexpired := 0
    	If (currconntimestamp > lastjamtimestamp + jamgreen)
    		jamexpired := 1
    	If (currconntimestamp > lastjamtimestamp + jamred)
    		jamtime := empty
    
    ; тут надо нарисовать цветом возраст пробочного файла
    	If (jamexpired = 0)
    	{
    ; Делаем зеленым
    		GuiControl, Move, MyRed, x200 y200 ; сдвигать надо, чтобы красный текст не исчезал при показе
    		GuiControl, Text, MyRed, %MyTextEmpty%
    		GuiControl, Text, MyGreen, %jamtime%
    		GuiControl, Move, MyGreen, x0 y0
    	}
    	Else
    	{
    ; Делаем красным
    		GuiControl, Move, MyGreen, x200 y200 ; сдвигать надо, чтобы красный текст не исчезал при показе
    		GuiControl, Text, MyGreen, %MyTextEmpty%
    		GuiControl, Text, MyRed, %jamtime%
    		GuiControl, Move, MyRed, x0 y0
    	}
    	return
    Последний раз редактировалось ashu; 30.11.2008 в 00:13.
    С уважением, Алексей
    Мой Prius NHW11

  8. #18
    Гуру Аватар для Parador
    Регистрация
    23.12.2007
    Возраст
    62
    Сообщений
    828
    Вес репутации
    607

    По умолчанию Re: Примеры ahk-скриптов

    Блин, Алексей, не издевайся! Куда засовывать-то?

    И еще. Если у меня ЖПС подключен всегда, "5" не помешает?
    Последний раз редактировалось Parador; 30.11.2008 в 00:22.
    Продаю домик у моря.
    Все в мире го*но, кроме мочи.

  9. #19
    Гуру Аватар для ashu
    Регистрация
    29.01.2008
    Возраст
    52
    Сообщений
    1,161
    Вес репутации
    582

    По умолчанию Re: Примеры ahk-скриптов

    Цитата Сообщение от Parador
    Блин, Алексей, не издевайся! Куда засовывать-то?
    У меня засунуто в автозапуск.
    Чтобы работало, у тебя должен быть проинсталлирован AutoHotKey
    С уважением, Алексей
    Мой Prius NHW11

  10. #20
    Гуру Аватар для ashu
    Регистрация
    29.01.2008
    Возраст
    52
    Сообщений
    1,161
    Вес репутации
    582

    По умолчанию Re: Примеры ahk-скриптов

    Отвечу сюда - вдруг еще кому будет интересно

    Цитата Сообщение от Parador
    Цитата Сообщение от ashu
    И чего ты хочешь?
    Ты перечисли сразу что надо
    Соберу.
    Ну, сам напросился !
    1. Пошаговая инструкция к AutoHotKey (Куда засовывать скрипт, чего с ним делать и куда перекладывать. Как потом исправлять местоположение надписи на экране, добавлять и удалять скрипты и т.д.)
    Я положил прямо в папку "Автозапуск". Если в системе установлен AutoHotKey, то скрипты исполняются как бинарники.
    Местоположение надписи управляется переменными xPosition и yPosition - посмотри шапку скрипта - я туда перенёс все нужные переменные и насколько смог их прокомментировал.
    Вообще, скрипт можно скомпилировать в exe'шник, тогда не нужно инсталлировать в автомобильный комп AutoHotKey, но нескомпиллированный скрипт тем хорош, что ты можешь менять его прямо на ходу - чуть-чуть подправил и уже видишь результаты изменений (скрипт при этом надо запустить по-новой, старый при этом выгрузится).
    Цитата Сообщение от Parador
    2. Иногда пользуюсь халявным WiFi, поэтому звонилка мне не нужна. Вполне устраивает автоподключение прописанное в СГ.
    3. А вот втыкалку-вытыкалку (вернее включалку-выключалку модема, т.к. модем практически не вынимаю)хотелось бы.
    У меня тож раньше СитиГид сам дозванивался... Но были 2 проблемы:
    1. Если probki.net лежит/не отвечает, то СГ считает это ошибкой подключения и разрывает соединение. Т.е. нельзя определить проблема ли это оператора (нет соединения с Инетом) или это опять probki.net дурят.
    2. Т.к. процесс подключения мной не контролируется, то и невозможно автоматизировать процесс вытыкания/втыкания usb-адаптера bluetooth. Пытался сначала делать через чтения на ходу логов СитиГида (History.txt), но натолкнулся на пачку других проблем, в том числе проблем, вытекающих из п.1.
    Собственно, поэтому и отдал процесс подключения/отключения к Инету своему скрипту - он пытается 4 раза подключиться к Инету и после каждого раза пингами проверяет факт подключения. Если за 4 раза подключиться не удалось, то считаем, что проблема в адаптере и пытаемся его отключить и подключить снова.
    Вот...
    Можешь сделать у себя в IS доп-кнопочку, вызывающую запуск батника, в котором пропиши команды отключения и повторного включения твоего usb-модема - будешь в случае проблем с соединением просто тыкать в это кнопочку.

    Цитата Сообщение от Parador
    Я так понимаю все это будет работать через AutoHotKey? Курс молодого бойца по этой программе просто необходим. (С английским проблемы)
    Тут есть на русском: http://www.script-coding.info/AutoHo...anslation.html
    С уважением, Алексей
    Мой Prius NHW11

Страница 2 из 13 ПерваяПервая 1234567812 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

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