Page 1 of 2

Pipetka - программа, для взятия цвета пикселя с экрана.

Posted: Fri Jun 04, 2010 6:19 am
by Rock_maniak_forever
Pipetka v0.0

Pipetka - программа, для взятия цвета пикселя с экрана. Прогой пользоваться можно, но она работает через жопу, так что сами понимаете. :D
Внимание! программа совсем не оптимизирована.

Re: Pipetka - программа, для взятия цвета пикселя с экрана.

Posted: Fri Jun 04, 2010 9:59 am
by Mario
А в чем собственно это "работает через жопу" выражается?
Самокритика хорошо, но не стоит умалять своего достоинства.

Re: Pipetka - программа, для взятия цвета пикселя с экрана.

Posted: Fri Jun 04, 2010 2:32 pm
by Rock_maniak_forever
Дело в том, что программа иногда выдаёт чёрный цвет в квадрате, в то время когда мышь находится на каком ни-будь пикселе иного цвета и сильное мерцание, меня это очень сильно раздражает. Не могу понять в чём проблема. Раньше конечно мерцание было ещё больше, но все таки мне это не нравится, не люблю когда что-то плохо работает. :(

Re: Pipetka - программа, для взятия цвета пикселя с экрана.

Posted: Sun Jun 06, 2010 2:16 am
by Rock_maniak_forever
Pipetka v0.1

Вышла новая версия. :D

Исправления:
1. При наведении курсора мышки на окно программы, считывался цвет пиксела с экрана, из-за чего возникало лишнее мерцание мыши.
2. Примерно тоже самое, и с окном "ABOUT". Теперь когда окно открыто, считывания цвет пиксела, не происходит.

Добавлено:
1.Показ координат положения стрелки мыши.
2.Для уменьшения мерцания, добавлен мелкий код с алгоритмом при котором, если новый и старый цвета пиксела одинаковые, то перерисовки данных в окне не происходит.

Re: Pipetka - программа, для взятия цвета пикселя с экрана.

Posted: Sun Jun 06, 2010 2:42 am
by Nasarus
Отличная работа :) Добавлю лишь два замечания:
1) Если навести курсор в самый верх экрана (нулевой пиксель по Y) программа грохается.
2) Когда окно не активно, оно по-прежнему показывает цвет. Имхо, надо сделать проверку на активность/неактивность окна Pipetk'и и если окно не активно не реагировать на движение мыши.

Re: Pipetka - программа, для взятия цвета пикселя с экрана.

Posted: Sun Jun 06, 2010 10:47 am
by Mario
Вот такой вот код можно применить для проверки того что окно находится на вершине оконного стека:

Code: Select all

START:
	call	get_active_pocess
...
Вызываемая процедура:

Code: Select all

get_active_pocess:
	mcall	9,procinfo,-1
	mov	eax,[ebx+30]
	mov	[PID],eax
	xor	ecx,ecx
@@:
	inc	ecx
	mcall	9,procinfo
	mov	eax,[PID]
	cmp	eax,[ebx+30]
	jne	@r
	mov	[active_process],ecx
	ret
Главный цикл:

Code: Select all

still:
	mcall	10
	cmp	eax,1
	je	red
	cmp	eax,2
	je	key
	cmp	eax,3
	je	button
	cmp	eax,6
	je	mouse
	jmp	still
И далее проверка при обработке события 6-событие мыши:

Code: Select all

mouse:
	mcall	18,7
	cmp	[active_process],eax
	jne	still

Код из OpenDialog.

Re: Pipetka - программа, для взятия цвета пикселя с экрана.

Posted: Sun Jun 06, 2010 3:07 pm
by Asper
Полезная программа, когда-то делал такие под DOS и под Win.

Re: Pipetka - программа, для взятия цвета пикселя с экрана.

Posted: Sun Jun 06, 2010 3:11 pm
by DmitrySokolowsky
Действительно, хорошая и нужная программа, может облегчить много задач художникам и дизайнерам

Re: Pipetka - программа, для взятия цвета пикселя с экрана.

Posted: Mon Jun 07, 2010 12:46 am
by diamond
Mario
Во-первых, вообще-то для поиска слота по PID уже давно можно вместо того, чтобы гонять в цикле 9-ю функцию, просто вызвать 18.21. Во-вторых, в данном случае даже это не нужно, поскольку 9-я функция возвращает позицию в оконном стеке, так что вместо 18.7 и сравнения с заранее вычисленным [active_process] можно просто вызвать 9-ю функцию и сравнить word[ebx+4] с ax.

Re: Pipetka - программа, для взятия цвета пикселя с экрана.

Posted: Mon Jun 07, 2010 1:46 am
by diamond
Включил в русскоязычный вариант ночной сборки.

Re: Pipetka - программа, для взятия цвета пикселя с экрана.

Posted: Mon Jun 07, 2010 9:00 am
by Mario
diamond
Вот я все понимаю, что ты во многом систему знаешь лучше, но неужели тяжело было об этом в кой-либо теме отписать на форуме раньше? Обязательно надо подождать когда кто-нибудь выложит старое (НО РАБОЧЕЕ!) решение. И показать свою гениальность? После этого негодуешь, что на вики информация старая! Не хорошо так...
можно просто вызвать 9-ю функцию и сравнить word[ebx+4] с ax
И вообще по твоему посту не понятно что в ax.

Re: Pipetka - программа, для взятия цвета пикселя с экрана.

Posted: Mon Jun 07, 2010 11:16 am
by diamond
Mario wrote:Вот я все понимаю, что ты во многом систему знаешь лучше, но неужели тяжело было об этом в кой-либо теме отписать на форуме раньше?
Что именно? Сообщение о том, что, ура, появилась новая сисфункция 18.21? Дык это было на форуме и без меня. Вызов 9-й функции и проверка состояния оконного стека? Дык это в документации прямо так и написано (один из комментариев к функции 9), мне что, все 200K документации на форум запостить?
Mario wrote:И вообще по твоему посту не понятно что в ax.
То, что туда записывает функция 9. Как и сказано в документации.

Re: Pipetka - программа, для взятия цвета пикселя с экрана.

Posted: Wed Jun 09, 2010 1:09 am
by Rock_maniak_forever
Nasarus wrote: 1) Если навести курсор в самый верх экрана (нулевой пиксель по Y) программа грохается.
Самое интересное, что под оффициальной сборкой (а я именно под ней шкодю), программа работает без проблем, а под ночной сборкой грохается.

Поправил.
Nasarus wrote: 2) Когда окно не активно, оно по-прежнему показывает цвет. Имхо, надо сделать проверку на активность/неактивность окна Pipetk'и и если окно не активно не реагировать на движение мыши.
Сделано.

Mario

Большое спасибо, за код.

diamond

Не совсем понял (я не крутой программист), надо разобираться. Поменяю позъже. Пока вставил код, который любезно предоставил Mario.

Re: Pipetka - программа, для взятия цвета пикселя с экрана.

Posted: Wed Jun 09, 2010 5:34 pm
by DmitrySokolowsky
А как у неё со встраиваемостью? Может быть в будущем встроена в графический редактор или что-то подобное?

Re: Pipetka - программа, для взятия цвета пикселя с экрана.

Posted: Thu Jun 10, 2010 3:27 am
by Rock_maniak_forever
Атауальпа wrote:А как у неё со встраиваемостью?
Встроить можно, если постараться конечно, но эту прогу, я писал на одних макросах из моей либы, которую выкладывать я пока не хочу. Вот если не лень мне будет, то перепишу на чистый АСМ, и выложу исходники.
Атауальпа wrote:Может быть в будущем встроена в графический редактор или что-то подобное?
А зачем она там? - там и так есть пипетка, только код цвета она не показывает, да и код очень простой, что сам разработчик редактора, сам без труда его туда встроет.

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