Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.64/25: Рейтинг темы: голосов - 25, средняя оценка - 4.64
3 / 3 / 0
Регистрация: 23.07.2011
Сообщений: 50

Запрос данных с экрана максимально быстрый

23.07.2011, 19:01. Показов 4916. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Товарищи приветствую Вас! Помогите с проблемой
Дело в том что, я раньше запрашивал пиксель на экране через:
int LOADRGB(int Horz, int Vert)
{
int x;
void *hdc=CreateDCA("DISPLAY",NULL,NULL,NULL) ;
x = GetPixel(hdc, Horz, Vert);
GLRED = GetRValue(x);
GLGREEN = GetGValue(x);
GLBLUE = GetBValue(x);
DeleteDC(hdc);
}

В Windows XP это ткод работает в разы быстрее чем в Win 7 с чего ? понять мой мозг отказывается, но в семерке он тупит по черному ...

Может быть кто подскажет альтернативный способ запроса данных о пикселе на экране, более быстрый, так как я работаю над созданием простейших ИИ и мне скорость восприятия данных в единицу времени чрезвычайно важна !!

Спасибо за помощь! и Видео для примера ...



Добавлено через 11 минут


Другой вариант использования алгоритма
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.07.2011, 19:01
Ответы с готовыми решениями:

Максимально легкий запрос для проверки наличия данных
Стоит задача написать процедуру, с помощью которой можно было бы определить наличие записей по одному параметру. Сами записи не...

Быстрый поиск максимально похожего слова
Добрый день! Есть словарь строк List<string>, отсортированный по алфавиту. Есть некое слово, которого нет в словаре. Необходимо...

Максимально быстрый вариант вычисления sinf/cosf
Вопрос, возможно, не в ту ветку форума, но решение предполагается на с++, поэтому просьба расшифровать задание. Текст такой: Напишите...

23
 Аватар для xAtom
935 / 760 / 299
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
24.07.2011, 06:32
C++
1
x = GetPixel(hdc, Horz, Vert);
Такой способ очень долгий так как для получения пиксела с контекста устройства, надо преключиться в режим ядра считать драйверу экрана с кадрового буфера указанный пиксел и вернуть пользовательскому приложению, постоянные переключения в режим ядра дорогая операция с точки зрения процессора, лучше получить разом линейнный-массив байтов и с ним работать. вот начиркал класс, который будет копировать экран и ты будешь получать к нему по координатам X-Y как в обычной GDI функции GetPixel/SetPixel/SetPixelV
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
class xBitmap {
private:
   HBITMAP   bitmap;
   BYTE*      buffer;
   HDC         dibdc;
   BITMAP     info;
public:
 
    xBitmap (void) {
       bitmap = NULL;
       buffer = NULL;
       dibdc  = NULL;
   }
 
   ~ xBitmap() {  this->clean(); }
 
   bool  capture(void) {
      tagRECT  rect;
      HWND     wnd = GetDesktopWindow();
      HDC      dc     = GetWindowDC(wnd);
      GetWindowRect(wnd, &rect);
 
      bitmap = CreateBitmap(rect.right, rect.bottom, 1, 32, NULL);
      if(bitmap == NULL) {
          ReleaseDC(wnd, dc);
          return false;
      }
      GetObject(bitmap, sizeof(BITMAP), &info);
      dibdc    = CreateCompatibleDC(dc);
      SelectObject(dibdc, bitmap);
      BitBlt(dibdc, 0, 0, info.bmWidth, info.bmHeight, dc, 0, 0, SRCCOPY);
 
      long size = info.bmWidth * info.bmHeight * (info.bmBitsPixel / 8);
      buffer     = new BYTE[ size ];
      GetBitmapBits(bitmap, size, buffer);
      ReleaseDC(wnd, dc);
      return true;
   }
 
   long getWidth(void) const  { return info.bmWidth;  }
 
   long getHeight(void) const { return info.bmHeight; }
 
   COLORREF  getPixel(long x, long y) {
        int  pixel = info.bmBitsPixel / 8;
        return *(COLORREF*) ((buffer) + (y * info.bmWidth + x) * pixel);
   }
 
