Obrigado arfneto pelo retorno!
Eu tente colocar o código aberto, mas não consegui, pois quando dou ctrl + v, ele aparece todo desalinhado.
Estou abrindo este arquivo no visual Studio 2019 linguagem c.
""””""""""""""""""""""”""""""""""""""""""""""""""""""""""""""""""""""""""""""""
Arfneto:
O que quer fazer é algo como o comportamento do ícone do conta-gotas no mspaint, para copiar a cor do ponto onde o mouse está apontando?
Resp:. Exatamente. Copiar os pontos em um determinado lugar quando eles aparecerem e acionar o click em outro lugar. Como no vídeo em anexo.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
Pode usar esse aqui do c / c++ , que você insere as coordenada onde pegar a cor e o valor RBG das cores e onde clicar com o mouse , caso surja nessa posição tal cor , e esse programa foi feito com o visual studio comunity 2019 , pois em compiladores mais antigos não funcionou .
#define _CRT_SECURE_NO_WARNINGS // para usar scanf e outras funções no visual studio
// por desligar os warnings " Alertas do compilador"
/* programa feito no VisuaL Studio Comunity 2019 */
#include <stdio.h> // biblioteca de entrada e saida de dados
#include <Windows.h> // biblioteca para certos comandos no ambiente windows
int main() // função PrincipaL de todo programa em linguagem c
{
INPUT in; //
POINT p; // comandos do mouse
in.type = INPUT_MOUSE;
in.mi.dwFlags = MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP;
in.mi.time = 0;
HDC tela = GetDC(0); // para acessar a tela
COLORREF clrf; // função para usar cores
GetCursorPos(&p); // pega a posição da setnha do mouse
printf("a ponta da setinha do mouse esta na posicao:\n");
printf("Setinha coluna--= %d\n", p.x); // escreve o numero da coluna onde está a ponta da setinha do mouse
printf("Setinha linha -= %d\n", p.y); // escreve o numero da linha onde está a ponta da setinha do mouse
int clk_x, clk_y, p_x, p_y,op;
int cr=43, cg=47, cb=155,cont=0; // cor azul celeste escuro
printf("numero da coluna da tela onde detectar a cor ");
scanf("%d", &p_x);
printf("numero da linha da tela onde detectar a cor ");
scanf("%d", &p_y);
printf("numero da coluna da tela onde clicar ");
scanf("%d", &clk_x);
printf("numero da linha da tela onde clicar ");
scanf("%d", &clk_y);
printf("\nUm exemplo :\n");
printf("a cor azul celeste escuro tem o RGB => R= 43 , G= 47, B= 155\n");
printf("se não souber as cores tecle 0 , e elas serao estabelecidas com R=43 G=47 B=155\n");
printf(" 0 = não sei os numeros das cores\n");
printf(" 1 = informarei os numeros das cores\n");
scanf("%d", &op);
if (op == 1)
{
printf("informe o numero referenta a cor vermelha R do (RGB) de 0 ate 255 ");
scanf("%d", &cr);
printf("informe o numero referenta a cor verde G do (RGB) de 0 ate 255 ");
scanf("%d", &cg);
printf("informe o numero referenta a cor azul B do (RGB) de 0 ate 255 ");
scanf("%d", &cb);
}
/*
int x = 1308, y = 238, cont = 0; // especificar as posições onde pegar a cor
p.x = 1483; // posiciona a setinha do mouse na coluna da tela onde vai clicar
p.y = 16; // posiciona a setinha do mouse na linha da tela onde vai clicar
*/
//Sleep(5000); // para e espera cinco Segundos e depois continua
printf("tecle ENTER e vai inciar\n");
op = getchar(); // duas vezes pois scanf deixa um newline no buffer
op = getchar(); // e passa direto , então precisa desse outro aqui
printf("iniciou\n");
printf("tecle o botao INSERT para parar\n");
while (!GetAsyncKeyState(VK_INSERT)) // repete enquanto não pressionar a tecla Insert do teclado
{
clrf = GetPixel(tela, p_x, p_y); // pega a cor desse ponto da tela ( 1308 , 238 )
int r = GetRValue(clrf); // pega a qtd de cor vermelha ( 0 até 255 ) e armazena em "r"
int g = GetGValue(clrf); // pega a qtd de cor verde ( 0 até 255 ) e armazena em "g"
int b = GetBValue(clrf); // pega a qtd de cor azul ( 0 até 255 ) e armazena em "b"
// a mistura dessas cores ( r g b ) formam uma cor finaL resultante
// quanto maior o valor a car será mais clara
if (r == cr && g == cg && b > cb) // esses valores significam que a cor nessa posição
// é azul escuro que é a mistura de 43 de vermelho ( r ) +
// 47 de verde ( g ) + qq valor acima de zero de cor azul ( b )
{
// aqui colocar o que fazer caso encontre a cor azul ness posição
p.x = p_x;
p.y = p_y;
SetCursorPos(p.x, p.y); // move a setinha do mouse para essa posição da tela do Monitor
SendInput(1, &in, sizeof(in)); // clica na posição da ponta da setinha do mouse e solta
cont++; // incrementa a qtd de click do mouse
Sleep(1000); // aguarda por um Segundo e continua depois
}
//if (cont == 2)break; // se clicou duas vezes então para de repetir esses comando ali
// de cima e sai desse Loop " enquanto "
}
printf("total de Vezes Que Apareceu a cor azul --> %d\n\n\n",
cont); // e vem para essa Linha e escreve essa msg
ReleaseDC(0, tela); // e termina o programa
return 0; // e retorna para o windows com o valor zero
}
Segue código aberto: