{\r
if (i_kid->Flags & KEYBOARD_INPUT_DATA::E1) {\r
Acquire a(&m_cskidq);\r
- INPUT kid[3];\r
- int i = 0;\r
- POINT pt;\r
- GetCursorPos(&pt);\r
-\r
- if (!(i_kid->Flags & KEYBOARD_INPUT_DATA::BREAK) &&\r
- i_kid->MakeCode != 4 && i_kid->MakeCode != 5) {\r
- HWND hwnd = WindowFromPoint(pt);\r
- if (hwnd != NULL) {\r
- _TCHAR className[GANA_MAX_ATOM_LENGTH];\r
- if (GetClassName(hwnd, className, NUMBER_OF(className))) {\r
- if (_tcsicmp(className, _T("ConsoleWindowClass")) == 0) {\r
- SetForegroundWindow(hwnd);\r
- }\r
- }\r
- }\r
- if (m_dragging) {\r
- kid[i].type = INPUT_MOUSE;\r
- kid[i].mi.dx = 65535 * m_msllHookCurrent.pt.x / GetSystemMetrics(SM_CXVIRTUALSCREEN);\r
- kid[i].mi.dy = 65535 * m_msllHookCurrent.pt.y / GetSystemMetrics(SM_CYVIRTUALSCREEN);\r
- kid[i].mi.time = 0;\r
- kid[i].mi.mouseData = 0;\r
- kid[i].mi.dwExtraInfo = 0;\r
- kid[i].mi.dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_VIRTUALDESK;\r
- i++;\r
- }\r
- }\r
- kid[i].type = INPUT_MOUSE;\r
- kid[i].mi.dx = 0;\r
- kid[i].mi.dy = 0;\r
- kid[i].mi.time = 0;\r
- kid[i].mi.mouseData = 0;\r
- kid[i].mi.dwExtraInfo = 0;\r
+ INPUT kid[2];\r
+ int count = 1;\r
+\r
+ kid[0].type = INPUT_MOUSE;\r
+ kid[0].mi.dx = 0;\r
+ kid[0].mi.dy = 0;\r
+ kid[0].mi.time = 0;\r
+ kid[0].mi.mouseData = 0;\r
+ kid[0].mi.dwExtraInfo = 0;\r
switch (i_kid->MakeCode) {\r
case 1:\r
if (i_kid->Flags & KEYBOARD_INPUT_DATA::BREAK) {\r
- kid[i].mi.dwFlags = MOUSEEVENTF_LEFTUP;\r
+ kid[0].mi.dwFlags = MOUSEEVENTF_LEFTUP;\r
} else {\r
- kid[i].mi.dwFlags = MOUSEEVENTF_LEFTDOWN;\r
+ kid[0].mi.dwFlags = MOUSEEVENTF_LEFTDOWN;\r
}\r
break;\r
case 2:\r
if (i_kid->Flags & KEYBOARD_INPUT_DATA::BREAK) {\r
- kid[i].mi.dwFlags = MOUSEEVENTF_RIGHTUP;\r
+ kid[0].mi.dwFlags = MOUSEEVENTF_RIGHTUP;\r
} else {\r
- kid[i].mi.dwFlags = MOUSEEVENTF_RIGHTDOWN;\r
+ kid[0].mi.dwFlags = MOUSEEVENTF_RIGHTDOWN;\r
}\r
break;\r
case 3:\r
if (i_kid->Flags & KEYBOARD_INPUT_DATA::BREAK) {\r
- kid[i].mi.dwFlags = MOUSEEVENTF_MIDDLEUP;\r
+ kid[0].mi.dwFlags = MOUSEEVENTF_MIDDLEUP;\r
} else {\r
- kid[i].mi.dwFlags = MOUSEEVENTF_MIDDLEDOWN;\r
+ kid[0].mi.dwFlags = MOUSEEVENTF_MIDDLEDOWN;\r
}\r
break;\r
case 4:\r
if (i_kid->Flags & KEYBOARD_INPUT_DATA::BREAK) {\r
return 1;\r
} else {\r
- kid[i].mi.mouseData = WHEEL_DELTA;\r
- kid[i].mi.dwFlags = MOUSEEVENTF_WHEEL;\r
+ kid[0].mi.mouseData = WHEEL_DELTA;\r
+ kid[0].mi.dwFlags = MOUSEEVENTF_WHEEL;\r
}\r
break;\r
case 5:\r
if (i_kid->Flags & KEYBOARD_INPUT_DATA::BREAK) {\r
return 1;\r
} else {\r
- kid[i].mi.mouseData = -WHEEL_DELTA;\r
- kid[i].mi.dwFlags = MOUSEEVENTF_WHEEL;\r
+ kid[0].mi.mouseData = -WHEEL_DELTA;\r
+ kid[0].mi.dwFlags = MOUSEEVENTF_WHEEL;\r
}\r
break;\r
case 6:\r
- kid[i].mi.mouseData = XBUTTON1;\r
+ kid[0].mi.mouseData = XBUTTON1;\r
if (i_kid->Flags & KEYBOARD_INPUT_DATA::BREAK) {\r
- kid[i].mi.dwFlags = MOUSEEVENTF_XUP;\r
+ kid[0].mi.dwFlags = MOUSEEVENTF_XUP;\r
} else {\r
- kid[i].mi.dwFlags = MOUSEEVENTF_XDOWN;\r
+ kid[0].mi.dwFlags = MOUSEEVENTF_XDOWN;\r
}\r
break;\r
case 7:\r
- kid[i].mi.mouseData = XBUTTON2;\r
+ kid[0].mi.mouseData = XBUTTON2;\r
+ if (i_kid->Flags & KEYBOARD_INPUT_DATA::BREAK) {\r
+ kid[0].mi.dwFlags = MOUSEEVENTF_XUP;\r
+ } else {\r
+ kid[0].mi.dwFlags = MOUSEEVENTF_XDOWN;\r
+ }\r
+ break;\r
+ case 8:\r
+ if (i_kid->Flags & KEYBOARD_INPUT_DATA::BREAK) {\r
+ return 1;\r
+ } else {\r
+ kid[0].mi.mouseData = WHEEL_DELTA;\r
+ kid[0].mi.dwFlags = MOUSEEVENTF_HWHEEL;\r
+ }\r
+ break;\r
+ case 9:\r
if (i_kid->Flags & KEYBOARD_INPUT_DATA::BREAK) {\r
- kid[i].mi.dwFlags = MOUSEEVENTF_XUP;\r
+ return 1;\r
} else {\r
- kid[i].mi.dwFlags = MOUSEEVENTF_XDOWN;\r
+ kid[0].mi.mouseData = -WHEEL_DELTA;\r
+ kid[0].mi.dwFlags = MOUSEEVENTF_HWHEEL;\r
}\r
break;\r
default:\r
return 1;\r
break;\r
}\r
- if (i == 1) {\r
- i++;\r
- kid[i].type = INPUT_MOUSE;\r
- kid[i].mi.dx = 65535 * pt.x / GetSystemMetrics(SM_CXVIRTUALSCREEN);\r
- kid[i].mi.dy = 65535 * pt.y / GetSystemMetrics(SM_CYVIRTUALSCREEN);\r
- kid[i].mi.time = 0;\r
- kid[i].mi.mouseData = 0;\r
- kid[i].mi.dwExtraInfo = 0;\r
- kid[i].mi.dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_VIRTUALDESK;\r
+ if (!(i_kid->Flags & KEYBOARD_INPUT_DATA::BREAK) &&\r
+ i_kid->MakeCode != 4 && i_kid->MakeCode != 5 &&\r
+ i_kid->MakeCode != 8 && i_kid->MakeCode != 9) {\r
+ HWND hwnd;\r
+ POINT pt;\r
+\r
+ if (GetCursorPos(&pt) && (hwnd = WindowFromPoint(pt))) {\r
+ _TCHAR className[GANA_MAX_ATOM_LENGTH];\r
+ if (GetClassName(hwnd, className, NUMBER_OF(className))) {\r
+ if (_tcsicmp(className, _T("ConsoleWindowClass")) == 0) {\r
+ SetForegroundWindow(hwnd);\r
+ }\r
+ }\r
+ }\r
+ if (m_dragging) {\r
+ kid[0].mi.dx = 65535 * m_msllHookCurrent.pt.x / GetSystemMetrics(SM_CXVIRTUALSCREEN);\r
+ kid[0].mi.dy = 65535 * m_msllHookCurrent.pt.y / GetSystemMetrics(SM_CYVIRTUALSCREEN);\r
+ kid[0].mi.dwFlags |= MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_VIRTUALDESK;\r
+\r
+ kid[1].type = INPUT_MOUSE;\r
+ kid[1].mi.dx = 65535 * pt.x / GetSystemMetrics(SM_CXVIRTUALSCREEN);\r
+ kid[1].mi.dy = 65535 * pt.y / GetSystemMetrics(SM_CYVIRTUALSCREEN);\r
+ kid[1].mi.time = 0;\r
+ kid[1].mi.mouseData = 0;\r
+ kid[1].mi.dwExtraInfo = 0;\r
+ kid[1].mi.dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_VIRTUALDESK;\r
+\r
+ count = 2;\r
+ }\r
}\r
- SendInput(i + 1, &kid[0], sizeof(kid[0]));\r
+ SendInput(count, &kid[0], sizeof(kid[0]));\r
} else {\r
INPUT kid;\r
\r
break;\r
}\r
break;\r
+ case WM_MOUSEHWHEEL:\r
+ if (i_mid->mouseData & (1<<31)) {\r
+ kid.MakeCode = 9;\r
+ } else {\r
+ kid.MakeCode = 8;\r
+ }\r
+ break;\r
case WM_MOUSEMOVE: {\r
LONG dx = i_mid->pt.x - g_hookData->m_mousePos.x;\r
LONG dy = i_mid->pt.y - g_hookData->m_mousePos.y;\r
case WM_LBUTTONDBLCLK:\r
case WM_RBUTTONDBLCLK:\r
case WM_MBUTTONDBLCLK:\r
- case WM_MOUSEHWHEEL:\r
case WM_XBUTTONDBLCLK:\r
default:\r
return 0;\r
m_kidq.push_back(kid2);\r
SetEvent(m_readEvent);\r
}\r
- } else if (!(kid.Flags & WM_MOUSEWHEEL)) {\r
+ } else if (i_message != WM_MOUSEWHEEL && i_message != WM_MOUSEHWHEEL) {\r
m_buttonPressed = true;\r
m_msllHookCurrent = *i_mid;\r
}\r
m_kidq.push_back(kid);\r
SetEvent(m_readEvent);\r
\r
+ if (i_message == WM_MOUSEWHEEL || i_message == WM_MOUSEHWHEEL) {\r
+ kid.UnitId = 0;\r
+ kid.Flags |= KEYBOARD_INPUT_DATA::BREAK;\r
+ kid.Reserved = 0;\r
+ kid.ExtraInformation = 0;\r
+ m_kidq.push_back(kid);\r
+ SetEvent(m_readEvent);\r
+ }\r
+\r
return 1;\r
}\r
}\r