   void  setPixel(long x, long y, COLORREF color) {
         int  pixel = info.bmBitsPixel / 8;
        *(COLORREF*) ((buffer) + (y * info.bmWidth + x) * pixel) = color;
   }
 
   void  updateBitmap(void) {
        long size = info.bmWidth * info.bmHeight * (info.bmBitsPixel / 8);
        SetBitmapBits(bitmap, size, buffer);
   }
 
   HDC getDC(void) {  return dibdc;   }
 
   void clean(void) {
      if(bitmap)
         DeleteObject(bitmap);
      if(dibdc)
         DeleteDC(dibdc);
         if(buffer)
                delete[] buffer;
         buffer = NULL;
   }
 
};
 
 
// тестируем
 
 xBitmap  section;
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    if(! section.capture()) {
            ShowMessage("Не могу создать битмап !!!");
        return;
    }
 
    for(long y = 0; y < section.getHeight(); y++) {
       for(long x = 0; x < section.getWidth(); x++) {
                COLORREF color = section.getPixel(x, y);
                color = RGB(color, color, 127);
                section.setPixel(x, y, color);
       }
    }
    section.updateBitmap();
 
 
    BitBlt(Canvas->Handle, 0, 0, section.getWidth(), section.getHeight(), 
            section.getDC(), 0, 0, SRCCOPY);
    ReleaseDC(Handle, Canvas->Handle);
 
}
 
 
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) {
    section.clean();
}
Используй.
1
3 / 3 / 0
Регистрация: 23.07.2011
Сообщений: 50
24.07.2011, 18:38  [ТС]
Большой спасибо ... я пишу только в консольке, мне чужды -> но код перекурю

Добавлено через 11 часов 37 минут
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
COLORREF MyGetPixel(HWND hGame,int x,int y)  
{
        COLORREF pixel;
        BITMAPINFO BMI={0};
        HDC hGDC=GetDC(hGame);
        int Bitp=GetDeviceCaps(hGDC, BITSPIXEL);
        HDC hTmpDC=CreateCompatibleDC(hGDC);
        HBITMAP hTmpBmp=CreateCompatibleBitmap(hGDC,1,1);
        SelectObject(hTmpDC,hTmpBmp);
        BitBlt(hTmpDC,0,0,1,1,hGDC,x,y,SRCCOPY);
        BMI.bmiHeader.biSize = sizeof(BMI.bmiHeader);
        BMI.bmiHeader.biWidth = 1;
        BMI.bmiHeader.biHeight = 1;
        BMI.bmiHeader.biPlanes = 1;
        BMI.bmiHeader.biBitCount = Bitp;
        BMI.bmiHeader.biCompression = BI_RGB;
        BMI.bmiHeader.biSizeImage=Bitp/8;
        BMI.bmiHeader.biClrUsed = 0;
        BMI.bmiHeader.biClrImportant = 0;
        int TMP=GetDIBits(hTmpDC,hTmpBmp,0,1,&pixel,&BMI, DIB_RGB_COLORS);
        pixel&=0xFFFFFF;
        ReleaseDC(hGame,hGDC);
        return pixel;
}
 
int LOADRGB(int Horz, int Vert)
{
    int x;
    x = MyGetPixel("DISPLAY", Horz, Vert);
    cout << "x = " << x << endl;
    GLRED = GetRValue(x);
    GLGREEN = GetGValue(x);
    GLBLUE = GetBValue(x);
}
Может я что то делаю не так, но вроде бы все работает и компилируется только при вызове LOADRGB н вход поступают рандомные координаты, но х всегда выдает одни и теже значения, причем не 0.0.0 а что то типа 40 180 20 ... не понимаю что не так ?
0
Модератор
Эксперт по электронике
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,856
24.07.2011, 18:50
Цитата Сообщение от PaxMaHuHoB Посмотреть сообщение
x = GetPixel(hdc, Horz, Vert);
Цитата Сообщение от PaxMaHuHoB Посмотреть сообщение
int x;
GetPixel возвращает значения в COLORREF а не в int
Это DWORD (32разряда) а int может быть и 64 ( в семерке)
тем более что у тебя знаковый нужен unsigned int
0
3 / 3 / 0
Регистрация: 23.07.2011
Сообщений: 50
24.07.2011, 19:25  [ТС]
По тому что я сверху написал там все работает на ура и с Интом так как я не использую Колорреф, а теперь меня ребята учат использовать через колорреф и битмап и тут толи "DISPLAY" не в том месте стоит вобщем все работает но значения одни и теже идут для икса но координаты разные ...

Добавлено через 14 минут
C++
1
2
3
4
5
6
7
8
9
10
int LOADRGB(int Horz, int Vert)
{
    COLORREF x;
    x = MyGetPixel(HWND_DESKTOP, Horz, Vert);
    cout << "x = " << x << endl;
    cout << "HORZ = " << Horz << "   VERT = " << Vert << endl;
    GLRED = GetRValue(x);
    GLGREEN = GetGValue(x);
    GLBLUE = GetBValue(x);
}

Все вот так вот заработало !!! ВСЕМ СПАСИБО ))

Добавлено через 4 минуты
C++
1
2
3
4
5
6
7
8
9
10
int LOADRGB(int Horz, int Vert)
{
    COLORREF x;
    x = MyGetPixel(HWND_DESKTOP, Horz, Vert);
    cout << "x = " << x << endl;
    cout << "HORZ = " << Horz << "   VERT = " << Vert << endl;
    GLRED = GetRValue(x);
    GLGREEN = GetGValue(x);
    GLBLUE = GetBValue(x);
}

Все вот так вот заработало !!! ВСЕМ СПАСИБО ))

Добавлено через 58 секунд
Теперь новая проблема после длительных циклов забивается память до упора и перестает работать загрузка дисплея до этого это решалось через Delete(DC); а тут как это сделать ? Релиз дисплей я так понял не помогает ...
0
 Аватар для pomkalk
365 / 247 / 24
Регистрация: 03.04.2011
Сообщений: 558
Записей в блоге: 1
24.07.2011, 19:32
Можно вопрос, а почему поиск по random идет?? может относительно положения курсора ко кругу искать(по спирали)
0
3 / 3 / 0
Регистрация: 23.07.2011
Сообщений: 50
24.07.2011, 19:42  [ТС]
Теперь новая проблема после длительных циклов забивается память до упора и перестает работать загрузка дисплея до этого это решалось через Delete(DC); а тут как это сделать ? Релиз дисплей я так понял не помогает ...

Почему то нельзя заменить ReleaseDC на DeleteDC с релизом работает минуту и все перестает сканировать как буд то память забивается такое было раньше если я не писал ДелетДС, тут такие же симптомы не понимаю почему Релиз не справляется с задачей Делита

Добавлено через 33 секунды
Потому что по спирали искал было не выгодно ...

Добавлено через 1 минуту
Как только разберусь с этим битмапом и когда релиз заработает как Делит тогда попробую спираль вернуть как и было !!!!!!

Добавлено через 52 секунды
Почему то нельзя заменить ReleaseDC на DeleteDC с релизом работает минуту и все перестает сканировать как буд то память забивается такое было раньше если я не писал ДелетДС, тут такие же симптомы не понимаю почему Релиз не справляется с задачей Делита
0
 Аватар для pomkalk
365 / 247 / 24
Регистрация: 03.04.2011
Сообщений: 558
Записей в блоге: 1
24.07.2011, 19:45
Спираль верный способ, в то время когда рэндом может все значения перебрать, и только в конце попасть!! + как вариант, спираль может быть и не от центра, а с отступом двигаясь к центру, что выгоднее чем холостыми в небо на авось!!))
0
3 / 3 / 0
Регистрация: 23.07.2011
Сообщений: 50
24.07.2011, 19:57  [ТС]
Будете долго смеяться наверно над моими пальцевнеботыканиями но решилось все логично как я и думал )))

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
COLORREF MyGetPixel(HWND hGame,int x,int y)  //íà âõîäå õýíäë íóæíîãî îêíà è êîîðäèíàòû x,y
{
        COLORREF pixel;
        BITMAPINFO BMI={0};
        HDC hGDC=GetDC(hGame);
        int Bitp=GetDeviceCaps(hGDC, BITSPIXEL);
        HDC hTmpDC=CreateCompatibleDC(hGDC);
        HBITMAP hTmpBmp=CreateCompatibleBitmap(hGDC,1,1);
        SelectObject(hTmpDC,hTmpBmp);
        BitBlt(hTmpDC,0,0,1,1,hGDC,x,y,SRCCOPY);
        BMI.bmiHeader.biSize = sizeof(BMI.bmiHeader);
        BMI.bmiHeader.biWidth = 1;
        BMI.bmiHeader.biHeight = 1;
        BMI.bmiHeader.biPlanes = 1;
        BMI.bmiHeader.biBitCount = Bitp;
        BMI.bmiHeader.biCompression = BI_RGB;
        BMI.bmiHeader.biSizeImage=Bitp/8;
        BMI.bmiHeader.biClrUsed = 0;
        BMI.bmiHeader.biClrImportant = 0;
        int TMP=GetDIBits(hTmpDC,hTmpBmp,0,1,&pixel,&BMI, DIB_RGB_COLORS);
        pixel&=0xFFFFFF;
        ReleaseDC(hGame,hGDC);
        DeleteDC(hTmpDC);
        return pixel;
}
Вот такие пироги !
0
Модератор
Эксперт по электронике
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,856
24.07.2011, 20:00
Цитата Сообщение от PaxMaHuHoB Посмотреть сообщение
HDC hTmpDC=CreateCompatibleDC(hGDC);
Где ты это удаляешь???
Цитата Сообщение от PaxMaHuHoB Посмотреть сообщение
SelectObject(hTmpDC,hTmpBmp);
Вот твоя утечка
нужно писать примерно так
за синтаксис не ручаюсь давно не писал в API
C
1
2
3
4
HBITMAP oldBmp=SelectObject(hTmpDC,hTmpBmp);// Запоминаем значения (может быть надо привести типы)
................................
// с конце перед удалением дискептора 
SelectObject(hTmpDC,oldBmp);// выбираем запомненное значение тогда твое расцепится и удалится не будет утечки
вообще посмотри в сторону GDI+
http://www.rsdn.ru/article/gdi/gdiplus1.xml
0
3 / 3 / 0
Регистрация: 23.07.2011
Сообщений: 50
25.07.2011, 03:21  [ТС]
Ребята Ахтунг !!!! Чисто случайно была обнаружена подмена при конвертации !!!!!!!!

C++
1
2
3
4
5
6
7
8
9
10
int CHECK()
{
 //if ((GLBLUE < 60) && (GLGREEN > 120) && (GLRED > 110))
 if ((GLBLUE > 110) && (GLGREEN > 120) && (GLRED < 60))
       {
        // cout << "YELLOW is HERE    PRESS ANY KEY" << endl;
         CHEKSTATUS = 1;
         //getch();
       }
}
Закомментированный код это прошлый рабочий код условие которого было 100 % верно, после использования Битмапа конвертация происходит с путанницей диапазона, желтый имел условие меньше 60 по блю смещению, теперь же он стал редом, тоесть в бит мапе блю поменялся местами с ред !!!!!!!!!!!!!!!!!!! АХТУНГ как это исправить, почему такой ксосяк ? я вручную изменил ред на блю и все заработало на ура, но это же нонсонс и абсруд !!!

Кто знает как исправить ?

Добавлено через 17 минут


Здесь видео обличает проблему в полной мере !!! Помогите исправить !
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
25.07.2011, 07:40
... не обличает ...
Миниатюры
Запрос данных с экрана максимально быстрый  
0
3 / 3 / 0
Регистрация: 23.07.2011
Сообщений: 50
26.07.2011, 12:52  [ТС]
http://www.youtube.com/watch?v=LUL-ZXoXZLk

По каким то причинам с тегами был баг ...

Добавлено через 8 часов 19 минут
http://www.youtube.com/watch?v=nDoExKuXSJo
http://www.youtube.com/watch?v=1mdqt-D3isk

Идет по всю тестирование алгоритма поиска ))

Добавлено через 1 час 44 минуты
http://vkontakte.ru/photo3239111_265768504
Идет тестирование алгоритма и вот первые труды выполненные ботом художником )) Пора открывать новое направление в искусстве Bot-art

