Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » AutoHotkey

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76

Открыть новую тему     Написать ответ в эту тему

chum2000

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

   
 
Актуальная версия: AutoHotkey 2.0.5 от 12 августа 2023
Версия для Windows XP | Changes from v1.1 to v2.0
 
Официальный сайт | Англоязычный форум | Архивный форум | Русскоязычный форум
Документация (англ.) | Документация и статьи (рус.) | История изменений
 
Подборка полезных скриптов | AutoHotkey + Total Commander
 

Цитата:
AutoHotkey — бесплатная программа с открытым исходным кодом для создания макросов и автоматизации, позволяющая упростить выполнение повторяющихся задач.
 
AutoHotkey позволяет изменить интерфейс практически любой программы. Имеет собственный скриптовый язык, специально нацеленный на лёгкое назначение и переназначение горячих клавиш.
 
AutoHotkey можно использовать для запуска программ, отправки текста, имитации мыши. Скриптовый язык позволяет управлять окнами, файлами и папками. Команды могут быть активированы горячими клавишами.
 
Также имеются возможности создания GUI, работы с реестром, использования собственного API окон для вызова DLL-файлов. Скрипты можно скомпилировать в EXE-файл и запускать на любом компьютере с Windows соответствующей версии.
 
Наиболее частое применение AutoHotkey:
- переназначение клавиш (глобально или у отдельных программ)
- управление мышью с помощью клавиатуры или джойстика
- слежение за системой, автоматическое выполнение некоторых действий по желанию пользователя, таких как напоминание, сканирование или резервное копирование
 

Всего записей: 505 | Зарегистр. 04-03-2004 | Отправлено: 00:28 02-06-2005 | Исправлено: Egor2020, 10:08 21-09-2023
Real Root



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Да прямо в шапке написано: Последняя версия: 1.1.05.06 31-12-2011
 
Добавлено:
версия 1.1.08.00 - тоже не изменила ситуацию.
 

Цитата:
ожете отправлять нажатие кнопки Volume_mute или воспользоваться Vista Audio Control библиотекой с офф форума.

Volume_mute - не устраивает, т.к. мне нужно не поочередное включение выключение а постоянное состояние включено или выключено. Проверка окна происходит каждые 30 сек.
 
А где достать эту самую Vista Audio Control и как ею пользоваться?

Всего записей: 1038 | Зарегистр. 13-04-2006 | Отправлено: 02:18 19-07-2012
creature_ws



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нет сознательных «мемберов» способных редактировать шапку чаще чем раз в полгода.
Актуальная версия и не должна была «изменить ситуацию».

Цитата:
А где достать эту самую Vista Audio


Цитата:
с офф форума.

Всего записей: 304 | Зарегистр. 29-07-2008 | Отправлено: 04:01 19-07-2012
creature_ws



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
После быстрого двукратного нажатия Ctrl + C скопированный текст проговаривается «встроенным голосом»

Код:
~^vk43::(A_ThisHotkey == A_PriorHotkey && A_TimeSincePriorHotkey < 500) && Say(Clipboard)
 
Say(string)
{
    static SAPIVoice := ComObjCreate("SAPI.SpVoice")
    return SAPIVoice.speak(string)
}

Выключение — в контекстном меню значка в трее, значок этот можно убрать добавив директиву #NoTrayIcon в начало скрипта.

Всего записей: 304 | Зарегистр. 29-07-2008 | Отправлено: 23:39 19-08-2012
OnMyDSeeAtAll



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Тоже как-то игрался с SAPI, после того как натолкнулся на оффоруме на такой примерчик.

Код:
MsgBox, 262144
           
,
% "Speak the text"(oSAPI:=ComObjCreate("SAPI.SpVoice")
           
,
oSAPI.Volume:=100, oWScSh:=ComObjCreate("WScript.Shell"))
           
,
% SampleText:="Hello World!"
           
,
% 1.5
 
oSAPI.Rate:=0, oSAPI.Speak(SampleText, 1)
oWScSh.Popup("Slow down the speech", 1, "rate: -7")
oSAPI.Rate:=-7, oSAPI.Speak(SampleText)
oWScSh.Popup("Speed up the speech", 1, "rate: 7")
oSAPI.Rate:=7, oSAPI.Speak(SampleText), oSAPI.Rate:=0 ; set to default
oWScSh.Popup("Lower the volume (ranges 0-100)", 1, "volume: 50")
oSAPI.Volume:=50, oSAPI.Speak(SampleText)
ExitApp


Код:
MsgBox, 262144
           
,
% " "oSh:=ComObjCreate("Shell.Application").BrowseForFolder(0, "Select Folder", 16|512, "C:\")
           
,
% oSh.Self.Path "`n"oSh.Self.Verbs.Count
           
, % 0.5 SubStr(ComObjCreate("SAPI.SpVoice").Speak(oSh.Self.Path), 2)

Всего записей: 100 | Зарегистр. 08-07-2011 | Отправлено: 00:49 20-08-2012 | Исправлено: OnMyDSeeAtAll, 08:14 04-12-2012
oshizelly



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите или лучше ткните носом в описание в документах, как ли в AutoHotKey назначать горячие клавиши только для конкретного приложения. Допустим, назначаем для Windows Explorer комбинацию Shift+F6 для вставки текущей системной даты, а та же комбинацию Shift+F6 в браузере - переход на страницу Google.com, а если нет ни одного активного окна (открыт Рабочий Стол), то Shift+F6 запускает MS Word и открывает в нем документ mydocument.doc... Ну и так далее в таком духе.
 
Если вопрос глупый, прошу ногами не бить: сабжем пользуюсь второй день, и вообще чайник.
 
Спасибо!

Всего записей: 6524 | Зарегистр. 18-09-2004 | Отправлено: 13:16 28-10-2012
creature_ws



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Context-sensitive Hotkeys
Если горячая клавиша должна работать в неком списке окон, список окон (применимый для использования с директивами #IfWin) можно создать при помощи GroupAdd, WinTitle
 
FAQ
Tutorial
Guides, walkthroughs and tips
Alphabetical Command and Function Index
Variables and Expressions
Functions

Всего записей: 304 | Зарегистр. 29-07-2008 | Отправлено: 14:40 28-10-2012 | Исправлено: creature_ws, 14:42 28-10-2012
Quasus

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
То есть вы привязываете клавиши не к приложениям, а к окнам. Для идентификации окон можно использовать их названия (или куски названий), а для большей надёжности — ahk_class. Информацию об открытом окне можно получить с помощью Window Spy (вызывается из контекстного меню к скриптам.)
 
Что-то никогда не пользовался GroupAdd. creature_ws, спасибо за тип.

Всего записей: 43 | Зарегистр. 08-05-2012 | Отправлено: 15:22 28-10-2012 | Исправлено: Quasus, 15:24 28-10-2012
creature_ws



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
К окнам приложений , если требуется, чтоб горячая клавиша срабатывала во всех окнах порождаемых неким процессом — в качестве WinTitle нужно указать ahk_exe имяпроцесса.exe

Всего записей: 304 | Зарегистр. 29-07-2008 | Отправлено: 15:58 28-10-2012 | Исправлено: creature_ws, 16:00 28-10-2012
Quasus

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ой, я не в качестве исправлений, а просто чтобы резюмировать общую идеологию.

Всего записей: 43 | Зарегистр. 08-05-2012 | Отправлено: 16:23 28-10-2012
creature_ws



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я тоже. Для уточнения формулировки.

Всего записей: 304 | Зарегистр. 29-07-2008 | Отправлено: 16:26 28-10-2012
oshizelly



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Почитал некоторые доки (не всё, конечно: этого материала и за неделю не осилить), но так и не нашёл ответа на до смешного простой вопрос: как добавить пробел после вставки переменной?  
 
И ещё. Есть ли возможность назначить замену для комбинации с левым шифтом и альтом? Подчёркиваю, речь не о сабжевом хоткее с различением левого/правого альта и шифта (для этого используются символы < и >), а о замене назначенного в настройках Windows сочетания LeftShift+LeftAlt. Пробовал обойтись без уточнения, просто написал скрипт
Код:
^+CapsLock::!+
(для циклического переключения раскладок клавиатуры), но он работает неправильно. Подозреваю, что именно из-за отсутствия уточнения в правой части строки.

Всего записей: 6524 | Зарегистр. 18-09-2004 | Отправлено: 18:45 28-10-2012
monsoon



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
oshizelly

Цитата:
Код:^+CapsLock::!+  
(для циклического переключения раскладок клавиатуры),  

 
Про переключение раскладок, в том числе и по CapsLock,  посмотрите на русскоязычном форуме.

Всего записей: 1255 | Зарегистр. 30-01-2003 | Отправлено: 09:48 29-10-2012
creature_ws



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Пробел добавить можно разными способами.
Send - команда. В качестве аргумента эта команда ожидает имена клавиш и|или строку символов. Ниже - варианты «добавления пробела», рекомендую уловить суть
 

Код:
SendInput %A_MDAY%-%A_MM%-%A_Year%%A_Space% ; добавляем в конец строки содержимое встроенной переменной содержащей пробел
 
SendInput %A_MDAY%-%A_MM%-%A_Year%{Space} ; добавляем имя клавиши «пробел»
 
SendInput %A_MDAY%-%A_MM%-%A_Year% ` ; добавляем экранирующий символ после пробела для предотвращения автоматического отсекания завершающих пробелов в строках подразумевающих «не выражение»
 
SendInput % A_MDAY "-" A_MM "-" A_Year " " ; «переключаем» с помощью знака процента поле аргумента в выражение, добавляем пробел к выражению в виде подстроки содержащий лишь пробел.
 
SendInput % A_MDAY "-" A_MM "-" A_Year A_Space ; аналогично предыдущему, но пробел представлен в виде переменной его содержащей.
 

 
Если нажатием ctrl shift capslock нужно «нажимать» alt shift:

Код:
^+CapsLock::
    SetKeyDelay, 10, 10 ; включаем паузу между нажатием и отпусканием, отпусканием и следующим нажатием, иначе переключение раскладки будет срабатывать не всегда.
    Send {Alt Down}{shift}{Alt Up} ; альт, шифт и т.д. представлять в виде символов !+ можно лишь используя их в качестве модификаторов «обычной» клавиши
    return ; обозначает конец подпрограммы горячей клавиши записанной более чем в одну строку.
 
 

Цитата:
Какой командой можно обозначить границу влияние этого условия?


Цитата:
The #IfWin directives are positional: they affect all hotkeys and hotstrings physically beneath them in the script. They are also mutually exclusive; that is, only the most recent one will be in effect.
 
To turn off context sensitivity, specify any #IfWin directive but omit all of its parameters. For example:
#IfWinActive

Всего записей: 304 | Зарегистр. 29-07-2008 | Отправлено: 09:53 29-10-2012 | Исправлено: creature_ws, 10:24 29-10-2012
oshizelly



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
creature_ws 07:53 29-10-2012  

Цитата:
Если нажатием ctrl shift capslock нужно «нажимать» alt shift:  

Код:
^+CapsLock::  
     SetKeyDelay, 10, 10
     Send {Alt Down}{shift}{Alt Up}
     return  

   
Спасибо за скрипт, но есть две маленьких проблемки.  
Cкрипт не работает, точнее, работает не совсем так, как я ожидал. Нажатие комбинации Alt+Shift эмулируется при двойном нажатии хоткея Ctrl+Shift+CapsLock. Соответственно, чтобы прокрутить по кругу три раскладки, надо нажать хоткея Ctrl+Shift+CapsLock шесть раз. Почему так - непонятно. Возможно, неверно передано нажатие комбинации Alt+Shift? Я пробовал подставить Alt Down}{Shift Down}{Shift Up}{Alt Up}, но и в этом случае требуется двойное нажатие. А при использовании натуральных клавиш Alt+Shift хватает одинарного.
И ещё, так и остался без ответа мой вопрос о различении левых и правых парных клавиш (Shift, Alt, Ctrl, Win) при их переопределении в правой части строки.  
 
monsoon 07:48 29-10-2012
Цитата:
Про переключение раскладок, в том числе и по CapsLock,  посмотрите на русскоязычном форуме.

Посмотрел, спасибо. Это именно то, про что я спрашивал. Но там уже готовое решение, а хотелось найти ошибку в моём скрипте.
 
 
Добавлено:
Подскажите команду для получения полного имени (путь + имя файла) документа, открытого в текущем окне? Если это имя отображается в заголовке окна, то можно использовать команду WinGetTitle. Но не все приложения отображают полное имя открытого файла (и от их настроек тоже зависит). Опять же заголовке есть "лишние" элементы (например, имя приложения), которые приходится убирать вручную.
Нашёл в интернете пару скриптов вот и вот, но не могу в них разобраться.
 
Ещё вопрос. В случае конфликта между текущим приложением и AHK за один и тот же хоткей кому отдаётся приоритет? Или между OS и AHK? Я думал, что за AHK, но вроде бы это не так...
 
 

creature_ws
Цитата:
рекомендую уловить суть

Я как раз и гоняюсь за ней уже пару дней... Но больно уж она прыткая

Всего записей: 6524 | Зарегистр. 18-09-2004 | Отправлено: 15:31 29-10-2012 | Исправлено: oshizelly, 15:43 29-10-2012
creature_ws



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Возможно, неверно передано нажатие комбинации Alt+Shift

Комбинация передана верно, изобретать нечего.

Всего записей: 304 | Зарегистр. 29-07-2008 | Отправлено: 19:36 29-10-2012
oshizelly



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
creature_ws 17:36 29-10-2012
Цитата:
Комбинация передана верно

Но не работает корректно... По крайней мере у меня. Или двойное нажатие в данном случае неизбежное условие? Хотя, повторю, нативное сочетание Alt+Shif работает с одинарным нажатием.

Всего записей: 6524 | Зарегистр. 18-09-2004 | Отправлено: 20:18 29-10-2012
oshizelly



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Перерыл весь интернет и мозг себе сломал. Не понимаю. как можно установить окно (или все окна определённого процесса) в качестве исключения. Нашёл команду ExcludeTitle, но она не работает (или неправильно её использую).  
Решил пойти от противного, то есть, задать в левой и правой части строки одинаковые комбинации для исключаемого приложения:

Код:
#IfWinActive, Total Commander
+F6::SendInput +{F6}
 
#IfWinActive  
+F6::MsgBox You pressed Shift+F6 NOT in TC
 

Но в результате хоткей перестает вообще выполнять какие бы то ни было действия в заданной программе. Наверное, AutoHotKey не позволяет "заменить" хоткей на самого себя.
Что делать, чтобы скрипт работал во всех окнах, за исключением указанного? Или, ещё лучше, группы из нескольких указанных.

Всего записей: 6524 | Зарегистр. 18-09-2004 | Отправлено: 00:24 30-10-2012 | Исправлено: oshizelly, 00:29 30-10-2012
creature_ws



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Что делать, чтобы скрипт работал во всех окнах, за исключением указанного

Не скрипт, а горячие клавиши, вероятно.

Код:
#IfWinNotActive


Цитата:
Перерыл весь интернет

А рыть нужно было в справке

Всего записей: 304 | Зарегистр. 29-07-2008 | Отправлено: 01:21 30-10-2012
OnMyDSeeAtAll



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
oshizelly
Цитата:
Но в результате хоткей перестает вообще выполнять какие бы то ни было действия...
Вы же ищете по части названия окна, директива SetTitleMatchMode в помощь:
Код:
SetTitleMatchMode, 2
;SetTitleMatchMode, RegEx ;или
 
#IfWinActive
, Total Commander
     
+F6::SendInput, +{F6}
 
#IfWinActive
;#If ;или
   
+F6::MsgBox, 262144, % " ", % "You pressed Shift+F6 NOT in TC", % 0.5
Ещё варианты:
Код:
#IfWinActive, ahk_class TTOTAL_CMD
   
+F6::SendInput, +{F6}
 
#If
;#IfWinActive ;или
   
+F6::MsgBox, 262144, % " ", % "You pressed Shift+F6 NOT in TC", % 0.5

Код:
#If, WinActive("ahk_class TTOTAL_CMD")
   +
F6::SendInput, +{F6}
 
#If  
;#IfWinActive ;или
   
+F6::MsgBox, 262144, % " ", % "You pressed Shift+F6 NOT in TC", % 0.5


Цитата:
Что делать, чтобы скрипт работал во всех окнах, за исключением указанного? Или, ещё лучше, группы из нескольких указанных.
Группировать, и проверять можно по классу:
Код:
GroupAdd, MyGroup, ahk_class CalcFrame ; calculator
GroupAdd, MyGroup, ahk_class TTOTAL_CMD ; tc
 
+F6::
   
IfWinActive,
ahk_group MyGroup
     
MsgBox, 262144, % "Pressed Shift+F6", % "In a group exclusion", % 0.75
   
Else SoundBeep
   KeyWait
, F6
   
Return
или проверять в условии по названию процесса:
Код:
+F6::
   
WinGet,
WndProcName, ProcessName, % "A"
   
If (WndProcName="totalcmd.exe" Or WndProcName="calc.exe")
     
MsgBox, 262144,
% "Pressed Shift+F6", % "In a group exclusion", % 0.75
   
Else SoundBeep
   KeyWait
, F6
   
Return
по шаблону:
Код:
; регистрозависимый шаблон
MyGroup:="TOTALCMD|calc|notepad"
 
+F6::
   
WinGet,
WndProcName, ProcessName, A
   
If RegExMatch(WndProcName, MyGroup)
     
MsgBox, 262144,
% "Pressed Shift+F6", % "In a group exclusion", % 0.75
   
Else
     
SoundBeep
   KeyWait
, F6
   
Return
или:
Код:
MyGroup:="TOTALCMD|calc|notepad"
 
+F6::
   
WinGet,
WndProcName, ProcessName, A
   
If WndProcName~=MyGroup ;~= короткий эквивалент команды RegExMatch
     
MsgBox, 262144, % "Pressed Shift+F6", % "In a group exclusion", % 0.75
   
Else SoundBeep
   KeyWait
, F6
   
Return
всё тоже самое, только через функцию:
Код:
MyGroup:="TOTALCMD|calc|notepad"
 
#If,
CheckUp(MyGroup)
   +
F6::
     
MsgBox, 262144,
% "Pressed Shift+F6", % "In a group exclusion", % 0.75
     
KeyWait, F6
     
Return
 
#If
   
+F6::
     
SoundBeep
      KeyWait
, F6
     
Return
 
CheckUp(Pattern)
{
   
WinGet,
WndProcName, ProcessName, A
   
;Return, RegExMatch(WndProcName, Pattern)
   
Return
, Result:=WndProcName~=Pattern ;или
}

Всего записей: 100 | Зарегистр. 08-07-2011 | Отправлено: 05:32 30-10-2012 | Исправлено: OnMyDSeeAtAll, 08:28 04-12-2012
oshizelly



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OnMyDSeeAtAll
creature_ws
Прошу прощения, что сразу не ответил: потребовалось много времени, чтобы въехать во все детали (да и в прочая жизнь требует некоторого внимания).  
 
OnMyDSeeAtAll 03:32 30-10-2012
Цитата:
Вы же ищете по части названия окна, директива SetTitleMatchMode в помощь:

По Вашей ссылке сказано, что если значение SetTitleMatchMode явным образом не задано, то подразумеваются значения "1" ("Заголовок окна должен начинаться со значения, заданного в WinTitle). Это как раз мой частный случай: заголовок окна Total Commander начинается с названия программы. Так что причина нестыковки не в этом.  
 
Возможно, мой скрипт всё же не работает по той простой причине, что AutoHotkey, в принципе, не позволяет назначить хоткей ему же самому, чтобы значение левой и правой частей директивы были тождественны? По крайней мере, мне такого сделать не удалось.  

Цитата:
Группировать, и проверять можно по классу...
или проверять в условии по названию процесса...
по шаблону...
тоже самое, только через функцию...

Сколько, оказывается, есть способов, чтобы решить одну и ту же задачу
А нельзя ли попросить хотя бы один пример с использованием шаблона ExcludeTitle?
 
 
creature_ws 23:21 29-10-2012
Цитата:

Цитата:
Что делать, чтобы горячие клавиши работали во всех окнах, за исключением указанного  


Код:
#IfWinNotActive

Я попробовал эту директиву, но желаемого результата не получил. Впрочем, может этот скрипт как-то конфликтует с предыдущими, надо разбираться. А сам код скрипта у меня правильный?

Код:
#IfWinNotActive, Total Commander  
+F6::MsgBox You pressed Shift+F6 NOT in TC

 


 
Кстати, пока так и не сумел понять, как лучше строить работу. Насколько я понимаю, возможны две концепции: распихать каждый скрипт в отдельный файл (и запускать некоторые из них автоматически при каждом запуске сабжа) либо свалить все в один файл. Как эта альтернатива решается продвинутыми юзерами на практике?
 
И ещё пара вопросов по допустимым комбинациям клавиш.
 
1. Можно ли использовать сочетания из нескольких обыкновенных буквенно-цифровых клавиш (вместе с модификатором). Например, я уже убедился экспериментально, что можно сделать, например, Alt+Ctrl+CapsLok. А вот Alt+Ctrl+CapsLok+W не работает. И Alt+Ctrl+2 тоже. А должны?
 
2. Можно ли эмулировать нажатия спец. клавиш, например, <Win>, <App>, <Pause>, <PrnScr> и т.д. Или, поменять друг на друга Alt и Ctrl (если они на клаве расположены "неправильно")? В справке ответа на нашёл, в инете тоже, а многочисленные эксперименты запутали дело окончательно
 
Заранее огромное спасибо за помощь!

Всего записей: 6524 | Зарегистр. 18-09-2004 | Отправлено: 21:37 04-11-2012 | Исправлено: oshizelly, 21:45 04-11-2012
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76

Компьютерный форум Ru.Board » Компьютеры » Программы » AutoHotkey


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru