modethread.h 827 B

123456789101112131415161718192021222324252627282930313233343536
  1. #ifndef MODETHREAD_H
  2. #define MODETHREAD_H
  3. #include <QThread>
  4. #include <windows.h>
  5. class ModeThread : public QThread
  6. {
  7. Q_OBJECT
  8. public:
  9. ModeThread(){}
  10. void setMode(int m){ mode = m; }
  11. private:
  12. int mode = 0; // 0 - on/off, 1 - on, 2 - off
  13. void press() {
  14. keybd_event(VK_NUMLOCK, 0, KEYEVENTF_KEYUP, 0);
  15. keybd_event(VK_NUMLOCK, 0, KEYEVENTF_EXTENDEDKEY, 0);
  16. keybd_event(VK_NUMLOCK, 0, KEYEVENTF_KEYUP, 0);
  17. }
  18. protected:
  19. void run() override{
  20. forever{
  21. if (mode == 0) return;
  22. if (mode == 1 && !(bool)GetKeyState(VK_NUMLOCK))
  23. press();
  24. if (mode == 2 && (bool)GetKeyState(VK_NUMLOCK))
  25. press();
  26. msleep(100);
  27. }
  28. }
  29. };
  30. #endif // MODETHREAD_H