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

Processing, playback of audio and video
  • А в чем собственно это "работает через жопу" выражается?
    Самокритика хорошо, но не стоит умалять своего достоинства.
  • Дело в том, что программа иногда выдаёт чёрный цвет в квадрате, в то время когда мышь находится на каком ни-будь пикселе иного цвета и сильное мерцание, меня это очень сильно раздражает. Не могу понять в чём проблема. Раньше конечно мерцание было ещё больше, но все таки мне это не нравится, не люблю когда что-то плохо работает. :(
  • Pipetka v0.1

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

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

    Добавлено:
    1.Показ координат положения стрелки мыши.
    2.Для уменьшения мерцания, добавлен мелкий код с алгоритмом при котором, если новый и старый цвета пиксела одинаковые, то перерисовки данных в окне не происходит.
    Attachments
    Screenshot.png
    Screenshot.png (3.85 KiB)
    Viewed 10663 times
    Pipetka v0.1.7z (11.77 KiB)
    Downloaded 387 times
  • Отличная работа :) Добавлю лишь два замечания:
    1) Если навести курсор в самый верх экрана (нулевой пиксель по Y) программа грохается.
    2) Когда окно не активно, оно по-прежнему показывает цвет. Имхо, надо сделать проверку на активность/неактивность окна Pipetk'и и если окно не активно не реагировать на движение мыши.
    ушёл...
  • Вот такой вот код можно применить для проверки того что окно находится на вершине оконного стека:

    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.
  • Полезная программа, когда-то делал такие под DOS и под Win.
  • Действительно, хорошая и нужная программа, может облегчить много задач художникам и дизайнерам
  • Mario
    Во-первых, вообще-то для поиска слота по PID уже давно можно вместо того, чтобы гонять в цикле 9-ю функцию, просто вызвать 18.21. Во-вторых, в данном случае даже это не нужно, поскольку 9-я функция возвращает позицию в оконном стеке, так что вместо 18.7 и сравнения с заранее вычисленным [active_process] можно просто вызвать 9-ю функцию и сравнить word[ebx+4] с ax.
    Ушёл к умным, знающим и культурным людям.
  • Включил в русскоязычный вариант ночной сборки.
    Ушёл к умным, знающим и культурным людям.
  • diamond
    Вот я все понимаю, что ты во многом систему знаешь лучше, но неужели тяжело было об этом в кой-либо теме отписать на форуме раньше? Обязательно надо подождать когда кто-нибудь выложит старое (НО РАБОЧЕЕ!) решение. И показать свою гениальность? После этого негодуешь, что на вики информация старая! Не хорошо так...
    можно просто вызвать 9-ю функцию и сравнить word[ebx+4] с ax
    И вообще по твоему посту не понятно что в ax.
  • Mario wrote:Вот я все понимаю, что ты во многом систему знаешь лучше, но неужели тяжело было об этом в кой-либо теме отписать на форуме раньше?
    Что именно? Сообщение о том, что, ура, появилась новая сисфункция 18.21? Дык это было на форуме и без меня. Вызов 9-й функции и проверка состояния оконного стека? Дык это в документации прямо так и написано (один из комментариев к функции 9), мне что, все 200K документации на форум запостить?
    Mario wrote:И вообще по твоему посту не понятно что в ax.
    То, что туда записывает функция 9. Как и сказано в документации.
  • Nasarus wrote: 1) Если навести курсор в самый верх экрана (нулевой пиксель по Y) программа грохается.
    Самое интересное, что под оффициальной сборкой (а я именно под ней шкодю), программа работает без проблем, а под ночной сборкой грохается.

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

    Mario

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

    diamond

    Не совсем понял (я не крутой программист), надо разобираться. Поменяю позъже. Пока вставил код, который любезно предоставил Mario.
    Attachments
    Pipetka v0.2.7z (10.13 KiB)
    Downloaded 374 times
  • А как у неё со встраиваемостью? Может быть в будущем встроена в графический редактор или что-то подобное?
  • Атауальпа wrote:А как у неё со встраиваемостью?
    Встроить можно, если постараться конечно, но эту прогу, я писал на одних макросах из моей либы, которую выкладывать я пока не хочу. Вот если не лень мне будет, то перепишу на чистый АСМ, и выложу исходники.
    Атауальпа wrote:Может быть в будущем встроена в графический редактор или что-то подобное?
    А зачем она там? - там и так есть пипетка, только код цвета она не показывает, да и код очень простой, что сам разработчик редактора, сам без труда его туда встроет.

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

    Users browsing this forum: No registered users and 8 guests