Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Portuguese
  4. Problema com Funçao que Captura o evento de click do Mouse do Sistema Operacional
Forum Updated to NodeBB v4.3 + New Features

Problema com Funçao que Captura o evento de click do Mouse do Sistema Operacional

Scheduled Pinned Locked Moved Portuguese
3 Posts 1 Posters 1.8k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • R Offline
    R Offline
    Rodrigocg
    wrote on last edited by
    #1

    A funcao esta funcionando perfeitamente, o problema é quando eu do um Click seguro e arrasto o cursor... ele identifica milhoes de click e eu quero que identifique uma vez só.

    seghe o codigo:

    @#include <QtCore/QCoreApplication>
    #include <QDebug>
    #include <Windows.h>

    HHOOK MouseHook= NULL;

    using namespace std;

    LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam)
    {
    int LBUTTON=0, RBUTTON=0;
    if (nCode < 0) // do not process the message
    return CallNextHookEx(0, nCode,wParam, lParam);

    LBUTTON=(int)GetKeyState(VK_LBUTTON);
    RBUTTON=(int)GetKeyState(VK_RBUTTON);
    
    if(LBUTTON<0||RBUTTON<0)
        qDebug()<<"CLICK";
    
    return CallNextHookEx(0, nCode, wParam,lParam);
    

    }

    int main(int argc, char *argv[])
    {
    QCoreApplication a(argc, argv);
    MouseHook = SetWindowsHookEx(WH_MOUSE_LL, MouseProc, NULL, 0);
    if(MouseHook == NULL)
    {
    qDebug() << "Hook failed";
    }
    return a.exec();
    }
    @

    Alguem arrisca uma soluçao?

    1 Reply Last reply
    0
    • R Offline
      R Offline
      Rodrigocg
      wrote on last edited by
      #2

      Resolvi o problema da seguinte maneira:
      @#include <QtCore/QCoreApplication>
      #include <QDebug>
      #include <Windows.h>

      HHOOK MouseHook= NULL;
      int flagLBUTTON=0,flagRBUTTON=0;

      using namespace std;

      LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam)
      {
      int LBUTTON=0, RBUTTON=0;
      if (nCode < 0) // do not process the message
      return CallNextHookEx(0, nCode,wParam, lParam);

      LBUTTON=(int)GetKeyState(VK_LBUTTON);
      RBUTTON=(int)GetKeyState(VK_RBUTTON);
      
      if(LBUTTON<0)
          flagLBUTTON=1;
      else if(LBUTTON>=0&&flagLBUTTON==1) flagLBUTTON=-1;
      
      if(RBUTTON<0)
          flagRBUTTON=1;
      else if(RBUTTON>=0&&flagRBUTTON==1) flagRBUTTON=-1;
      
      
      if(flagLBUTTON!=0&&flagLBUTTON==-1)
      {
          qDebug()<<"LBUTTON";
          flagLBUTTON=0;
      }
      if(flagRBUTTON!=0&&flagRBUTTON==-1)
      {
          qDebug()<<"RBUTTON";
          flagRBUTTON=0;
      }
      
      return CallNextHookEx(0, nCode, wParam,lParam);
      

      }

      int main(int argc, char *argv[])
      {
      QCoreApplication a(argc, argv);
      MouseHook = SetWindowsHookEx(WH_MOUSE_LL, MouseProc, NULL, 0);
      if(MouseHook == NULL)
      {
      qDebug() << "Hook failed";
      }
      return a.exec();
      }
      @

      alguem conhece alguma soluçao que nao utilize essa gambiarra?

      1 Reply Last reply
      0
      • R Offline
        R Offline
        Rodrigocg
        wrote on last edited by
        #3

        Achei uma soluçao melhor...

        segue:

        @#include <QtCore/QCoreApplication>
        #include <QDebug>
        #include <Windows.h>

        HHOOK MouseHook= NULL;

        using namespace std;

        LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam)
        {
        int LBUTTON,RBUTTON;
        if (nCode < 0) // do not process the message
        return CallNextHookEx(0, nCode,wParam, lParam);

        LBUTTON = GetAsyncKeyState(VK_LBUTTON);
        if(LBUTTON==-32767)
            qDebug()<<"Click1";
        
        RBUTTON = GetAsyncKeyState(VK_RBUTTON);
        if(RBUTTON==-32767)
            qDebug()<<"Click2";
        
        return CallNextHookEx(0, nCode, wParam,lParam);
        

        }

        int main(int argc, char *argv[])
        {
        QCoreApplication a(argc, argv);
        MouseHook = SetWindowsHookEx(WH_MOUSE_LL, MouseProc, NULL, 0);
        if(MouseHook == NULL)
        {
        qDebug() << "Hook failed";
        }
        return a.exec();
        }@

        1 Reply Last reply
        0

        • Login

        • Login or register to search.
        • First post
          Last post
        0
        • Categories
        • Recent
        • Tags
        • Popular
        • Users
        • Groups
        • Search
        • Get Qt Extensions
        • Unsolved