С Новым годом! Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.79/56: Рейтинг темы: голосов - 56, средняя оценка - 4.79
1 / 1 / 0
Регистрация: 07.01.2012
Сообщений: 16

Как получить доступ к веб-камере и сделать снимок

08.04.2012, 00:40. Показов 11277. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как получить доступ к веб камере (сделать снимок)? Может быть есть готовый контрол?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.04.2012, 00:40
Ответы с готовыми решениями:

Как получить снимок c веб-камеры из ASP?
День добрый! Есть веб-камера Creative. Кто знает как можно с нее снимать снимок при загрузке ASP? Если нужен компонент, то кто знает где...

Как получить снимок с веб-камеры через пин STILL
Доброго времени суток! Подскажите, пожалуйста, как через PIN_CATEGORY_STILL кадр снять? при использовании PIN_CATEGORY_STILL вместо...

Получить снимок с веб камеры
На данный момент смешал эти коды http://**********/questions/366957/how-do-i-capture-video-from-a-webcam ...

31
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
08.04.2012, 06:00
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от Daniil62 Посмотреть сообщение
Может быть есть готовый контрол?
Да там и без контрола нет ни чего сложного, через avicap32 ( если вдруг погуглить захочется)
Готовый код и скрин прилагается
Миниатюры
Как получить доступ к веб-камере и сделать снимок  
Вложения
Тип файла: zip research_web_camera.zip (2.5 Кб, 696 просмотров)
5
374 / 12 / 3
Регистрация: 07.12.2012
Сообщений: 169
02.08.2013, 19:50
Вот кусок программы который отвечает за сохранение снимка.
Как его переделать что бы сохрянал куда мне надо автоматом?
Что то типа (app.path + "\photo.jpg")
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub cmd4_Click()
Dim sFileName As String
    Call SendMessage(hCap, WM_CAP_SET_PREVIEW, CLng(False), 0&)
    With CDialog
        .CancelError = True
        .Flags = cdlOFNPathMustExist Or cdlOFNOverwritePrompt
        .Filter = "Bitmap Picture(*.bmp)/*.bmp/JPEG Picture(*.jpg)/*.jpg/All Files/*.*"
        .ShowSave
        sFileName = .FileName
   End With
    Call SendMessage(hCap, WM_CAP_FILE_SAVEDIB, 0&, ByVal CStr(sFileName))
DoFinally:
    Call SendMessage(hCap, WM_CAP_SET_PREVIEW, CLng(True), 0&)
End Sub
0
Заблокирован
02.08.2013, 20:08
Pro_grammer, ТЫ шоли?
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
02.08.2013, 20:19
Цитата Сообщение от inv.DS Посмотреть сообщение
ТЫ шоли?

Visual Basic
1
'Created by Puguhwah
0
2044 / 475 / 132
Регистрация: 13.11.2008
Сообщений: 909
03.08.2013, 00:58
Цитата Сообщение от 8i_class Посмотреть сообщение
Как его переделать что бы сохрянал куда мне надо автоматом?
Если только открытие диалога в нужной папке:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub cmd4_Click()
Dim sFileName As String
    Call SendMessage(hCap, WM_CAP_SET_PREVIEW, CLng(False), 0&)
    With CDialog
        .CancelError = True
        .InitDir = App.Path
        .Flags = cdlOFNPathMustExist Or cdlOFNOverwritePrompt
        .Filter = "Bitmap Picture(*.bmp)/*.bmp/JPEG Picture(*.jpg)/*.jpg/All Files/*.*"
        .ShowSave
        sFileName = .FileName
   End With
    Call SendMessage(hCap, WM_CAP_FILE_SAVEDIB, 0&, ByVal CStr(sFileName))
DoFinally:
    Call SendMessage(hCap, WM_CAP_SET_PREVIEW, CLng(True), 0&)
End Sub
А если и имя такое же, то вообще просто:
Visual Basic
1
2
3
4
5
6
7
8
Private Sub cmd4_Click()
Dim sFileName As String
    Call SendMessage(hCap, WM_CAP_SET_PREVIEW, CLng(False), 0&)
    sFileName = App.Path & "\photo.jpg"
    Call SendMessage(hCap, WM_CAP_FILE_SAVEDIB, 0&, ByVal CStr(sFileName))
DoFinally:
    Call SendMessage(hCap, WM_CAP_SET_PREVIEW, CLng(True), 0&)
End Sub
Или я не так понял?
0
374 / 12 / 3
Регистрация: 07.12.2012
Сообщений: 169
03.08.2013, 11:54
Visual Basic
1
2
3
4
5
6
7
8
Private Sub cmd4_Click()
Dim sFileName As String
    Call SendMessage(hCap, WM_CAP_SET_PREVIEW, CLng(False), 0&)
    sFileName = App.Path & "\photo.jpg"
    Call SendMessage(hCap, WM_CAP_FILE_SAVEDIB, 0&, ByVal CStr(sFileName))
DoFinally:
    Call SendMessage(hCap, WM_CAP_SET_PREVIEW, CLng(True), 0&)
End Sub
Спасибо, то что надо!
0
0 / 0 / 0
Регистрация: 21.05.2014
Сообщений: 18
21.05.2014, 01:16
Pro_grammer,Помогите, поставил новую вебкамеру, а расширения новые не появились только 640х480! А хотелось бы побольше!
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
21.05.2014, 01:44
kkdamirkk, используй сообщение WM_CAP_SET_VIDEOFORMAT
0
0 / 0 / 0
Регистрация: 21.05.2014
Сообщений: 18
21.05.2014, 18:22
The trick,
Visual Basic
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
Option Explicit
Dim cnt As Integer
Dim hCap As Long
 
Private Sub cmd1_Click()
hCap = capCreateCaptureWindow("Take a Camera Shot", WS_CHILD Or WS_VISIBLE, 0, 0, PicWebCam.Width, PicWebCam.Height, PicWebCam.hWnd, 0)
    If hCap <> 0 Then
        Call SendMessage(hCap, WM_CAP_DRIVER_CONNECT, 0, 0)
        Call SendMessage(hCap, WM_CAP_SET_PREVIEWRATE, 66, 0&)
        Call SendMessage(hCap, WM_CAP_SET_PREVIEW, CLng(True), 0&)
    End If
End Sub
 
Private Sub cmd4_Click()
cnt = 5: Label1.Caption = (5)
Timer2.Interval = (1000)
Label1.Visible = True
Wait (5)
Dim sFileName As String
    Call SendMessage(hCap, WM_CAP_SET_PREVIEW, CLng(False), 0&)
    sFileName = App.Path & "\photo.jpg"
    Call SendMessage(hCap, WM_CAP_FILE_SAVEDIB, 0&, ByVal CStr(sFileName))
DoFinally:
    Call SendMessage(hCap, WM_CAP_SET_PREVIEW, CLng(True), 0&)
Wait (1)
Picture1.Picture = LoadPicture("C:\11\research_camera\photo.jpg")
Picture1.Visible = True
End Sub
 
Private Sub Cmd3_Click()
Dim temp As Long
temp = SendMessage(hCap, WM_CAP_DRIVER_DISCONNECT, 0&, 0&)
End Sub
 
Private Sub Cmd2_Click()
Dim temp As Long
temp = SendMessage(hCap, WM_CAP_DLG_VIDEOFORMAT, 0&, 0&)
End Sub
Public Sub Wait(seconds)
Timer1.Enabled = True '????????? ???????
Timer1.Interval = 1000 * seconds '????????? ????????? ??? ???????
While Timer1.Interval > 0
DoEvents
Wend
Timer1.Enabled = False ' ?????????? ???????
End Sub
 
 
Private Sub Form_Load()
cmd1.Caption = "Камера"
cmd2.Caption = "Параметры"
cmd3.Caption = "Выключить камеру"
cmd4.Caption = "СДЕЛАТЬ ФОТО"
hCap = capCreateCaptureWindow("Take a Camera Shot", WS_CHILD Or WS_VISIBLE, 0, 0, PicWebCam.Width, PicWebCam.Height, PicWebCam.hWnd, 0)
    If hCap <> 0 Then
        Call SendMessage(hCap, WM_CAP_DRIVER_CONNECT, 0, 0)
        Call SendMessage(hCap, WM_CAP_SET_PREVIEWRATE, 66, 0&)
        Call SendMessage(hCap, WM_CAP_SET_PREVIEW, CLng(True), 0&)
    End If
End Sub
 
Private Sub Timer1_Timer()
Timer1.Interval = 0
End Sub
 
Private Sub Timer2_Timer()
cnt = cnt - (1)
 
If (cnt = (0)) Then
cnt = (5): Label1.Visible = False
End If
 
Label1.Caption = (cnt)
End Sub
Вот мой код. Прогуглил WM_CAP_SET_VIDEOFORMAT нужно задавать перед WM_CAP_DRIVER_CONNECT но как я только не пытался либо VB ругается и не запускается. Либо ничего не происходит. Помогите пожалуйста и ткните лицом куда нужно и как записать, чтобы получить нужный формат.
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
21.05.2014, 19:43
Лучший ответ Сообщение было отмечено The trick как решение

Решение

Вот тебе небольшой пример.
Visual Basic
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
Option Explicit
 
Private Const WS_CHILD As Long = &H40000000
Private Const WS_VISIBLE As Long = &H10000000
Private Const CW_USEDEFAULT = &H80000000
Private Const WM_CAP_START As Long = &H400
Private Const WM_CAP_DRIVER_CONNECT As Long = WM_CAP_START + 10
Private Const WM_CAP_DRIVER_DISCONNECT As Long = WM_CAP_START + 11
Private Const WM_CAP_SET_PREVIEW As Long = WM_CAP_START + 50
Private Const WM_CAP_SET_PREVIEWRATE As Long = WM_CAP_START + 52
Private Const WM_CAP_SET_SCALE = WM_CAP_START + 53
Private Const WM_CAP_SET_VIDEOFORMAT = WM_CAP_START + 45
Private Const WM_CAP_GET_VIDEOFORMAT = WM_CAP_START + 44
 
Private Declare Function capCreateCaptureWindow Lib "avicap32.dll" Alias "capCreateCaptureWindowW" (ByVal wn As Long, ByVal dwStyle As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hwndParent As Long, ByVal nID As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageW" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long
Private Declare Function GetClientRect Lib "user32" (ByVal hwnd As Long, lpRect As Any) As Long
Private Declare Function MoveWindow Lib "user32" (ByVal hwnd As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long
 
Dim hwndCap As Long
 
Private Sub Form_Load()
    hwndCap = capCreateCaptureWindow(StrPtr("Take a Camera Shot"), WS_CHILD Or WS_VISIBLE, 0, 0, CW_USEDEFAULT, CW_USEDEFAULT, Me.hwnd, 0)
    If hwndCap = 0 Then End
    If SendMessage(hwndCap, WM_CAP_DRIVER_CONNECT, 0, ByVal 0&) = False Then End
    SendMessage hwndCap, WM_CAP_SET_PREVIEWRATE, 66, ByVal 0&
    SendMessage hwndCap, WM_CAP_SET_PREVIEW, 1, ByVal 0&
    SendMessage hwndCap, WM_CAP_SET_SCALE, 1, ByVal 0&
    If Not SetSize(1600, 1200) Then
        MsgBox "Не поддерживается"
    End If
End Sub
 
Private Function SetSize(ByVal w As Long, ByVal h As Long) As Boolean
    ' Задаем формат
    Dim buf()   As Long
    Dim c       As Long
    c = SendMessage(hwndCap, WM_CAP_GET_VIDEOFORMAT, 0, ByVal 0&)
    ReDim buf(c \ 4)
    buf(0) = 40         ' BITMAPINFO.biSize
    buf(1) = w          ' BITMAPINFO.biWidth
    buf(2) = h          ' BITMAPINFO.biHeight
    buf(3) = &H180001   ' BITMAPINFO.biPlanes = 1: BITMAPINFO.biBitCount = 24
    buf(4) = 0          ' BITMAPINFO.biCompression = 0 ' Без компрессии
    SetSize = SendMessage(hwndCap, WM_CAP_SET_VIDEOFORMAT, c, buf(0))
End Function
Private Sub Form_Resize()
    Dim RC(3) As Long
    GetClientRect Me.hwnd, RC(0)
    MoveWindow hwndCap, 0, 0, RC(2), RC(3), False
End Sub
 
Private Sub Form_Unload(Cancel As Integer)
    SendMessage hwndCap, WM_CAP_DRIVER_DISCONNECT, 0, ByVal 0&
End Sub
0
0 / 0 / 0
Регистрация: 21.05.2014
Сообщений: 18
21.05.2014, 23:54
The trick, все время выскакиевает таблица "не поддерживается". Ваш метод перенес в свю программу и в picterbot, меняешь его размеры и вебка вроде тоже меняется, но по факту размер фотки снимаемой с вебки идет 640х480. сохраняет он всегда в формате 640х480...

Добавлено через 11 минут
Хотя вебка новая. Логитеч с920. она видюхи в фул шд снимает( а тут фоткает в 640 480
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
22.05.2014, 00:41
Цитата Сообщение от kkdamirkk Посмотреть сообщение
The trick, все время выскакиевает таблица "не поддерживается". Ваш метод перенес в свю программу и в picterbot, меняешь его размеры и вебка вроде тоже меняется, но по факту размер фотки снимаемой с вебки идет 640х480. сохраняет он всегда в формате 640х480...
А немного подумать можно было? Значит твоя вебка не поддерживает размер кадра в 1600x1200.
Размер кадра задается в 29 строке, если он не поддерживается, он так тебе и пишет, пробуй ставить другие 1024х768 и т.д. Сейчас проверил WM_CAP_FILE_SAVEDIB сохраняет в том формате, который задан.
0
0 / 0 / 0
Регистрация: 21.05.2014
Сообщений: 18
22.05.2014, 01:10
The trick, как бы не было грустно, но программа пишет "Не поддерживает" при любом значении заданного размера. Я уже и 640х480 задавал и ещё меньше. И пробовал на стандартной вебке ноута. Попробовал на стационарном компе, включается и черный экран. Причины понять не могу, грешил на ноут, так тут ещё хуже.
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
22.05.2014, 01:12
kkdamirkk, попробуй получить формат через WM_CAP_GET_VIDEOFORMAT, скажи чему у тебя он равен (BITMAPINFOHEADER)
Или попробуй изменить функцию так
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Function SetSize(ByVal w As Long, ByVal h As Long) As Boolean
    ' Çàäàåì ôîðìàò
    Dim buf()   As Long
    Dim c       As Long
    c = SendMessage(hwndCap, WM_CAP_GET_VIDEOFORMAT, 0, ByVal 0&)
    ReDim buf(c \ 4)
    SendMessage hwndCap, WM_CAP_GET_VIDEOFORMAT, c, buf(0)
    buf(0) = 40         ' BITMAPINFO.biSize
    buf(1) = w          ' BITMAPINFO.biWidth
    buf(2) = h          ' BITMAPINFO.biHeight
    buf(4) = 0          ' BITMAPINFO.biCompression = 0 ' Áåç êîìïðåññèè
    buf(5) = 0
    SetSize = SendMessage(hwndCap, WM_CAP_SET_VIDEOFORMAT, c, buf(0))
End Function
0
0 / 0 / 0
Регистрация: 21.05.2014
Сообщений: 18
22.05.2014, 01:51
The trick, изменение функции не дало результато
попробую завтра разобраться с WM_CAP_GET_VIDEOFORMAT. Только не знаю получится или нет. я думал сохранять из picturebox, но тогда я потеряю в качестве. Даже не знаю что делать. На стационаре даже исходник первой программы не работает. Беда какая то

Добавлено через 7 минут
[]http://cs618517.vk.me/v618517406/6a3c/uqQ2lXkw9Es.jpg[/]
Если делать так то формат меняется прекрасно, но список мал!
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
22.05.2014, 07:46
Цитата Сообщение от kkdamirkk Посмотреть сообщение
Если делать так то формат меняется прекрасно, но список мал!
Это может означать, что там реально 0.3 Мп матрица стоит, и всё остальное в камере за 100 баксов, это маркетинговая туфта и чудеса родных драйверов ( считай, просто обман покупателей). За счет хорошей оптики и интерполяции достигается разрешение в 1920 x 1080 и выше! В поддержку моей теории говорит тот факт, что официально размер матрицы ни где не указан в характеристиках. И второе - высокие требования к железу, а именно минимально процессор 2,4 ГГц Intel® Core 2 Duo! Явно, что у честных аппаратов с 1920 x 1080 ( к примеру цифромыльница для Full HD video) нет и технически не может быть такого мощного двухядерного процессора.
0
0 / 0 / 0
Регистрация: 21.05.2014
Сообщений: 18
22.05.2014, 11:28
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Это может означать, что там реально 0.3 Мп матрица стоит, и всё остальное в камере за 100 баксов, это маркетинговая туфта и чудеса родных драйверов ( считай, просто обман покупателей). За счет хорошей оптики и интерполяции достигается разрешение в 1920 x 1080 и выше! В поддержку моей теории говорит тот факт, что официально размер матрицы ни где не указан в характеристиках. И второе - высокие требования к железу, а именно минимально процессор 2,4 ГГц Intel® Core 2 Duo! Явно, что у честных аппаратов с 1920 x 1080 ( к примеру цифромыльница для Full HD video) нет и технически не может быть такого мощного двухядерного процессора.
Спасибо за объяснение и правда разобрался. Вот я опростовалосился, мне то всучили со словами 15 Мп. А технически можно реализовать подключение не веб камеры а например мыльницы или полузеркалки? Написание кода будет сильно отличаться?
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
22.05.2014, 17:31
Цитата Сообщение от kkdamirkk Посмотреть сообщение
А технически можно реализовать подключение не веб камеры а например мыльницы или полузеркалки? Написание кода будет сильно отличаться?
Только если у этих девайсов есть штатный режим веб камеры. Тогда код будет таким же. Во всех других случаях только специальный софт.
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
22.05.2014, 17:38
Pro_grammer, у меня в стандартном диалоге максимум можно ставить 640х480, а с использованием WM_CAP_GET_VIDEOFORMAT можно ставить выше и разрешение получается действительно выше, возможно это в диалоге только стандартные размеры проставлены, лень проверять . kkdamirkk, можно например через TV-тюнер или карту с видеозахватом например, посредством соединения с камерой, если камера штатно не поддерживает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.05.2014, 17:38
Помогаю со студенческими работами здесь

Сделать снимок с веб-камеры, сохранить на диск с сохранением пути в БД
Здравствуйте, требуется написать программу учета рабочего времени сотрудников. Если в целом, то задача сводится к тому, что есть таблица, в...

Подключиться к web-камере и сохранить от неё снимок
Здравствуйте, я начинающий в ассемблере, поэтому прошу понять и простить. Я честно перерыл весь интернет и уже голову сломал, но так и не...

Можно ли сделать на АС3 программку которая с одного нажатия кнопки делала снимок с веб камеры
Если можно, то скиньте пример, ну или ссылку где можно почитать. (очень нужно) за ранее спасибо!!!

Как делать снимок с веб камеры
Подскажите WinAPI функцию, с помощью которой можно сделать снимок с веб камеры. И есть ли WinAPI функция, с помощью которой можно...

Как сделать доступ из интернета к локальному веб серверу
Установлен локальный веб серве через сборку Xampp на Windows7. Что нужно сделать чтобы веб сервер стал доступен через интернет. Роутера...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru