123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360 |
- #include "stdafx.h"
- #include "Hid_UI.h"
- #include "AutoFunc.h"
- Hid_UI g_hid;
- Hid_UI::Hid_UI()
- {
- m_AsciiMap = new map<char, ASCII_NODE>();
- InitAsciiMap();
- }
- Hid_UI::~Hid_UI()
- {
- m_AsciiMap->clear();
- delete m_AsciiMap;
- m_AsciiMap = NULL;
- }
- bool Hid_UI::InitUI()
- {
- return InitHid();
- }
- void Hid_UI::InitAsciiMap()
- {
- ASCII_NODE node;
- char code = 'a';
- //a - z
- while (code <= 'z')
- {
- node.AsciiComb.Shift = 0;
- node.AsciiComb.HidCode = HID_A + (code - 'a');
- (*m_AsciiMap)[code] = node;
- ++code;
- }
- //A - Z
- code = 'A';
- while (code <= 'Z')
- {
- node.AsciiComb.Shift = 1;
- node.AsciiComb.HidCode = HID_A + (code - 'A');
- (*m_AsciiMap)[code] = node;
- ++code;
- }
- //0
- code = '0';
- node.AsciiComb.Shift = 0;
- node.AsciiComb.HidCode = HID_0;
- (*m_AsciiMap)[code] = node;
- //Shift 0
- code = ')';
- node.AsciiComb.Shift = 1;
- node.AsciiComb.HidCode = HID_0;
- (*m_AsciiMap)[code] = node;
- //1 - 9
- code = '1';
- while (code <= '9')
- {
- node.AsciiComb.Shift = 0;
- node.AsciiComb.HidCode = HID_1 + (code - '1');
- (*m_AsciiMap)[code] = node;
- ++code;
- }
- //Shift 1 - 9
- char sz1To9[9] = { '!', '@', '#','$', '%','^', '&','*', '('};
- for (DWORD i = 0; i < 9; i++)
- {
- code = sz1To9[i];
- node.AsciiComb.Shift = 1;
- node.AsciiComb.HidCode = (unsigned char)(HID_1 + i);
- (*m_AsciiMap)[code] = node;
- }
- //特殊引号,1左
- code = '`';
- node.AsciiComb.Shift = 0;
- node.AsciiComb.HidCode = HID_TYINH;
- (*m_AsciiMap)[code] = node;
- //Shift 特殊引号,1左
- code = '~';
- node.AsciiComb.Shift = 1;
- node.AsciiComb.HidCode = HID_TYINH;
- (*m_AsciiMap)[code] = node;
- //其他符号共 10 个
- //1.minus
- code = '-';
- node.AsciiComb.Shift = 0;
- node.AsciiComb.HidCode = HID_MINUS;
- (*m_AsciiMap)[code] = node;
- //Shift -
- code = '_';
- node.AsciiComb.Shift = 1;
- node.AsciiComb.HidCode = HID_MINUS;
- (*m_AsciiMap)[code] = node;
- //2.equal
- code = '=';
- node.AsciiComb.Shift = 0;
- node.AsciiComb.HidCode = HID_EQUAL;
- (*m_AsciiMap)[code] = node;
- //Shift
- code = '+';
- node.AsciiComb.Shift = 1;
- node.AsciiComb.HidCode = HID_EQUAL;
- (*m_AsciiMap)[code] = node;
- //3.LKUOH
- code = '[';
- node.AsciiComb.Shift = 0;
- node.AsciiComb.HidCode = HID_LKUOH;
- (*m_AsciiMap)[code] = node;
- //Shift
- code = '{';
- node.AsciiComb.Shift = 1;
- node.AsciiComb.HidCode = HID_LKUOH;
- (*m_AsciiMap)[code] = node;
- //4.RKUOH
- code = ']';
- node.AsciiComb.Shift = 0;
- node.AsciiComb.HidCode = HID_RKUOH;
- (*m_AsciiMap)[code] = node;
- //Shift
- code = '}';
- node.AsciiComb.Shift = 1;
- node.AsciiComb.HidCode = HID_RKUOH;
- (*m_AsciiMap)[code] = node;
- //5.OR
- code = '\\';
- node.AsciiComb.Shift = 0;
- node.AsciiComb.HidCode = HID_OR;
- (*m_AsciiMap)[code] = node;
- //Shift
- code = '|';
- node.AsciiComb.Shift = 1;
- node.AsciiComb.HidCode = HID_OR;
- (*m_AsciiMap)[code] = node;
- //6.FENH
- code = ';';
- node.AsciiComb.Shift = 0;
- node.AsciiComb.HidCode = HID_FENH;
- (*m_AsciiMap)[code] = node;
- //Shift
- code = ':';
- node.AsciiComb.Shift = 1;
- node.AsciiComb.HidCode = HID_FENH;
- (*m_AsciiMap)[code] = node;
- //7.YINH
- code = '\'';
- node.AsciiComb.Shift = 0;
- node.AsciiComb.HidCode = HID_YINH;
- (*m_AsciiMap)[code] = node;
- //Shift
- code = '\"';
- node.AsciiComb.Shift = 1;
- node.AsciiComb.HidCode = HID_YINH;
- (*m_AsciiMap)[code] = node;
- //8.DOUH
- code = ',';
- node.AsciiComb.Shift = 0;
- node.AsciiComb.HidCode = HID_DOUH;
- (*m_AsciiMap)[code] = node;
- //Shift
- code = '<';
- node.AsciiComb.Shift = 1;
- node.AsciiComb.HidCode = HID_DOUH;
- (*m_AsciiMap)[code] = node;
- //9.JUH
- code = '.';
- node.AsciiComb.Shift = 0;
- node.AsciiComb.HidCode = HID_JUH;
- (*m_AsciiMap)[code] = node;
- //Shift
- code = '>';
- node.AsciiComb.Shift = 1;
- node.AsciiComb.HidCode = HID_JUH;
- (*m_AsciiMap)[code] = node;
- //10.XIEH
- code = '/';
- node.AsciiComb.Shift = 0;
- node.AsciiComb.HidCode = HID_XIEH;
- (*m_AsciiMap)[code] = node;
- //Shift
- code = '?';
- node.AsciiComb.Shift = 1;
- node.AsciiComb.HidCode = HID_XIEH;
- (*m_AsciiMap)[code] = node;
- //Tab
- code = '\t';
- node.AsciiComb.Shift = 0;
- node.AsciiComb.HidCode = HID_TAB;
- (*m_AsciiMap)[code] = node;
- //space
- code = ' ';
- node.AsciiComb.Shift = 0;
- node.AsciiComb.HidCode = HID_SPACE;
- (*m_AsciiMap)[code] = node;
- }
- bool Hid_UI::InputAsciiString(const char *pStr,DWORD timeperiod)
- {
- bool ret = true;
- size_t Len = strlen(pStr);
- map<char, ASCII_NODE>::iterator iter;
- for (size_t i = 0; i < Len; i++)
- {
- iter = (*m_AsciiMap).find(pStr[i]);
- if (iter != (*m_AsciiMap).end())
- {
- if (iter->second.AsciiComb.Shift)
- {
- ret = Key_Down(HID_LEFTSHIFT);
- }
- ret &= Key_Hit(iter->second.AsciiComb.HidCode, timeperiod);
- if (iter->second.AsciiComb.Shift)
- {
- ret &= Key_Up(HID_LEFTSHIFT);
- }
-
- if (ret == false)
- {
- break;
- }
- }
- }
- return ret;
- }
- bool Hid_UI::MoveToPos(INT X, INT Y, DWORD Radious)
- {
- POINT CurPt;
- DWORD Direction = 1;
- DWORD JumpDistanceX = MAX_JUMP_DISTANCE;
- DWORD JumpDistanceY = MAX_JUMP_DISTANCE;
- INT ORG_JUMPX = 0;
- INT ORG_JUMPY = 0;
- do
- {
- int cxIcon = GetSystemMetrics(SM_CXSCREEN);
- int cyIcon = GetSystemMetrics(SM_CYSCREEN);
- if ((X >= cxIcon) || (Y >= cyIcon))
- {
- return false;
- }
- GetCursorPos(&CurPt);
- DWORD DistanceX = abs(X - CurPt.x);
- DWORD DistanceY = abs(Y - CurPt.y);
- BOOL MoveX = (DistanceX > Radious);
- BOOL MoveY = (DistanceY > Radious);
- if (MoveX == FALSE && MoveY == FALSE)
- {
- return true;
- }
- //X
- INT JUMPX = 0;
- if (MoveX)
- {
- JUMPX = min(JumpDistanceX, DistanceX);
- if (CurPt.x > X)
- {
- JUMPX = -JUMPX;
- }
- //需要调整
- ORG_JUMPX *= JUMPX;
- if (ORG_JUMPX < 0)
- {
- //cross
- JumpDistanceX = JumpDistanceX / 2;
- if (JumpDistanceX == 0)
- {
- JumpDistanceX = 1;
- }
- }
- ORG_JUMPX = JUMPX;
- }
- //Y
- INT JUMPY = 0;
- if (MoveY)
- {
- JUMPY = min(JumpDistanceY, DistanceY);
- if (CurPt.y > Y)
- {
- JUMPY = -JUMPY;
- }
- //需要调整
- ORG_JUMPY *= JUMPY;
- if (ORG_JUMPY < 0)
- {
- //cross
- JumpDistanceY = JumpDistanceY / 2;
- if (JumpDistanceY == 0)
- {
- JumpDistanceY = 1;
- }
- }
- ORG_JUMPY = JUMPY;
- }
- if (Mouse_Move(JUMPX, JUMPY) == false)
- {
- break;
- }
- Sleep(50);
- } while (1);
- return false;
-
- }
|