Добавлено через 16 часов 39 минут
http://www.youtube.com/watch?v=ebpPFsKOWWQ
Продолжаем тестировать алгоритм )
0
3 / 3 / 0
Регистрация: 23.07.2011
Сообщений: 50
01.03.2014, 12:15  [ТС]
Так народ с возвращением меня ... Приветствую всех! Прошу помощи, а точнее ее уже все просят, а я не знаю что не так и с чем не так ...

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
COLORREF MyGetPixel(HWND hGame,int x,int y)  //ia aoiaa oyiae io?iiai ieia e eii?aeiaou x,y
{
        COLORREF pixel;
        BITMAPINFO BMI={0};
        HDC hGDC=GetDC(hGame);
        int Bitp=GetDeviceCaps(hGDC, BITSPIXEL);
        HDC hTmpDC=CreateCompatibleDC(hGDC);
        HBITMAP hTmpBmp=CreateCompatibleBitmap(hGDC,1,1);
        SelectObject(hTmpDC,hTmpBmp);
        BitBlt(hTmpDC,0,0,1,1,hGDC,x,y,SRCCOPY);
        BMI.bmiHeader.biSize = sizeof(BMI.bmiHeader);
        BMI.bmiHeader.biWidth = 1;
        BMI.bmiHeader.biHeight = 1;
        BMI.bmiHeader.biPlanes = 1;
        BMI.bmiHeader.biBitCount = Bitp;
        BMI.bmiHeader.biCompression = BI_RGB;
        BMI.bmiHeader.biSizeImage=Bitp/8;
        BMI.bmiHeader.biClrUsed = 0;
        BMI.bmiHeader.biClrImportant = 0;
        int TMP=GetDIBits(hTmpDC,hTmpBmp,0,1,&pixel,&BMI, DIB_RGB_COLORS);
        pixel&=0xFFFFFF;
        ReleaseDC(hGame,hGDC);
        DeleteDC(hTmpDC);
        DeleteDC(hTmpBmp);
        DeleteDC(hGDC);
        DeleteObject(hTmpBmp);
        return pixel;
}
 
int LOADRGB(int Horz, int Vert)
{
    COLORREF x;
    x = MyGetPixel(HWND_DESKTOP, Horz, Vert);
    GR = GetBValue(x);
    GG = GetGValue(x);
    GB = GetRValue(x);
}
Опять же в Win XP все происходит мгновенно! настолько насколько никто себе наверно и не представляет )) в Семерке (а у многих пользователей именно она и стоит) тупит по черному ...

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

Может вы свет прольете это ошибка кода или нехватка в седьмой винде каких либо установок ?

Добавлено через 24 минуты
C++
1
2
3
4
5
6
              while (Compare(User_FHPR, User_FHPG, User_FHPB, 8) == 1)
              {
                   WorkH++;
                   LOADRGB(WorkH, FHPvStart);
                   SetCursorPos(WorkH, FHPvStart);
              }
Для уточнения проблемы, тупняк наблюдается визуально только при таком способе, когда происходит единичный вызов то пофигу что икспи что 7, но при выдавливании максимальной скорости скана, семерка проседает по скорости раз в 1000, сеткурсор не влияет проверял ... остается только лоад ргб который ссылается на колор реф а вот там скорей всего тупняк, но почему тогда в икспи не тупит ...

Добавлено через 4 минуты
x = MyGetPixel(HWND_DESKTOP, Horz, Vert); ОМГ ! А не изза этого ли ???

