![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Здравствуйте, уважаемые программисты;
Я весьма удачно похоже забрёл на этот форум. Дело в том, что у нас в школе программирование с Borland Delphi пока ещё на весьма детском уровне. Недавно прошли массивы ![]() Я уже нашёл себе множество литературы по delphi, но объём информации, мне в данном случае ненужной, очень высок, и это меня привело в этот раздел. Вот такая задачка: ; Есть полноэкранное приложение (игра), то ли OpenGL, то ли Direct3D, точно не скажу, сам не вдавался. Единственное, что нужно: 1. Програмно взять под контроль мышку и её передвижения, а так же эмулировать нажатия клавиатуры (левая кнопка мыши и клавиши F1-F8). Соответственно, нужно стукнуть мышкой в точку с данными координатами; 2. Из точки на экране с заданными координатами получить её RGB значение; Именно для этих двух пунктов я и ничего не могу предпринять. Остальную часть программы я уже сделал. Дело в том, что я не знаю ни одного оператора по этим командам. И, скажите пожалуйста, нужно ли мне искать какую-нибудь библиотеку для этих операций, или стандартная SysUtils сгодится; И, при этом, хорошо бы сделать движение мышки плавным (но это совсем не обязательно, главное - чтоб работало); Заранее огромное спасибо! ![]() И, если можно, посоветуйте литературу по этой тематике... end. Последний раз редактировалось Iskander, 06.10.2009 в 23:33. |
#2
|
|||
|
|||
![]() После долгих блужданий по интернету я нашёл набор функций
setcursorpos function GetPixel(DC: HDC; X, Y: Integer): Longint; function GetDC(Wnd: HWnd): HDC; function GetActiveWindow: HWnd; Всё уже, казалось бы, готово, но компилятор никак не даёт завершить программу, пишет: Return value of function 'GetActiveWindow' might be undefined. Подскажите, в чём дело? Функция вроде простая, без параметров, вернёт мне индикатор активного окна, а всё равно не хочет. |
#3
|
||||
|
||||
![]() Цитата:
Что делать, когда сломался комп: 1. Если вы юзер - делать ноги. 2. Если ремонтник - делать деньги. 3. Если вы программист - делать вид, что так было задумано. |
#4
|
|||
|
|||
![]() Сейчас я ещё помучался (уверенно вроде программно контролю мышку).
Запор всё тот же: Пытаюсь вывести цвет пиксела: writeln(GetPixel(GetDC(0),x,y)); независимо ни от чего выводит 0. По идее getDC(0) должен вернуть дескриптор для всего экрана, но пока всё, что происходит в компе, для меня остаётся загадкой. Предыдущая проблема уже не актуальна, я с ней разобрался. P.S. А в uses ничего кроме windows и SysUtils не надо? Последний раз редактировалось Iskander, 07.10.2009 в 15:37. |
#5
|
||||
|
||||
![]() х, у - переменные? у них какие значения?
Что делать, когда сломался комп: 1. Если вы юзер - делать ноги. 2. Если ремонтник - делать деньги. 3. Если вы программист - делать вид, что так было задумано. |
#6
|
||||
|
||||
![]() Код:
![]() Последний раз редактировалось Admin, 07.10.2009 в 19:02. |
#7
|
|||
|
|||
![]() Да какие там переменные... Просто координаты, которые у меня уже есть. типа, там, x=1450, а y=540 (у меня монитор 1680х1050).
Нашёл ещё один вариант: screendc = CreateDC('DISPLAY', '', '', 0); writeln(GetPixel(screendc,x,y)); DeleteDC(screendc); Теперь он выводит с неопределённой периодичностью разные 10-и или 9-и значные коды (почему, блин, десятизначные? Вряд ли там альфа канал): -1308549988 (да-да, именно минус) 855712513 1828791009 1828791009 1241588222 855712513 1241588222 (всё в хронологическом порядке). Привожу полный текст проги (тестовой, чисто проверить): Код:
Последний раз редактировалось Admin, 07.10.2009 в 19:02. |
#8
|
|||
|
|||
![]() Подождите, сейчас попробую.
Кстати, я имел в виду не только на форме, но и в любой другой точке (если вы так и на писали, то извините, сейчас я проверю). Последний раз редактировалось Iskander, 07.10.2009 в 18:44. |
#9
|
||||
|
||||
![]() именно в любой точке
![]() |
#10
|
||||
|
||||
![]() Выношу обоим замечание по оформлению кода, далее последуют санкции...
|
#11
|
||||
|
||||
![]() Admin
![]() и аккаунт мой можешь УДАЛИТЬ by ![]() |
#12
|
|||
|
|||
![]() А можно реализовать всё это чисто в консольном режиме?
Всякие, там, дескрипторы окон, затем получить DC и через Getpyxel(HDC,x,y). А за команды эмуляции спасибо большое. А вот сама форма пока не получилась, но я сам разберусь (просто я недолюбливаю графический интерфейс). У меня даже в строке Цитата:
Вылезает Undeclared Identifier 'Handle' ![]() Последний раз редактировалось Iskander, 07.10.2009 в 19:26. |
#13
|
||||
|
||||
![]() Цитата:
если ты хочеш перевести все чисто в паскаль то там немного другие команды ![]() ![]() |
#14
|
|||
|
|||
![]() Жаль. Спасибо огромное.
|
#15
|
||||
|
||||
![]() Цитата:
ПС. Убивать не буду, просто попадешь на время в бан ![]() |