Ir ao conteúdo

Posts recomendados

Postado

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
Postado

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
Postado

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
  • 3 semanas depois...
Postado

@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

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!