Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.75/63: Рейтинг темы: голосов - 63, средняя оценка - 4.75
269 / 14 / 0
Регистрация: 26.02.2014
Сообщений: 142
1

Сделать фото с веб-камеры и сохранить на диск

02.04.2014, 11:29. Показов 12991. Ответов 39
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день уважаемые форумчане. Пища для размышления: кто-нибудь видел или знает как можно реализовать на VBA, что бы при определенных действиях веб-камера захватывала изображение и сохраняла на компьютер? По идее драйвер стандартный для всех вебок и в теории (как я думаю) можно как то его вызвать с VBA. В инэте инфа вроде бы есть, буду тоже копаться, но может кто-нибудь знает.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.04.2014, 11:29
Ответы с готовыми решениями:

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

Сделать фото вебкой, сохранить на диск, скачать программу и открыть в ней фото с правами админа
1. Посетитель заходит на сайт, на сайте гугл карта. 2. Нажимает кнопку. 3. Тут же, без всяких...

Как сделать фото с встроенной веб-камеры?
Здравствуйте! Недавно появилась задача сделать программу (на ассемблере), которая бы подключалась...

Подскажите, как получить фото с камеры и сохранить её?
Здравствуйте! Пытаюсь получить фото с камеры телефона и сохранить её на карту памяти. Изучив пару...

39
2785 / 717 / 106
Регистрация: 04.02.2011
Сообщений: 1,443
02.04.2014, 11:56 2
Кое-что нашел по теме, на VB6 (можно попробовать адаптировать к VBA)
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
'This program check whether webcam is available or not
' if available then capture and displays in picture box
 
'Created by Dixanta Bahadur Shrestha
'Created Date: 12-March-2006
 
'Programmer does not garuntees if  not functions well
 
Global Const ws_child As Long = &H40000000
Global Const ws_visible As Long = &H10000000
 
Global Const WM_USER = 1024
Global Const wm_cap_driver_connect = WM_USER + 10
Global Const wm_cap_set_preview = WM_USER + 50
Global Const WM_CAP_SET_PREVIEWRATE = WM_USER + 52
Global Const WM_CAP_DRIVER_DISCONNECT As Long = WM_USER + 11
Global Const WM_CAP_DLG_VIDEOFORMAT As Long = WM_USER + 41
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (
    ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, 
    ByVal lParam As Long) As Long
Declare Function capCreateCaptureWindow Lib "avicap32.dll" Alias 
    "capCreateCaptureWindowA" (
    ByVal a As String, ByVal b As Long, ByVal c As Integer, 
    ByVal d As Integer, ByVal e As Integer, ByVal f As Integer, 
    ByVal g As Long, ByVal h As Integer) As Long
 
 
 
 
Dim hwdc As Long
Dim startcap As Boolean
Private Sub cmdCapture_Click()
Dim temp As Long
 
  hwdc = capCreateCaptureWindow("Dixanta Vision System", 
      ws_child Or ws_visible, 0, 0, 320, 240, Picture1.hWnd, 0)
  If (hwdc <> 0) Then
    temp = SendMessage(hwdc, wm_cap_driver_connect, 0, 0)
    temp = SendMessage(hwdc, wm_cap_set_preview, 1, 0)
    temp = SendMessage(hwdc, WM_CAP_SET_PREVIEWRATE, 30, 0)
    startcap = True
    Else
    MsgBox ("No Webcam found")
  End If
End Sub
 
Private Sub cmdClose_Click()
Dim temp As Long
If startcap = True Then
temp = SendMessage(hwdc, WM_CAP_DRIVER_DISCONNECT, 0&, 0&)
startcap = False
End If
End Sub
 
Private Sub cmdVideoFormat_Click()
 Dim temp As Long
 If startcap = True Then
  temp = SendMessage(hwdc, WM_CAP_DLG_VIDEOFORMAT, 0&, 0&)
End If
End Sub
2
269 / 14 / 0
Регистрация: 26.02.2014
Сообщений: 142
02.04.2014, 16:42  [ТС] 3
Я тоже кое-что нашел, сижу разбираюсь, по идее должен быть работоспособным, только вот казус - вебки под рукой нет) завтра должна быть.

Код:
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
Private Declare Function SendMessageAsLong Lib "user32" Alias "SendMessageA" _
    (ByVal hWnd As Long, _
    ByVal wMsg As Long, _
    ByVal wParam As Long, _
    ByVal lParam As Long) As Long
 
    Private Declare Function SendMessageAsString Lib "user32" Alias "SendMessageA" _
    (ByVal hWnd As Long, _
    ByVal wMsg As Long, _
    ByVal wParam As Long, _
    ByVal lParam As String) As Long
 
    Private Declare Function capCreateCaptureWindow Lib "avicap32.dll" Alias "capCreateCaptureWindowA" _
    (ByVal lpszWindowName As String, _
    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 DestroyWindow Lib "user32" (ByVal hWnd As Long) As Boolean
 
    Public TCap As Boolean
    Private mCapHwnd As Long
 
    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_FILE_SAVEDIB As Long = WM_CAP_START + 25
    Private Const WM_CAP_GRAB_FRAME As Long = WM_CAP_START + 60
    Private Const WM_CAP_DLG_VIDEOFORMAT = WM_CAP_START + 41
    Private Const WM_CAP_DLG_VIDEOSOURCE = WM_CAP_START + 42
 
    'WM_CAP_DRIVER_CONNECT     '- подключает драйвер видеоустройства.
    'WM_CAP_DRIVER_DISCONNECT  '- отключает драйвер видеоустройства.
    'WM_CAP_GRAB_FRAME         '- захватывает один кадр из видеопотока.
    'WM_CAP_FILE_SAVEDIB       '- сохраняет захваченный кадр в файл формата BMP.
    'WM_CAP_DLG_VIDEOFORMAT    '- открывает диалоговое окно формата видеозахвата.
    'WM_CAP_DLG_VIDEOSOURCE    '- открывает диалоговое окно настроек видеоустройства.
 
    '=================================================================================
 
    Private Sub UserForm_Initialize()
        TCap = False
        mCapHwnd = capCreateCaptureWindow("VideoCapture", 0, 0, 0, 320, 240, Application.hWnd, 0)
    End Sub
    'Стандартная процедура инициализации формы.
    'То есть форма загружается в память, но еще не выводится на экран.
    'Убеждаемся, что драйверы видеоустройств отключены, создаем в главном окне Excel
    'невидимое окно видеозахвата с названиями VideoCapture
    'размером 320х240 пикселей.
    'Функция Application.hWnd возвращает идентификатор главного (родительского) окна Excel.
    'Присваиваем переменной mCapHwnd значения идентификаторов окна видеозахвата.
 
    'Кн. ФОРМАТ
    'Если драйверы видеоустройств подключены, показывают диалоговое окно настройки
    'формата видеозахвата, если отключены, ничего не происходит.
    Private Sub Format_Bttn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Format_Bttn.Click
        SendMessageAsLong(mCapWnd, WM_CAP_DLG_VIDEOFORMAT, 0, 0)
    End Sub
 
    'Кн. КАМЕРА
    'Если драйверы видеоустройств подключены, показывают диалоговое окно
    'настройки параметров видеоустройства, если отключены, ничего не происходит.
    Private Sub Kamera_Bttn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Kamera_Bttn.Click
        SendMessageAsLong(mCapWnd, WM_CAP_DLG_VIDEOSOURCE, 0, 0)
    End Sub
 
    'Кн. СТАРТ
    Private Sub Start_Bttn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Start_Bttn.Click
        TCap = True
        SendMessageAsLong(mCapHwnd, WM_CAP_DRIVER_CONNECT, 0, 0)
        Do While TCap = True
            DoEvents()
            SendMessageAsLong(mCapHwnd, WM_CAP_GRAB_FRAME, 0, 0)
            SendMessageAsString(mCapHwnd, WM_CAP_FILE_SAVEDIB, 0, "D:\VIDEO.BMP")
            Monitor_PB.ImageLocation = "D:\VIDEO.BMP"
        Loop
    End Sub
 
    'Кн. СТОП
    'Процедура обработки событий нажатия кнопок Стоп.
    'Устанавливаем значения переменной TCap в False (драйвер отключен),
    'после чего посылаем окну видеозахвата системное сообщение с командой отключить драйвер.
    Private Sub Stop_Bttn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Stop_Bttn.Click
        TCap = False
        SendMessageAsLong(mCapHwnd, WM_CAP_DRIVER_DISCONNECT, 0, 0)
    End Sub
Добавлено через 4 часа 14 минут
Уточнение, желательно даже не сохранять картинку с веб-камеры, а вставлять в ячейку в imagebox например, типо клацаешь на кнопку, идет захват кадра и вставляет его в ImageBox.

Добавлено через 25 минут
Объясните пожалуйста, код который выложил некий пользователь, по идее работоспособен в VBA (как он сам говорит и тестировал), но при копировании показывает синтаксические ошибки кода, в чем проблема? Конкретно в этих местах:

Visual Basic
1
2
Private Sub Format_Bttn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Format_Bttn.Click
        SendMessageAsLong(mCapWnd, WM_CAP_DLG_VIDEOFORMAT, 0, 0)
Visual Basic
1
2
Private Sub Kamera_Bttn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Kamera_Bttn.Click
        SendMessageAsLong(mCapWnd, WM_CAP_DLG_VIDEOSOURCE, 0, 0)
Visual Basic
1
Private Sub Start_Bttn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Start_Bttn.Click
Visual Basic
1
SendMessageAsLong(mCapHwnd, WM_CAP_DRIVER_CONNECT, 0, 0)
Visual Basic
1
2
3
DoEvents()
            SendMessageAsLong(mCapHwnd, WM_CAP_GRAB_FRAME, 0, 0)
            SendMessageAsString(mCapHwnd, WM_CAP_FILE_SAVEDIB, 0, "D:\VIDEO.BMP")
Visual Basic
1
2
3
 Private Sub Stop_Bttn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Stop_Bttn.Click
        TCap = False
        SendMessageAsLong(mCapHwnd, WM_CAP_DRIVER_DISCONNECT, 0, 0)
0
1261 / 147 / 32
Регистрация: 11.02.2011
Сообщений: 418
02.04.2014, 17:26 4
Лучший ответ Сообщение было отмечено Derjzemit как решение

Решение

Вот такая штука есть. [404] Но у меня нихт арбайтен. Окно выбора камеры показывается, а захват не идёт (встроеная бучная камера, может с юсб дело другое)
Вложения
Тип файла: xls Video.xls (59.0 Кб, 201 просмотров)
3
2785 / 717 / 106
Регистрация: 04.02.2011
Сообщений: 1,443
02.04.2014, 17:49 5
Цитата Сообщение от Derjzemit Посмотреть сообщение
но при копировании показывает синтаксические ошибки кода, в чем проблема?
Это код под .NET, то есть на языке очень сильно отличающемся от VBA. Ближе всего к VBA языки VB6 и VBScript. Пример, скопированный мной на стороннем сайте к VBA надо адаптировать в части hwnd - контролы MSForms не имеют свойства hwnd и его надо получать поиском при помощи 1-2 вызовов API функций, кажется FindWindow/FindWindowEx - найти оконный дескриптор UserForm, а внутри него - дочерний PictureBox.
1
3218 / 967 / 223
Регистрация: 29.05.2010
Сообщений: 2,087
02.04.2014, 17:54 6
Цитата Сообщение от korvindeson Посмотреть сообщение
Вот такая штука есть
Проверил, один раз включилась и все, дальше загружает только файл BMP.
0
1261 / 147 / 32
Регистрация: 11.02.2011
Сообщений: 418
02.04.2014, 17:57 7
Цитата Сообщение от toiai Посмотреть сообщение
Проверил, один раз включилась и все, дальше загружает только файл BMP.
Не разбирался как следует. Просто слепил файлик по инструкции. Дома погоняю, интересно.
Какая у вас конфигурация виндовс/оффис?
0
3218 / 967 / 223
Регистрация: 29.05.2010
Сообщений: 2,087
02.04.2014, 18:06 8
Цитата Сообщение от korvindeson Посмотреть сообщение
Какая у вас конфигурация виндовс/оффис
Windows 7, Office 2010
0
2785 / 717 / 106
Регистрация: 04.02.2011
Сообщений: 1,443
02.04.2014, 18:12 9
Цитата Сообщение от toiai Посмотреть сообщение
Windows 7, Office 2010
Имелось наверное ввиду 32 или 64 бит windows и office - для API, работающей с драйвером это критично. Мы пишем платформо-зависимый скрипт на VBA )))
1
3218 / 967 / 223
Регистрация: 29.05.2010
Сообщений: 2,087
02.04.2014, 18:15 10
Цитата Сообщение от toiai Посмотреть сообщение
Windows 7
64-битная
0
2785 / 717 / 106
Регистрация: 04.02.2011
Сообщений: 1,443
02.04.2014, 18:17 11
А Excel 2010(Файл-Справка)?
1
3218 / 967 / 223
Регистрация: 29.05.2010
Сообщений: 2,087
02.04.2014, 18:24 12
Цитата Сообщение от mc-black Посмотреть сообщение
А Excel 2010(Файл-Справка)?
Вот скрин
Миниатюры
Сделать фото с веб-камеры и сохранить на диск  
0
2785 / 717 / 106
Регистрация: 04.02.2011
Сообщений: 1,443
02.04.2014, 21:58 13
Excel 2010 32-битная версия (работает с Win32 API внутри виртуальной машины). У меня сейчас аналогичная платформа, но без камеры. С камерой есть два ноута с WinXP_32+Excel2010_32 и Win8.1_64+Excel2010_не помню.. Попробую потестить пример korvindeson, скорее всего на системе 32+32 пойдет без ошибок.

Добавлено через 3 часа 23 минуты
Win8.1_64+Excel2010_32 камера определяется, захват изображения в файл не производится.
0
1261 / 147 / 32
Регистрация: 11.02.2011
Сообщений: 418
03.04.2014, 00:01 14
Win 8.1 64 бита + офис 2013 32 бита прекрасно работает с внешней камерой. Та же конфигурация со встроеной в бук камерой не работает. Видимо avicap32.dll заточен под юсб дрова
0
2785 / 717 / 106
Регистрация: 04.02.2011
Сообщений: 1,443
03.04.2014, 08:06 15
Может я ошибаюсь (это предположение), думаю к камерам идут родные 32- и 64- разрядные драйвера, чаще всего установщик ставит только 1 из них, в зависимости от разрядности (и версии) ОС. 32-разрядный Excel выполняется в виртуальной машине ОС, обеспечивающей совместимость API, но не снабженной 32-bit версией драйвера от производителя камеры, API видит устройство по названию, но не имеет совместимый 32-bit драйвер производителя, то есть нет доступа к функциям устройства. Пока не попробовал запустить на WinXP_32, думаю там работа гарантирована, несмотря на то что камера не USB.
1
269 / 14 / 0
Регистрация: 26.02.2014
Сообщений: 142
03.04.2014, 10:13  [ТС] 16
В инэте я нашел действительно про этот FindWindow, я правильно понимаю, что для адаптации нужно переделать вот так? Просто вебки нет на руках, сложно понять что делаю не правильно.

Код:

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
Private Const ws_child As Long = &H40000000
Private Const ws_visible As Long = &H10000000
 
Private Const WM_USER = 1024
Private Const wm_cap_driver_connect = WM_USER + 10
Private Const wm_cap_set_preview = WM_USER + 50
Private Const WM_CAP_SET_PREVIEWRATE = WM_USER + 52
Private Const WM_CAP_DRIVER_DISCONNECT As Long = WM_USER + 11
Private Const WM_CAP_DLG_VIDEOFORMAT As Long = WM_USER + 41
 
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
 
Private Declare Function capCreateCaptureWindow Lib "avicap32.dll" Alias "capCreateCaptureWindowA" (ByVal a As String, ByVal b As Long, ByVal c As Integer, ByVal d As Integer, ByVal e As Integer, ByVal f As Integer, ByVal g As Long, ByVal h As Integer) As Long
 
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
 
 
Dim hwdc As Long
Dim startcap As Boolean
Private Sub cmdCapture_Click()
Dim temp As Long
  
  hWnd = FindWindow("ThunderDFrame", Me.Caption)
  
  hwdc = capCreateCaptureWindow("Dixanta Vision System", ws_child Or ws_visible, 0, 0, 320, 240, Picture1.hWnd, 0)
  If (hwdc <> 0) Then
    temp = SendMessage(hwdc, wm_cap_driver_connect, 0, 0)
    temp = SendMessage(hwdc, wm_cap_set_preview, 1, 0)
    temp = SendMessage(hwdc, WM_CAP_SET_PREVIEWRATE, 30, 0)
    startcap = True
    Else
    MsgBox ("No Webcam found")
  End If
End Sub
0
1261 / 147 / 32
Регистрация: 11.02.2011
Сообщений: 418
03.04.2014, 11:47 17
Цитата Сообщение от mc-black Посмотреть сообщение
Может я ошибаюсь (это предположение), думаю к камерам идут родные 32- и 64- разрядные драйвера, чаще всего установщик ставит только 1 из них, в зависимости от разрядности (и версии) ОС. 32-разрядный Excel выполняется в виртуальной машине ОС, обеспечивающей совместимость API, но не снабженной 32-bit версией драйвера от производителя камеры, API видит устройство по названию, но не имеет совместимый 32-bit драйвер производителя, то есть нет доступа к функциям устройства. Пока не попробовал запустить на WinXP_32, думаю там работа гарантирована, несмотря на то что камера не USB.
Вы полностью правы. Поставил на бук 32 битные дрова на камеру. Всё заработало. Конфигурация win 8.1 64 бит, оффис 2013 32 бит, дрова камеры 32 бит. Работает без доп колдунств. Только видео дёрганое, но учитывая количество костылей всё идеально.

Добавлено через 5 минут
Кстати, есть мысль что видео дёргается из-за того что excel не успевает картинки менять на форме. Возможно если писать кадры в видеофайл и пускать его с небольшой задержкой, то всё будет плавнее
0
269 / 14 / 0
Регистрация: 26.02.2014
Сообщений: 142
03.04.2014, 12:29  [ТС] 18
Сделал в общем криво) нашел Exe-шник, который захватывает изображение с вебки и сохраняет с именем Image.bmp, shell-ом вызываю его с макроса и там же загружаю это изображение в Picture Box. Но актуально конечно сделать все внутренними ресурсами, вопрос о листинге выше остается актуальным для меня.
0
2785 / 717 / 106
Регистрация: 04.02.2011
Сообщений: 1,443
03.04.2014, 23:15 19
Лучший ответ Сообщение было отмечено Derjzemit как решение

Решение

Цитата Сообщение от Derjzemit Посмотреть сообщение
я правильно понимаю, что для адаптации нужно переделать вот так
Направление мысли правильное, реализация - неправильная. Полученный hWnd твоей UserForm надо где-то использовать - либо напрямую вместо Picture1.hWnd, либо при помощи него найти оконный дескриптор (hwnd) дочернего окна - оконного контрола, заменяющего PictureBox (в VBA без отдельно установленных контролов нет контрола PictureBox). Теоретически пойдет и само окно UserForm, но тут опять надо учесть, что окно должно обладать свойством перерисовки (в VB6 кажется было свойство .AutoRedrawMode), в VBA форму можно заставить иметь автопрорисовку при помощи GetWindowStyle+SetWindowStyle, без этого картинка не выйдет. Третье, что не так с кодом - "Dixanta Vision System" - это похоже обращение к имени устройства вебкамеры, сомневаюсь, что у тебя такая же, как у автора поста.

hwnd окна userform легко подставить в код, имя вебкамеры можно подсмотреть в диспетчере устройств или другой программе, а кусок кода, делающий форму готовой к перерисовке можно найти на форуме из примеров, в которых программно средствами API рисуют на форме - там это обязательно присутствует.

Добавлено через 2 минуты
Цитата Сообщение от Derjzemit Посмотреть сообщение
Exe-шник, который захватывает изображение с вебки и сохраняет
Пусть костыль, но работает =) Хорошо хоть так до тех пор, пока не придумать как иначе.

Добавлено через 5 минут
Цитата Сообщение от korvindeson Посмотреть сообщение
Поставил на бук 32 битные дрова на камеру.
Я сижу дома с WebCam, но без возможности что-либо потестить, ибо 8.1х64+2010х32, 32-разрядных драйверов камеры для моей модели ноута производитель не предлагает, 64bit_only. Попробую выйти на x86 драйвер по модели камеры...
1
269 / 14 / 0
Регистрация: 26.02.2014
Сообщений: 142
04.04.2014, 10:02  [ТС] 20
Наконец взял вебку, потестил)) Решение с екзешником работает нормально и кстати та программулина video.xls тоже работает)) вернее как, включает видео на старт кадровое, а при стопе делает захват изображения, можно тоже как-то подобрать и сделать внутренне.

Тестил на Win 7 x64, Office 2010 x32.
0
04.04.2014, 10:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.04.2014, 10:02
Помогаю со студенческими работами здесь

Как получить фото с веб-камеры Logitech
Здравствуйте ! Можно ли как-нибудь в программе на C# (Visual Studio 2010, .Net 4) получить фото...

Указать путь сохранения фото с веб камеры
char filename; void SaveImage() { // сохраняем кадр в файл sprintf(filename, &quot;Image%d.bmp&quot;,...

Как сохранить фото с камеры напрямую во внутреннюю директорию приложения?
Стартую Intent камеры, добавляю Extra с Uri файла, куда надо сохранить снимок: Intent intent =...

Снимок с веб-камеры сохранить в файл
Всем привет! Полазив по форуму, к сожалению, нормального решения так и не нашел, везде либо...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru