Форум программистов, компьютерный форум CyberForum.ru

Получением цвета пикселя из игры - C++

Восстановить пароль Регистрация
 
Chubi
0 / 0 / 0
Регистрация: 01.01.2011
Сообщений: 6
01.01.2011, 23:09     Получением цвета пикселя из игры #1
Добрый день!
Я пытаюсь получить цвет пикселя из игры WoW
Использую такой код:
C++
1
2
3
4
5
6
7
8
9
void main()
    {
    int x = 1102;
    int y = 272;
        HWND test = FindWindow(TEXT("GxWindowClass"),TEXT ("World of Warcraft")); 
        HDC test2 = GetDC(test);
        int pixel_color = GetPixel(test2, x, y );
        cout << pixel_color;
        }
В итоге получаю вот такое страшное число - 218218218218218218
Как мне получить цвет в виде HEX ? (потом он будет нужен для сравнения с эталонным цветом и если они совпадут то будет происходить какое-то действие)
Вообще цвет в этом месте RGB 217,0,0 или HEX D90000.

P.S. Прошу не судить строго я только 3-ий день изучаю c++ =)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Минич
 Аватар для Минич
66 / 66 / 3
Регистрация: 26.11.2010
Сообщений: 123
01.01.2011, 23:16     Получением цвета пикселя из игры #2
C++
1
cout << hex << pixel_color;
Slimmy
 Аватар для Slimmy
65 / 18 / 2
Регистрация: 09.10.2010
Сообщений: 97
01.01.2011, 23:20     Получением цвета пикселя из игры #3
К сожалению, помочь ни чем не смогу, однако интерес берет надо мной верх По-скольку и сам в WoW играл достаточно длительное время, хотелось бы спросить, для каких целей Вам нужен кусочек этой программы? Что Вы хотите написать?
Chubi
0 / 0 / 0
Регистрация: 01.01.2011
Сообщений: 6
01.01.2011, 23:38  [ТС]     Получением цвета пикселя из игры #4
Цитата Сообщение от Минич Посмотреть сообщение
C++
1
cout << hex << pixel_color;
Хмм... модифицировал немного код, вообще он сейчас стал возвращать da, хотя я думал будет D90000
Появившиеся вопросы написал в комментариях в самом коде.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void main()
    {
 
    int x = 1102;
    int y = 272;
    char* need_color = "D90000"; // тут нужна переменная которая бы хранила нужное значение D90000, char* подойдет ? 
 
HWND test = FindWindow(TEXT("GxWindowClass"),TEXT ("World of Warcraft")); 
HDC test2 = GetDC(test);
int pixel_color = GetPixel(test2, x, y );
 
if(need_color == pixel_color) // вот тут я получается сравниваю несравнимое (извиняюсь за тавтологию) как довести эти переменные до такого вида, чтобы их можно было сравнить ?
 
{
PostMessage(test, WM_KEYDOWN , 49, 0);
PostMessage(test, WM_KEYUP , 49, 0);
}
}
2Slimmy, Да все очень просто, я начал переводить своего мини бота к WoWу с autoit на c++.
Минич
 Аватар для Минич
66 / 66 / 3
Регистрация: 26.11.2010
Сообщений: 123
02.01.2011, 00:08     Получением цвета пикселя из игры #5
Цитата Сообщение от Chubi Посмотреть сообщение
char* need_color = "D90000";
это у тебя получается указатель на строку "D90000", а потом ты адрес сравниваешь с целочисленным значением. Вот так надо:
C++
1
int need_color = 0xD90000;
Chubi
0 / 0 / 0
Регистрация: 01.01.2011
Сообщений: 6
02.01.2011, 10:53  [ТС]     Получением цвета пикселя из игры #6
Цитата Сообщение от Минич Посмотреть сообщение
это у тебя получается указатель на строку "D90000", а потом ты адрес сравниваешь с целочисленным значением. Вот так надо:
C++
1
int need_color = 0xD90000;
точно! =) спасибо, все заработало =)
Yandex
Объявления
02.01.2011, 10:53     Получением цвета пикселя из игры
Ответ Создать тему
Опции темы

Текущее время: 22:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru