синтаксис WM_KEYDOWN

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
ozzet
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 14.01.2011 (Пт) 12:48

синтаксис WM_KEYDOWN

Сообщение ozzet » 08.09.2012 (Сб) 21:32

всем привет!
Синтаксис
WM_KEYDOWN
nVirtKey = (int) wParam; // код виртуальной клавиши
lKeyData = lParam; // данные на клавишу

как прописать lParam для WM_KEYDOWN в функции LowLevelKeyboardProc?
на вопрос: зачем?
ответ: пытаюсь понять как это работает)
Неадекватом может быть каждым!!! А вот быть адекватом это надо постараться!)
Неадекватность заразна!!!НО излечима)

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: синтаксис WM_KEYDOWN

Сообщение Хакер » 08.09.2012 (Сб) 23:43

Ответа не будет, потому что никакого смысла в сообщении не проглядывается.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ozzet
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 14.01.2011 (Пт) 12:48

Re: синтаксис WM_KEYDOWN

Сообщение ozzet » 08.09.2012 (Сб) 23:56

http://vsokovikov.narod.ru/New_MSDN_API ... eydown.htm это чтобы был смысл) могу скопировать статью сюда.
вот мне надо сообщению WM_KEYDOWN прописать lParam, вот хотелось бы увидеть наглядный пример как это делается.
Неадекватом может быть каждым!!! А вот быть адекватом это надо постараться!)
Неадекватность заразна!!!НО излечима)

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: синтаксис WM_KEYDOWN

Сообщение Хакер » 09.09.2012 (Вс) 0:05

ozzet писал(а):вот мне надо сообщению WM_KEYDOWN прописать lParam,

Фраза «прописать lParam сообщению WM_KEYDOWN» не имеет смысла.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ozzet
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 14.01.2011 (Пт) 12:48

Re: синтаксис WM_KEYDOWN

Сообщение ozzet » 09.09.2012 (Вс) 0:07

Синтаксис
WM_KEYDOWN
-----WPARAM wParam
-----LPARAM lParam;

Параметры
wParam-Определяет код символа клавиши.
lParam -Определяет счет повторений, скэн-код, флажок дополнительной клавиши, контекстный код, флажок предыдущего состояния клавиши и флажок переходного состояния, как показано в следующей таблице:
Описание
0-15
Определяет счет повторений текущего сообщения. Значение равно числу автоповтора нажатий клавиши в результате того, что пользователь удерживает клавишу нажатой. Если нажатие клавиши удерживается достаточно долго, отправляются многочисленные сообщения . Однако, счет повторений не накапливается.
16-23
Определяет скэн-код. Значение зависит от фирмы - изготовителя комплектного оборудования (OEM).
24
Определяет, является ли клавиша дополнительной клавишей, типа правосторонних клавиш ALT и CTRL, которые появляются на усовершенствованной 101- или 102-клавишной клавиатуре. Значение равно 1, если это дополнительная клавиша; иначе, оно равно 0.
25-28
Зарезервировано; не используется.
29
Определяет контекстный код. Это значение - всегда 0 для сообщения WM_KEYDOWN.
30
Определяет предыдущее состояние клавиши. Это значение равно 1 в том случае, если клавиша была нажата перед отправкой сообщения или оно равно 0, если клавиша была не нажата.
31
Определяет переходное состояние. Это значение - всегда 0 для сообщения WM_KEYDOWN.
Неадекватом может быть каждым!!! А вот быть адекватом это надо постараться!)
Неадекватность заразна!!!НО излечима)

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: синтаксис WM_KEYDOWN

Сообщение Хакер » 09.09.2012 (Вс) 0:16

Весь этот текст никак не влияет на то, что:
Хакер писал(а):Фраза «прописать lParam сообщению WM_KEYDOWN» не имеет смысла.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ozzet
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 14.01.2011 (Пт) 12:48

Re: синтаксис WM_KEYDOWN

Сообщение ozzet » 09.09.2012 (Вс) 0:18

хорошо)может это имеет смысл) если и это не имеет смыл то буду ждать того для кого это будет иметь смысл)
сообщению WM_KEYDOWN нужно прописать параметр LPARAM, как это можно сделать?
Неадекватом может быть каждым!!! А вот быть адекватом это надо постараться!)
Неадекватность заразна!!!НО излечима)

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 09.09.2012 (Вс) 0:26

Параметр "прописывается", а точнее передаётся, не сообщению, а функции SendMessage или PostMessage, которой так же передаётся и сообщение.
Взять и поставить нужное число в аргумент - в чём проблема? И в чём вообще вопрос?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: синтаксис WM_KEYDOWN

Сообщение Хакер » 09.09.2012 (Вс) 0:26

ozzet писал(а):сообщению WM_KEYDOWN нужно прописать параметр LPARAM, как это можно сделать?

Никак.
Сообщение можно послать. Сообщение можно получить. Сообщение можно обработать. Сообщение можно вынуть из очереди, удалив его из очереди или оставив. Сообщение можно подвергнуть трансформации. Сообщение можно подвергнуть диспетчеризации.

Что такое «сообщению WM_KEYDOWN нужно прописать параметр LPARAM» надо спрашивать у того, кто придумал эту нелепую последовательность слов. А лучше не надо его спрашивать, лучше просто не читать таких товарищец.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: синтаксис WM_KEYDOWN

Сообщение Хакер » 09.09.2012 (Вс) 0:28

Qwertiy писал(а):И в чём вообще вопрос?

Вот видишь, ozzet , если даже Qwertiy, который частенько мне говорит «зачем ты, Хакер, выделываешься, говоря, что вопрос непонятен, когда вопрос весьма и весьма понятно сформулирован», в данном случае спрашивает «в чём вопрос», то ты совсем безнадёжен.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ozzet
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 14.01.2011 (Пт) 12:48

Re: синтаксис WM_KEYDOWN

Сообщение ozzet » 09.09.2012 (Вс) 0:29

не читайте, не спрашивайте ваше право)
Неадекватом может быть каждым!!! А вот быть адекватом это надо постараться!)
Неадекватность заразна!!!НО излечима)

ozzet
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 14.01.2011 (Пт) 12:48

Re: синтаксис WM_KEYDOWN

Сообщение ozzet » 09.09.2012 (Вс) 0:31

Qwertiy писал(а):Параметр "прописывается", а точнее передаётся, не сообщению, а функции SendMessage или PostMessage, которой так же передаётся и сообщение.
Взять и поставить нужное число в аргумент - в чём проблема? И в чём вообще вопрос?

просто я хочу понять как это работает) я начал изучать хуки) и пытаюсь вникнуть во все составляющие)]
пример:
Код: Выделить всё
Public Function LowLevelKeyboardProc(ByVal uCode As Long, ByVal wParam As Long, lParam As KBDLLHOOKSTRUCT) As Long
          If uCode >= 0 Then
              Select Case uCode
                  Case HC_ACTION
                  If wParam = WM_KEYDOWN Then
                      If lParam.vkCode = VK_N Then
                     
                      LowLevelKeyboardProc = 1
               
                          Call keybd_event(VK_B, 0, 0, 0)
                          Call keybd_event(VK_B, 0, KEYEVENTF_KEYUP, 0)

вот как здесь WM_KEYDOWN прописать параметр lParam.
только не спрашивайте зачем, это просто пример)
вопрос в том что у WM_KEYDOWN свой lParam, а у LowLevelKeyboardProc свой lParam( как бы система их не перепутала) можете меня осуждать сколько хотите за не знание, но вспомните как начинали вы!!!!!!
хакер ты перепутал свой пост с моим)
хакер мечты сбываются и тебя идиота кто нибудь да убьёт)
я думал годы меняют людей но видать неадекватного админа в тебе не что не изменит(
Неадекватом может быть каждым!!! А вот быть адекватом это надо постараться!)
Неадекватность заразна!!!НО излечима)

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: синтаксис WM_KEYDOWN

Сообщение Хакер » 09.09.2012 (Вс) 0:49

ozzet писал(а):вот как здесь WM_KEYDOWN прописать параметр lParam.
только не спрашивайте зачем, это просто пример)

Да кому нужно, зачем это нужно, если даже непонятно, что нужно.

Тебе 5 лет что-ли, что ты не можешь понять, что тебе пишут? Не понятна широкой общественности фраза «прописать сообщению параметр lParam». Не надо больше повторять эту фразу.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ozzet
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 14.01.2011 (Пт) 12:48

Re: синтаксис WM_KEYDOWN

Сообщение ozzet » 09.09.2012 (Вс) 0:59

что тут тебе не понятно? я вроде тебе все написал и не один раз!
вот значения :
0-15
Определяет счет повторений текущего сообщения. Значение равно числу автоповтора нажатий клавиши в результате того, что пользователь удерживает клавишу нажатой. Если нажатие клавиши удерживается достаточно долго, отправляются многочисленные сообщения . Однако, счет повторений не накапливается.
16-23
Определяет скэн-код. Значение зависит от фирмы - изготовителя комплектного оборудования (OEM).
24
Определяет, является ли клавиша дополнительной клавишей, типа правосторонних клавиш ALT и CTRL, которые появляются на усовершенствованной 101- или 102-клавишной клавиатуре. Значение равно 1, если это дополнительная клавиша; иначе, оно равно 0.
25-28
Зарезервировано; не используется.
29
Определяет контекстный код. Это значение - всегда 0 для сообщения WM_KEYDOWN.
30
Определяет предыдущее состояние клавиши. Это значение равно 1 в том случае, если клавиша была нажата перед отправкой сообщения или оно равно 0, если клавиша была не нажата.
31
Определяет переходное состояние. Это значение - всегда 0 для сообщения WM_KEYDOWN
вот параметр:
lParam;
вот сообщение:
WM_KEYDOWN

в сообщение WM_KEYDOWN нужно прописать/передать, кому как угодно, параметр со значением к примеру 30 .
вопрос: как это осуществить?
что тут может не понятно быть?
я даже код дал где это нужно осуществить
Код: Выделить всё
Public Function LowLevelKeyboardProc(ByVal uCode As Long, ByVal wParam As Long, lParam As KBDLLHOOKSTRUCT) As Long
          If uCode >= 0 Then
              Select Case uCode
                  Case HC_ACTION
                  If wParam = WM_KEYDOWN Then
                      If lParam.vkCode = VK_N Then
                     
                      LowLevelKeyboardProc = 1
               
                          Call keybd_event(VK_B, 0, 0, 0)
                          Call keybd_event(VK_B, 0, KEYEVENTF_KEYUP, 0)

и всё ровно тупишь)
Неадекватом может быть каждым!!! А вот быть адекватом это надо постараться!)
Неадекватность заразна!!!НО излечима)

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 09.09.2012 (Вс) 1:05

Есть сообщение, например, посланное так: SendMessage(hwnd, WM_KEYDOWN, key, lparam)
Ты хочешь из хука добраться до значения lparam и подменить его.
Я правильно понимаю?

ozzet
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 14.01.2011 (Пт) 12:48

Re: синтаксис WM_KEYDOWN

Сообщение ozzet » 09.09.2012 (Вс) 1:16

Qwertiy писал(а):Есть сообщение, например, посланное так: SendMessage(hwnd, WM_KEYDOWN, key, lparam)
Ты хочешь из хука добраться до значения lparam и подменить его.
Я правильно понимаю?

http://vsokovikov.narod.ru/New_MSDN_API ... rdproc.htm
вот у этой функции LowLevelKeyboardProc есть параметры wParam и lParam, нужно параметру wParam функции LowLevelKeyboardProc назначить одно из сообщений ( возмем к примеру WM_KEYDOWN), у сообщения WM_KEYDOWN также есть параметры wParam и lParam, нужно параметру lParam сообщения WM_KEYDOWN назначить значение 30 .
дак вот в чем вопрос как мне в lParam сообщения WM_KEYDOWN назначить значение 30? и применить в выше упомянутом коде(
если я напишу lParam=30 то система назначит это значение LowLevelKeyboardProc. а мне надо это значение назначить параметру lParam сообщения WM_KEYDOWN. вот как то так
Неадекватом может быть каждым!!! А вот быть адекватом это надо постараться!)
Неадекватность заразна!!!НО излечима)

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 09.09.2012 (Вс) 1:27

ozzet, если ответишь на мой вопрос "Да", то, возможно, Хакер скажет, как это сделать.
Если ты хочешь что-то другое, то я понятия не имею, что.
И заканчивай работать попугаем - надоедает.

ozzet
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 14.01.2011 (Пт) 12:48

Re: синтаксис WM_KEYDOWN

Сообщение ozzet » 09.09.2012 (Вс) 1:30

просто в виду не знания того чего ты написал, а главное относиться ли это к тому что мне нужно, я обрисовал картину в полном цвете) чтобы не запутать еще больше.
повторюсь у данного вопроса только познавательная цель я хочу понять как это(работает) выглядит в коде.
Неадекватом может быть каждым!!! А вот быть адекватом это надо постараться!)
Неадекватность заразна!!!НО излечима)

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 09.09.2012 (Вс) 1:35

Я всё равно не знаю ответа на сформулированный мной вопрос :)
Последний раз редактировалось Qwertiy 09.09.2012 (Вс) 1:36, всего редактировалось 1 раз.

ozzet
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 14.01.2011 (Пт) 12:48

Re: синтаксис WM_KEYDOWN

Сообщение ozzet » 09.09.2012 (Вс) 1:36

ладно парни проехали тема закрыта(
Неадекватом может быть каждым!!! А вот быть адекватом это надо постараться!)
Неадекватность заразна!!!НО излечима)

ark
Бывалый
Бывалый
 
Сообщения: 216
Зарегистрирован: 18.07.2011 (Пн) 0:57

Re: синтаксис WM_KEYDOWN

Сообщение ark » 10.09.2012 (Пн) 7:45

WM_KEYDOWN это КОНСТАНТА. Твоя цитата MSDN из первого сообщения относится к спецификации Send(Post)Message API
SendMessage(hwnd,msg,wparam,lparam) где msg - сообщение (в данном случае WM_KEYDOWN), wparam/lparam - для каждого сообщения - разные, для конкретного (WM_KEYDOWN) - см. свой первый пост. В CallBack'ах субклассинга параметры те же, у хуков - отличаются. В твоём примере wparam ВСЕГДА 1 из 4-х WM_KEYDOWN/WM_KEYUP/WM_SYSKEYDOWN/WM_SYSKEYUP. Подменить сообщение в хуке нельзя (ByVal wparam). Кстати, 30=0х1Е=WM_TIMECHANGE - ты это хочешь поменять? :shock:
Подменить lParam - легко:
If lParam.vkCode = VK_N Then lParam.vkCode=VK_A
ozzet писал(а):повторюсь у данного вопроса только познавательная цель я хочу понять как это(работает) выглядит в коде

Я бы начал с SetWindowTextA...
А ещё лучше - Bruce MkKiney "Hardcore VB"->Dan Appleman "Win32 API Guide". Может, из современного тож что-то есть, но это - классика. Жаль VBPJ прикрыли

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 10.09.2012 (Пн) 7:52

ark писал(а):Подменить сообщение в хуке нельзя (ByVal wparam).

50%, что ты не прав :)

ark
Бывалый
Бывалый
 
Сообщения: 216
Зарегистрирован: 18.07.2011 (Пн) 0:57

Re: синтаксис WM_KEYDOWN

Сообщение ark » 10.09.2012 (Пн) 9:44

Qwertiy писал(а):50%, что ты не прав
То исть? If lParam.vkCode = VK_N Then lParam.vkCode=VK_A: Exit Function - сработает, а wParam = 30 - нет. Да и зачем подменять?
Код: Выделить всё
SendMessage(hwnd_Куда,WM_Что, wprm,lprm)
HookProc=CallNextHookEx(hhok,code,wparam,lparam)

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 10.09.2012 (Пн) 13:16

А зачем присваивать?
А если просто другое значение в CallNextHookEx передать, что произойдёт?
А можно ли найти хендл, которому сообщение послано? Если да, то говорим, что это обработано и посылаем другое.

ozzet
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 14.01.2011 (Пт) 12:48

Re: синтаксис WM_KEYDOWN

Сообщение ozzet » 10.09.2012 (Пн) 18:29

ark писал(а):WM_KEYDOWN это КОНСТАНТА. Твоя цитата MSDN из первого сообщения относится к спецификации Send(Post)Message API
SendMessage(hwnd,msg,wparam,lparam) где msg - сообщение (в данном случае WM_KEYDOWN), wparam/lparam - для каждого сообщения - разные, для конкретного (WM_KEYDOWN) - см. свой первый пост. В CallBack'ах субклассинга параметры те же, у хуков - отличаются. В твоём примере wparam ВСЕГДА 1 из 4-х WM_KEYDOWN/WM_KEYUP/WM_SYSKEYDOWN/WM_SYSKEYUP. Подменить сообщение в хуке нельзя (ByVal wparam). Кстати, 30=0х1Е=WM_TIMECHANGE - ты это хочешь поменять? :shock:
Подменить lParam - легко:
If lParam.vkCode = VK_N Then lParam.vkCode=VK_A
ozzet писал(а):повторюсь у данного вопроса только познавательная цель я хочу понять как это(работает) выглядит в коде

Я бы начал с SetWindowTextA...
А ещё лучше - Bruce MkKiney "Hardcore VB"->Dan Appleman "Win32 API Guide". Может, из современного тож что-то есть, но это - классика. Жаль VBPJ прикрыли


спасибо что снова выручил и разжувал мне то в чем я запутался) я просто когда хуки изучал нажал по ссылке и перешёл не на константу WM_KEYDOWN а на сообщение и думал что это то что мне нужно) спасибо что разьяснил)
по этой теме вопросов больше нет) спасибо всем) кроме ХАКЕРА!
Неадекватом может быть каждым!!! А вот быть адекватом это надо постараться!)
Неадекватность заразна!!!НО излечима)

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 10.09.2012 (Пн) 19:02

ozzet, почему ты так уверен, что ответ ark'а правильный?

ozzet
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 14.01.2011 (Пт) 12:48

Re: синтаксис WM_KEYDOWN

Сообщение ozzet » 10.09.2012 (Пн) 19:19

Qwertiy писал(а):ozzet, почему ты так уверен, что ответ ark'а правильный?

"WM_KEYDOWN это КОНСТАНТА " он как это написал я сразу понял что я думал про это а спрашивал про другое)
Неадекватом может быть каждым!!! А вот быть адекватом это надо постараться!)
Неадекватность заразна!!!НО излечима)

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 10.09.2012 (Пн) 22:02

ozzet писал(а):"WM_KEYDOWN это КОНСТАНТА " он как это написал я сразу понял что я думал про это а спрашивал про другое)

Хм.. Ну это-то да :)
Мне казалось, я тоже что-то такое говорил... Похоже, что не так очевидно, только:
Qwertiy писал(а):Параметр "прописывается", а точнее передаётся, не сообщению, а функции SendMessage или PostMessage, которой так же передаётся и сообщение.
Взять и поставить нужное число в аргумент - в чём проблема? И в чём вообще вопрос?

А вот по поводу подмены - совсем не уверен, что он прав.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 10.09.2012 (Пн) 22:12

ark писал(а):Подменить lParam - легко:
If lParam.vkCode = VK_N Then lParam.vkCode=VK_A

Для SendMessage это как раз был wparam...

ozzet
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 14.01.2011 (Пт) 12:48

Re: синтаксис WM_KEYDOWN

Сообщение ozzet » 10.09.2012 (Пн) 22:42

Qwertiy писал(а):
ozzet писал(а):"WM_KEYDOWN это КОНСТАНТА " он как это написал я сразу понял что я думал про это а спрашивал про другое)

Хм.. Ну это-то да :)
Мне казалось, я тоже что-то такое говорил... Похоже, что не так очевидно, только:
Qwertiy писал(а):Параметр "прописывается", а точнее передаётся, не сообщению, а функции SendMessage или PostMessage, которой так же передаётся и сообщение.
Взять и поставить нужное число в аргумент - в чём проблема? И в чём вообще вопрос?

А вот по поводу подмены - совсем не уверен, что он прав.

просто я еще с хуками не разобрался а тут SendMessage или PostMessage которые я не знаю как применить а главное в каком моменте кода) так что решил что это не то что мне надо)
вообщем извеняите кого чем то обидел или задел.
Неадекватом может быть каждым!!! А вот быть адекватом это надо постараться!)
Неадекватность заразна!!!НО излечима)

След.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Google-бот и гости: 65

    TopList