Ir ao conteúdo
  • Cadastre-se

C++ Programa auto-click que ativasse por cor - já visto neste fórum


aurelio alves

Posts recomendados

Olá a todos!

Primeiramente gostaria de parabenizar o Devair1010   pelo trabalho prestado no fórum, na ajuda de todos!!

Estou começando no c++, e estou com um problema de ligação do código já postado aqui com a janela executável na área de trabalho,  ou seja,  não sei como fazer a parte executável de ligar com o código abaixo:

 

Obs:  Este código que está abaixo no link, já foi apresentado no aqui no fórum pelo Devair1010.

https://www.clubedohardware.com.br/forums/topic/1325012-programa-auto-click-que-ativasse-por-cor/?do=findComment&comment=8220067

comentario #7 -Programa auto-click que ativasse por cor

 

Atenção: Abaixo esta o vídeo de como ele fica no final.  Esta parte final que não estou conseguindo fazer e ligar com o código do link acima.

 

Se alguém puder me ajudar, fico muito agradecido!!

1476705947_ProgramaAutoClick.zip

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Poste o código no forum, por favor. Não um link para download de outro lugar. 

Assim estará aumentando a chance de seu programa ou dúvida ajudar a outros, como fez @devair1010. Fazendo isso também ajuda outros a ajudarem você.

 

Está programando em C++? ou C? Note que o exemplo é C. E a API do windows é comptaível de todo modo.

 

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?

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

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.

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

 

 


 

 

6 horas atrás, arfneto disse:

Poste o código no forum, por favor. Não um link para download de outro lugar. 

Assim estará aumentando a chance de seu programa ou dúvida ajudar a outros, como fez @devair1010. Fazendo isso também ajuda outros a ajudarem você.

 

Está programando em C++? ou C? Note que o exemplo é C. E a API do windows é comptaível de todo modo.

 

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?

    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:

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois...

@aurelio alves    para usar esse programa vai precisar que você  rode esse script no visual studio e ele vai criar um excutável ".exe"  ,  na pasta onde você salvou o arquivo desse programa ,  aqui por exemplo ele está em :

                                                C:\Users\StorTech\source\repos\clicar mult pontos mouse\x64\Debug
 , depois crie um atalho para esse executável , em seguida abra sua aplicação onde vai detectar a cor e clicar em tal posição , e em seguida abra esse programa de Autoclique e informe o que for pedido na tela , como por exemplo a quantidade de locais que vai detectar a cor , sendo que para cada detecção terá também um local onde clicar e pode ser até 10 locais , mova a setinha do mouse até onde vai detectar a cor e sem clicar com o mouse ,apenas posicione a ponta da setinha no local exato e tecle o botão Enter do teclado , e depois o local onde clicar e também sem clicar com o mouse , faça assim para todas as posições e ele vai pegar as posições e as cores naqueles locais para depois fazer as comparações , em seguida , após inserir todas posições  clique Enter para começar os autocliques automáticos , e a janela do console vai ficar escondida em segundo plano da janela de sua aplicação , mas continuará funcionando e clicando por todas as posições informadas , e quando quiser fechar os autoclique , pressione o botão "ESC" no teclado , e se por qualquer motivo acontecer de o programa não para a execução , pressione Ctrl + Alt + Del , e clique em Gerenciador de Tarefas escolha o seu aplicativo e clique com o botão direto em cima dele e escolha finalizar Tarefa .


 

#define     _WIN32_WINNT 0x600
#define     _h GetStdHandle(STD_OUTPUT_HANDLE)
#include    <stdio.h>
#include    <stdlib.h>
#include    <conio.h>
#include    <string.h>
#include    <windows.h>
#define     getch() _getch()
#define     kbhit() _kbhit()
#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 2022
///                                              /// biblioteca de entrada e saida de dados
///                                              /// 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;                            /// funCAo para usar cores
    clrf = RGB(43, 47, 155);                     /// cor RGB para azul escuro
    int cord_detect[10][2] = { 0 };              /// p armazenaR as posições onde detectar a cor
    int cord__click[10][2] = { 0 };              /// p armazenaR as posições onde clicar pode ser até 10
    int cor_____RGB[10][3] = { 0 };              /// armazena as cores a serem detectadas
    int clk_x = 0;
    int clk_y = 0;
    int p_x = 0;
    int p_y = 0;
    int opc = 0;
    int flg = 0;
    int cont = 0;
    int cR = 43;
    int cG = 47;
    int cB = 155;                                /// cor azul celeste escuro
    char op = ' ';
    char ops[5] = "";
    printf("quantidade pontos para detectar < 1 até 10 > ");
    fgets(ops, sizeof(ops), stdin);
    int _j = atoi(ops);

    do
    {
        printf(" PosiCAo %3d para Detectar a cor\n"
            "Mova A Setinha para a posiCAo onde detectar a Cor e tecle enter\n"
        ,cont + 1);
        op = getchar();
        GetCursorPos(&p);                        /// pega a posiCAo X Y da setnha do mouse
        cord_detect[cont][0] = p.x;              /// armazena a posiCAo X onde detectar
        cord_detect[cont][1] = p.y;              /// armazena a posiCAo Y onde detectar
        
        clrf = GetPixel(tela, p.x, p.y);         /// pega a cor desse ponto     ( 1308 , 238  ) da tela
        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"
        cor_____RGB[cont][0] = r;                /// armazena valor R da cor a ser detectada na posiCAo X Y
        cor_____RGB[cont][1] = g;                /// armazena valor G da cor a ser detectada na posiCAo X Y
        cor_____RGB[cont][2] = b;                /// armazena valor B da cor a ser detectada na posiCAo X Y
        printf("na Coluna --= %5d  \n"           /// escreve o numero da coluna onde esta a ponta da setinha do mouse
               "na Linha ---= %5d  \n"           /// escreve o numero da  linha onde esta a ponta da setinha do mouse
               "a Cor Eh:          \n"
               "R ----------= %5d  \n"
               "G ----------= %5d  \n"           /// Mostra o Valor da Cor
               "B ----------= %5d\n\n", 
               cord_detect[cont][0], 
               cord_detect[cont][1],
               r, g, b);
        printf("Mova A Setinha para a posiCAo onde Clicar e tecle enter\n");
        op = getchar();
        GetCursorPos(&p);                        /// pega a posiCAo da setnha do mouse
        cord__click[cont][0] = p.x;              /// armazena a posiCAo X onde Clicar
        cord__click[cont][1] = p.y;              /// armazena a posiCAo Y onde Clicar
        cont++;
    } while ( _j > cont);
    printf("\nMostra as posições onde detectar e  Clicar\n\n");
    for (int _i = 0; _i < _j; _i++)
    {
        printf("Detectar na pos  x -= %5d  \n"
               "Detectar na pos  y -= %5d  \n"
               "qtd Cor Vermelha R -= %5d  \n"
               "qtd Cor Verde    G -= %5d  \n"
               "qtd Cor AzuL     B -= %5d  \n"
               "Clicar na pos    x -= %5d  \n"
               "Clicar na pos    y -= %5d\n\n",
        cord_detect[_i][0], cord_detect[_i][1],
        cor_____RGB[_i][0], cor_____RGB[_i][1],
        cor_____RGB[_i][2], cord__click[_i][0],
        cord__click[_i][1]);
    }
    printf("tecle   ENTER  e vai inciar\n");
    printf("tecle o botao ESC para parar\n");
    op = getchar();                              /// 
    printf("iniciou\n");
    cont = 0;
    while (!GetAsyncKeyState(VK_ESCAPE))         /// repete o que estA dentro das chaves
    {                                            /// enquanto não pressionar a tecla ESC do teclado
        for (int _i = 0; _i < _j; _i++)
        {
            p_x = cord_detect[_i][0];
            p_y = cord_detect[_i][1];

            cR = cor_____RGB[_i][0];
            cG = cor_____RGB[_i][1];
            cB = cor_____RGB[_i][2];

            clrf = GetPixel(tela, p_x, p_y);     /// pega a cor desse ponto     ( 1308 , 238  ) da tela
            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 cor será mais clara
            ///                                  /// esses valores significam que a cor nessa posiCAo
            ///                                  /// Eh azul escuro que eh a mistura de 43 de vermelho ( r ) +
            ///                                  /// 47 de verde ( g ) + qq valor acima de zero até 255 de azul ( b )
            
            printf("Na posiCAo %d x %d a Cor Eh:\n R= %d\n G= %d\n B= %d\n", p_x, p_y, r, g, b);
            if (r == cR && g == cG && b >= cB)
            {
                clk_x = cord__click[_i][0];
                clk_y = cord__click[_i][1];
                SetCursorPos(clk_x, clk_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
            }
        }
    }
    printf("total de Vezes Que Apareceu a cor azul --> %d\n\n\n", cont);
    ReleaseDC(0, tela);                          /// termina o programa
    return 0;
}

aquie estár o executável :  Downloads.rar

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!