Добавлено через 34 минуты
ZeroMemory(&bmi,sizeof(BITMAPINFO)); вот нашел еще такое ... для чего оно и нужно ли это делать в моем случае ?
0
Модератор
Эксперт по электронике
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,856
01.03.2014, 12:34
Цитата Сообщение от PaxMaHuHoB Посмотреть сообщение
ZeroMemory(
тек тут же написано
Обнуляет(записывает 0) Zero память Memory
в твоем случае
Цитата Сообщение от PaxMaHuHoB Посмотреть сообщение
ZeroMemory(&bmi,sizeof(BITMAPINFO))
обнуляет структуру bmi
записывает нули
первый аргумент адрес второй размер
0
3 / 3 / 0
Регистрация: 23.07.2011
Сообщений: 50
01.03.2014, 12:36  [ТС]
тогда это походу не вычищает память а наоборот лишнее телодвижение в адрес структуры bmi фактически замедляющее еще больше процесс ... фиг с ним мне важно остальное, самый верхний код все ли в нем верно, и почему тупит в семерке он ???
0
Модератор
Эксперт по электронике
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,856
01.03.2014, 12:38
Цитата Сообщение от PaxMaHuHoB Посмотреть сообщение
и почему тупит в семерке он ???
включи в семерке АЭРО а потом выключи
и сравни результаты
АЭРО много ломает, что нормально работало на ХРюнделе
0
3 / 3 / 0
Регистрация: 23.07.2011
Сообщений: 50
01.03.2014, 12:41  [ТС]
Ну это уже не я буду делать а мои пользователи моей программы ... надеюсь они знают что такое АЭРО если я им так и скажу ))
0
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
01.03.2014, 13:03
1. Вы делаете скриншот всего рабочего стола, не быстрее ли делать скриншот только нужного окна?
2. Для взятия цвета 1 пикселя вы каждый раз делаете скриншот, так? Я бы делал скриншот, а потом много раз вытягивал бы с него пиксели. Нет смысла делать скриншоты быстрее чем они могут меняться, скажем не чаще 5 раз в секунду или 1 раза в секунду.
3. Если хотите найти участок кода работающий дольше всех можно воспользоваться AQTime или выводить в лог время работы подозрительных ф-ций.

Добавлено через 16 минут
Что значит &= ?
0
3 / 3 / 0
Регистрация: 23.07.2011
Сообщений: 50
01.03.2014, 13:15  [ТС]
Эта функция для множества задач, и в 80 % случаях мне нужно мгновенное восприятие монитора как глазом человека ... или вы тоже на монитор смотрите раз в час ? согласитесь мы глазами пользуемся по разному, бывают задачи где нужна скорость реакции и каждая доля тысячная секунды на счету. речь не о том как оптимизировать скорость, а она достаточно высока в ИКСПИ настолько насколько вам не снилось ... речь идет только о кривости семерки.

Добавлено через 3 минуты
Единственный дельный пост это был про описание АЭРО в вин 7 возможно изза него ... будем тестировать. И не нужно прошу вас писать и спрашивать зачем я максимально быстро делаю скриншоты ВСЕГО рабочего стола, мои роботы повторяют действие человека и если бы была возможность видеть больше чем рабочий стол поверьте я бы включил бы более широкий диапазон сканирования окружения комнаты где стоит компьютер с монитором в котором пиксели, например задействова данные с вебкамеры и т д

Добавлено через 8 минут
pixel&=0xFFFFFF; Кстати действительно что это за Х! закоментил прогнал работает и без этой пое ... не знаю как оно туда попало, я и раньше это видел но игнорил по причине работает не трогай ... убрал но продолжает работать, щас тестим связаны ли тормоза с этой Х.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.03.2014, 13:15
Помогаю со студенческими работами здесь

Максимально быстрый способ добавления миллионов объектов в коллекцию
Всем привет. Собственно имеем объекты содержащие два поля long, double; таких объектов свыше 50_000_000. на данный момент такой объем...

Как в Excel организовать максимально быстрый поиск среди миллиона значений ?
Пришлось делать поиск на листе Экселя. Однако записей там около миллиона и данные в четырёх столбцах. Функция Find работает медленно,...

Хочу собрать максимально быстрый конфиг, бюджет ограничен (3500грн-4500грн)
Добрый вечер.хочу собрать пк,знаю что собрать что-то крутое не получится,но хочу чтоб было все максимальное по минимальным ценам и...

максимально использовать площадь экрана
Добрая ночь, прошу Вас помочь , намекнуть, объяснить фразу. Что означает &quot;максимально использовать площадь экрана&quot;? Подскажите...

Максимально частое обновление экрана
Вечер добрый! Появилась необходимость использовать SDL2 и OpenGL под Виндой. Я настроил MinGW - всё нормально работает. Взял первый...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
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. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru