Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.62/63: Рейтинг темы: голосов - 63, средняя оценка - 4.62
5 / 10 / 3
Регистрация: 05.10.2010
Сообщений: 97

Работа с веб камерой: нет изображения в PictureBox

19.07.2011, 03:23. Показов 13245. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Заинтерисовала работа с вебкой посредствам C#. Погуглил, и накидал такой код:

C#
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using System.Drawing.Imaging;
 
namespace webcam
{
    //класс, представляющий веб камеру
    public class WebCamDevice
    {
        //имя устройства
        public string Name { get; set; }
        //версия
        private string Version;
        //номер
        private short Index;
        //Handle
        private int mCapHwnd = 0;
 
        [DllImport("avicap32.dll", EntryPoint = "capCreateCaptureWindowA")]
        //получает handle окна
        public static extern int capCreateCaptureWindowA(
            string lpszWindowName, //Нуль-терминальная строка, содержащая имя окна захвата.
            int dwStyle, //стиль окна
            int X, //координата X
            int Y, //координата Y
            int nWidth, //ширина окна
            int nHeight, //высота окна
            int hwndParent, //handle родительского окна
            int nID //идентификатор окна
            );
 
        [DllImport("avicap32.dll")]
        //получить список установленных устройств видео захвата
        protected static extern bool capGetDriverDescriptionA(
            short wDriverIndex, //индекс драйвера видео захвата. Значение индекса может варьироваться от 0 до 9.
            [MarshalAs(UnmanagedType.VBByRefStr)] ref String lpszName, //указатель на буфер, содержащий соответствующее имя драйвера
            int cbName, //размер (в байтах) буфера lpszName
            [MarshalAs(UnmanagedType.VBByRefStr)] ref String lpszVer, //указатель на буфер, содержащий описание определенного драйвера.
            int cbVer //размер буфера (в байтах), в котором хранится описание драйвера.
            );
 
        [DllImport("user32", EntryPoint = "SendMessage")]
        //отправляет сообщения
        public static extern int SendMessage(
            int hWnd, //Дескриптор окна, оконная процедура которого примет сообщение
            uint Msg, //Определяет сообщение, которое будет отправлено.
            int wParam, //Определяет дополнительную конкретизирующую сообщение информацию.
            int lParam //Определяет дополнительную конкретизирующую сообщение информацию.
            );
 
        [DllImport("user32")]
        protected static extern bool SetWindowPos(
            int hWnd,
            int hWndInsertAfter,
            int X,
            int Y,
            int cx,
            int cy,
            uint uFlags
            );
 
        //Пользовательское сообщение
        private const int WM_CAP = 0x400;
        //соединение с драйвером устройства видеозахвата
        private const int WM_CAP_DRIVER_CONNECT = 0x40a;
        //разрыв связи с драйвером видеозахвата
        private const int WM_CAP_DRIVER_DISCONNECT = 0x40b;
        //копирование кадра в буффер обмена
        private const int WM_CAP_EDIT_COPY = 0x41e;
        //включение/отключение режима предпросмотра
        private const int WM_CAP_SET_PREVIEW = 0x432;
        //включение/отключение режима оверлей
        private const int WM_CAP_SET_OVERLAY = 0x433;
        //Скорость previewrate
        private const int WM_CAP_SET_PREVIEWRATE = 0x434;
        //Включение/отключение масштабирования
        private const int WM_CAP_SET_SCALE = 0x435;
        private const int WS_CHILD = 0x40000000;
        private const int WS_VISIBLE = 0x10000000;
        //Установка callback функции  для preview
        private const int WM_CAP_SET_CALLBACK_FRAME = 0x405;
        //Получение одиночного фрейма с драйвера видеозахвата
        private const int WM_CAP_GET_FRAME = 0x43c;
        //Сохранение кадра с камеры в файл.
        private const int WM_CAP_SAVEDIB = 0x419;
        //максимальное количество попыток соединения
        private const int MAX_TRY_CONNECT = 100;
 
        //запускаем захват видео с данной камеры
        public void Connect(Control picBox)
        {
            //узнаём хэндл
            mCapHwnd = capCreateCaptureWindowA(Index.ToString(), WS_VISIBLE | WS_CHILD, 0, 0, picBox.Width, picBox.Height, picBox.Handle.ToInt32(), 0);
            bool isConnected = false;
            //пробуем запустить устройство
            for (int i = 0; i < MAX_TRY_CONNECT; i++)
                if (SendMessage(mCapHwnd, WM_CAP_DRIVER_CONNECT, Index, 0) > 0)
                {
                    SendMessage(mCapHwnd, WM_CAP_SET_SCALE, -1, 0);
                    SendMessage(mCapHwnd, WM_CAP_SET_PREVIEWRATE, 0x42, 0);
                    SendMessage(mCapHwnd, WM_CAP_SET_PREVIEW, -1, 0);
                    SetWindowPos(mCapHwnd, 1, 0, 0, picBox.Width, picBox.Height, 6);
                    isConnected = true;
                    break;
                }
            if (!isConnected)
                //в случае неудачи сообщаем пользователю
                MessageBox.Show("No device found!");
        }
 
        //взятие скриншота
        public void TakePicture(Form form)
        {
 
            SendMessage(mCapHwnd, WM_CAP_GET_FRAME, 0, 0);
            SendMessage(mCapHwnd, WM_CAP_EDIT_COPY, 0, 0);
            using (SaveFileDialog dlg = new SaveFileDialog())
            {
                dlg.Filter = "JPG Images|*.jpg";
                dlg.OverwritePrompt = true;
                dlg.ValidateNames = true;
                dlg.DefaultExt = "JPG";
                if (dlg.ShowDialog(form) == DialogResult.OK)
                {
                    Clipboard.GetImage().Save(dlg.FileName, ImageFormat.Jpeg);
                }
            }
        }
 
        //отключаем камеру
        public void Disconnect()
        {
            SendMessage(mCapHwnd, WM_CAP_DRIVER_DISCONNECT, mCapHwnd, 0);
        }
 
        //Возвращает массив всех доступных веб-камер
        public static WebCamDevice[] GetAllWebCams()
        {
            //имя
            String dName = "".PadRight(100);
            //версия
            String dVersion = "".PadRight(100);
            //список камер
            List<WebCamDevice> WebCams = new List<WebCamDevice>();
 
            for (short i = 0; i < 10; i++)
            {
                //проверяем камеру с индексом i
                if (capGetDriverDescriptionA(i,
                     ref dName, 100, ref dVersion,
                     100))
                    //если есть добавляем её к списку
                    WebCams.Add(new WebCamDevice(i, dName.Trim(), dVersion.Trim()));
            }
            //преобразуем список в массив
            return WebCams.ToArray();
        }
 
        //конструктор 
        private WebCamDevice(short index, string name, string version)
        {
            Index = index;
            Name = name;
            Version = version;
        }
    }
}
и

C#
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
using System;
using System.Windows.Forms;
 
namespace webcam
{
    public partial class FWebCam : Form
    {
        public FWebCam()
        {
            InitializeComponent();
        }
 
        //массив доступных камер
        private WebCamDevice[] WebCams;
        //их количество
        private int Count; 
 
        private void FWebCam_Load(object sender, EventArgs e)
        {
            //обнаруживаем все камеры
            WebCams = WebCamDevice.GetAllWebCams();
            //узнаём их количество
            Count = WebCams.Length;
            //заполняем названиями камер комбобокс
            foreach(WebCamDevice wcd in WebCams)
                cb_cams.Items.Add(wcd.Name);
            if (cb_cams.Items.Count == 0)
                cb_cams.Text = "Web cams didn`t exist";
            else
                cb_cams.Text = (string) cb_cams.Items[0];
        }
 
        //определяем текущую камеру
        public WebCamDevice getCurrentWebCam()
        {
            for (int i = 0; i < Count; i++)
                if (WebCams[i].Name.Contains(cb_cams.Text))
                    return WebCams[i];
            return null;
        }
 
        //запускаем захват видео с выбранной камеры
        private void bt_start_Click(object sender, EventArgs e)
        {
            getCurrentWebCam().Connect(pb_video);   
        }
 
        //останавливаем захват видео с выбранной камеры
        private void bt_stop_Click(object sender, EventArgs e)
        {
            getCurrentWebCam().Disconnect();
        }
 
        //делаем скриншот с выбранной камеры
        private void bt_screen_Click(object sender, EventArgs e)
        {
            getCurrentWebCam().TakePicture(this);
        }
    }
}
По нажатии кнопки старт, камера врубается, адекватно сохраняет скриншот, НО напрочь отказывается что-либо отображать в PictureBox`e. Тупо красит его в черный цвет... В чем проблема?
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.07.2011, 03:23
Ответы с готовыми решениями:

Работа с веб камерой
Здрасьте. Пробую захват изображения с вебкамеры(Genius iLook 300). нарыл такой код: HWND hWndC; ...

Работа с веб-камерой
Здравствуйте. Нашёл исходник для вывода изображения с веб-камеры на форму: ССЫЛКА , но столкнулся с проблемой: я даже не нашёл в...

Работа с веб камерой
Нашел такой код в инете unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, ...

25
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
19.07.2011, 08:30
Цитата Сообщение от dmz Посмотреть сообщение
В чем проблема?
В этой строке кода getCurrentWebCam().TakePicture(this); , ты зачем-то передаешь в метод класс формы, но при этом я нигде не заметил использование PictureBox. Ты ничего не напутал? Конкретнее сказать не могу, нигде не нашел описания класса WebCamDevice
0
5 / 10 / 3
Регистрация: 05.10.2010
Сообщений: 97
19.07.2011, 09:13  [ТС]
Так дело не в этом, этот метод служит чисто для взятия скриншота и сохранения.

Проблема в том что видео не отображается после выполнения метода connect().

пробовал добавлять в процессе сохранения такие строки
C#
1
2
pb.Image = Clipboard.GetImage();
pb.Invalidate();
Всё равно не помогло. Как была черная картинка так и осталась.
0
389 / 304 / 67
Регистрация: 10.07.2010
Сообщений: 802
19.07.2011, 09:17
ну тогда открывайте из сохраненного файла) он ведь нормально сохраняет?
0
5 / 10 / 3
Регистрация: 05.10.2010
Сообщений: 97
19.07.2011, 15:53  [ТС]
zelen, так мы сразу получаем картинку, а если как предлагаешь ты, то затратится время на сохранение/открытие файла - по-моему это убого немного...

Жду ещё советов...
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
19.07.2011, 16:03
dmz, попробуй вместо
Цитата Сообщение от dmz Посмотреть сообщение
C#
1
pb.Image = Clipboard.GetImage();
использовать
C#
1
pb.Image = (Image)Clipboard.GetImage().Clone();
0
5 / 10 / 3
Регистрация: 05.10.2010
Сообщений: 97
20.07.2011, 19:40  [ТС]
nio, я не совсем нуб, так что такую махинацию пробовал проворачивать - не сканало

Ребят, суть в том, что вот этот код:

C#
1
2
3
4
5
6
7
8
9
if (SendMessage(mCapHwnd, WM_CAP_DRIVER_CONNECT, Index, 0) > 0)
                {
                    SendMessage(mCapHwnd, WM_CAP_SET_SCALE, -1, 0);
                    SendMessage(mCapHwnd, WM_CAP_SET_PREVIEWRATE, 0x42, 0);
                    SendMessage(mCapHwnd, WM_CAP_SET_PREVIEW, -1, 0);
                    SetWindowPos(mCapHwnd, 1, 0, 0, picBox.Width, picBox.Height, 6);
                    isConnected = true;
                    break;
                }
в методе connect() должен обеспечивать отображение картинки автоматически (судя по статьям, которые я юзал при написании кода), без всяких исхищрений с сохранением/открытием одного снимка, или с последней идеей клонирования.

Так что основной вопрос в том, почему юзаемые winapi функции этого не обеспечивают.
Хотя, почему не работает клонирование - тоже весьма интересный вопрос...

Кстати не первый раз на такое натыкаюсь. До этого пробовал заюзать winapi функцию для программного вырубания звука. В итоге на форуме сошлись на том, что на семерке эта ф-ия по каким-то неизвестным причинам не работает, и так тема та и замялась...


Забавный факт, у друга на висте всё работает! Правда там что-то после скринов лагает, но работает...
И как быть?

Добавлено через 23 часа 56 минут
Так что? Есть у кого-нибудь идеи какие?
0
11 / 11 / 3
Регистрация: 17.01.2009
Сообщений: 19
21.07.2011, 00:08
Мне кажется это не подходящий раздел форума для этой темы. Вопрос стоит о использовании API функций, а C# здесь только обертка. Лучше подошел бы раздел Win API, т.к. там больше вероятности, что тему просмотрит соответствующий контингент.

Попробуй заменить код:
C#
1
2
3
4
5
//SendMessage(mCapHwnd, WM_CAP_SET_PREVIEWRATE, 0x42, 0);
//SendMessage(mCapHwnd, WM_CAP_SET_PREVIEW, -1, 0);
//SetWindowPos(mCapHwnd, 1, 0, 0, picBox.Width, picBox.Height, 6);
 
int fOverlay = SendMessage(mCapHwnd, WM_CAP_SET_OVERLAY, -1, 0);
В любом случае интересно узнать, что вернет функция.

Еще необходимо в конце метода Disconnect() добавить DestroyWindow(mCapHwnd) (импортировать из user32). Чтобы при повторном запуске не возникало проблем.

А что это за функция программного вырубания звука?
0
5 / 10 / 3
Регистрация: 05.10.2010
Сообщений: 97
21.07.2011, 00:31  [ТС]
В любом случае интересно узнать, что вернет функция.
вернула 0, а что должна была бы вернуть?
Еще необходимо в конце метода Disconnect() добавить DestroyWindow(mCapHwnd) (импортировать из user32). Чтобы при повторном запуске не возникало проблем.
Спасибо конечно, думаю, если бы всё заработало, то я бы столкнулся с этой проблемой... Но мне бы сделать, чтоб хоть один раз запускалось...
А что это за функция программного вырубания звука?
банально waveOutSetVolume(IntPtr hwo, uint dwVolume), просто выставлять значение в 0 =). Тоже по семёркой не запахала...
0
11 / 11 / 3
Регистрация: 17.01.2009
Сообщений: 19
21.07.2011, 00:44
В VFW есть 2 режима видео PREVIEW и OVERLAY. Раз 0 то этот режим не доступен.
Также можно посмотреть что вернет SendMessage(mCapHwnd, WM_CAP_SET_PREVIEW, -1, 0);
0
5 / 10 / 3
Регистрация: 05.10.2010
Сообщений: 97
21.07.2011, 00:58  [ТС]
Как ни странно вернуло единицу. Но вместо видео всё равно идёт тупо черная картинка...
0
 Аватар для body90
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
21.07.2011, 01:28
Нет времени прочитать всю тему, но что мешает использовать AForge.Net?
0
5 / 10 / 3
Регистрация: 05.10.2010
Сообщений: 97
21.07.2011, 04:33  [ТС]
да хз, видимо религия) на самом деле хотелось поизобретать велосипед. Плюс отсутствие русскоязычных доков)

Добавлено через 42 минуты
Хотя доки фигня, сча посмотрел, там даже пример есть по сабжу... Просто не очень хочется юзать сторонние библиотеки. Но походу придётся, потому что с winapi уж слишком убого всё получается у меня...
0
 Аватар для body90
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
21.07.2011, 12:56
dmz, чтоб получать изображение с камеры, достаточно написать паду десятков строк. Там и доки никакие не нужны. А библиотека уже давно себя хорошо зарекомендовала.

Добавлено через 3 минуты
Пример:
C#
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using AForge.Video;
using AForge.Video.DirectShow;
 
namespace CameraAForgeNet
{
    public partial class Form1 : Form
    {
        private FilterInfoCollection videoDevices = null;
        private VideoCaptureDevice videoSource = null;
        Bitmap bmp = null;
        string s = "";
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
            videoSource = new VideoCaptureDevice(videoDevices[0].MonikerString);
            videoSource.NewFrame += new NewFrameEventHandler(videoSource_NewFrame);
            videoSource.DesiredFrameSize = new Size(1024, 768);
            videoSource.Start();
        }
 
        void videoSource_NewFrame(object sender, NewFrameEventArgs eventArgs)
        {
            lock (s)
            { this.pictureBoxFrame.Image = (Image)eventArgs.Frame.Clone(); }
        }
 
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            videoSource.SignalToStop();
        }
 
        private void buttonStop_Click(object sender, EventArgs e)
        {
            videoSource.SignalToStop();
        }
 
        private void buttonSave_Click(object sender, EventArgs e)
        {
            this.pictureBoxFrame.Image.Save("123");
        }
    }
}
Вот проект
Вложения
Тип файла: rar CameraAForgeNet.rar (24.4 Кб, 231 просмотров)
2
0 / 0 / 1
Регистрация: 19.11.2011
Сообщений: 6
19.11.2011, 15:45
Получить изображение и сохранить скриншот легко, а записать видео в файл?
Кто знает подскажите...
0
 Аватар для body90
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
19.11.2011, 19:42
http://www.aforgenet.com/frame... 544a2d.htm
0
0 / 0 / 1
Регистрация: 19.11.2011
Сообщений: 6
19.11.2011, 21:17
Это просто пример, с картинкои изменяемой в цикле. А как снять эту картинку с камеры и впихнуть в авифайл с тем же фреймрейтом , с каким их выдает камера. Я пробовал так
C#
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
        private void videoSourcePlayer1_NewFrame(object sender, ref Bitmap image)
        {
            img = new Bitmap(image);
            
        }
        private void save_mov_button_Click(object sender, EventArgs e)
        {
            SaveFileDialog sfd = new SaveFileDialog();
            sfd.Filter = "*.avi|*.avi";
            if (sfd.ShowDialog() == DialogResult.OK)
            {
                
                try
                {
                        writer.Open(sfd.FileName, 320, 240);
                        rec = true;
                        
                       
 
                }
                catch 
                {
                    MessageBox.Show("error");
                }
                
            }
        }
 
        private void wb_button_Click(object sender, EventArgs e)
        {
            rec = false;
            writer.Close();
        }
 
        private void timer1_Tick(object sender, EventArgs e)
        {
            if (rec)
            {
                writer.AddFrame(img);
            }
        }
где тиками таймера пытался отрегулировать фреймрейт. Получалось не то к чему стремился...
0
 Аватар для body90
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
19.11.2011, 23:30
А не легче в событии videoSourcePlayer1_NewFrame это и делать?
0
0 / 0 / 1
Регистрация: 19.11.2011
Сообщений: 6
20.11.2011, 12:44
В том-то и дело, что вебкамера штампует кадры со своей частотой. С этой же частотой авиврайтер будет приклеевать эти кадры к файлу. А при проигрывании полученого файла, плеер воспроизводит его с тем фреймрейтом, который был прописан в кодеке при упаковке авиврайтером. Этот фреймрейт можно указать при объявлении врайтера, но его так же придется подбирать под камеру. В итоге при проигрывании видео воспроизводится или быстрее или медленнее оригинала :-(
0
 Аватар для body90
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
20.11.2011, 14:34
А если у камеры установить нужную скорость кадров? Там есть такое свойство.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.11.2011, 14:34
Помогаю со студенческими работами здесь

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

Работа с веб-камерой
Я получаю изображение с веб-камеры с определенным интервалом, при этом камера оказывается недоступна др. приложениям. Как это решить?...

Работа с веб камерой
Есть код работы с камерой: procedure TForm1.Button1Click(Sender: TObject); begin hWndC := capCreateCaptureWindowA('My Own Capture...

Работа с веб камерой
Здравствуйте у меня возник вопрос как использовать веб камеру во флешь я не давно начал изучать actionScript 3.0 и не могу понять как её...

Работа с веб камерой
Всем привет. Кто-нибудь подскажите, как работать с вебкой через vb?


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru