|
- using CefSharp;
- using DamnOverSharp.Helpers;
- using Gma.System.MouseKeyHook;
- using System.Windows;
-
- namespace DamnOverSharp.Renderers.Chromium
- {
- internal class ChromiumInteractionManager
- {
- private ChromiumRenderer Owner;
- private IKeyboardMouseEvents GlobalInputHook;
-
- public Point Offset = new Point(0, 0);
-
- internal ChromiumInteractionManager(ChromiumRenderer owner)
- {
- Owner = owner;
-
- GlobalInputHook = Hook.GlobalEvents();
-
- GlobalInputHook.MouseDownExt += GlobalMouseDown;
- GlobalInputHook.MouseUpExt += GlobalMouseUp;
- GlobalInputHook.MouseWheel += GlobalMouseWheel;
-
- GlobalInputHook.KeyDown += GlobalKeyDown;
- GlobalInputHook.KeyUp += GlobalKeyUp;
- GlobalInputHook.KeyPress += GlobalKeyPress;
- }
-
- private void GlobalKeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
- {
- Rect windowRect = WindowHelper.GetWindowRectangle(Owner.InternalBitmapRenderer.HookedProcess.MainWindowHandle);
- Point cursorPos = MouseHelper.GetCursorPosition();
-
- if (windowRect.Contains(MouseHelper.GetCursorPosition()))
- {
- Point relativeCursorPos = new Point(cursorPos.X - windowRect.X - Offset.X, cursorPos.Y - windowRect.Y - Offset.Y);
-
- if (!Owner.InternalBrowser.IsBrowserInitialized)
- {
- return;
- }
-
- Owner.InternalBrowser.GetBrowser().GetHost().SendKeyEvent(new KeyEvent() { WindowsKeyCode = (int)e.KeyChar, Type = KeyEventType.Char });
- }
- }
-
- private void GlobalKeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
- {
- Rect windowRect = WindowHelper.GetWindowRectangle(Owner.InternalBitmapRenderer.HookedProcess.MainWindowHandle);
- Point cursorPos = MouseHelper.GetCursorPosition();
-
- if (windowRect.Contains(MouseHelper.GetCursorPosition()))
- {
- Point relativeCursorPos = new Point(cursorPos.X - windowRect.X - Offset.X, cursorPos.Y - windowRect.Y - Offset.Y);
-
- if (!Owner.InternalBrowser.IsBrowserInitialized)
- {
- return;
- }
-
- Owner.InternalBrowser.GetBrowser().GetHost().SendKeyEvent(new KeyEvent() { WindowsKeyCode = (int)e.KeyCode, Type = KeyEventType.KeyDown });
- }
- }
-
- private void GlobalKeyUp(object sender, System.Windows.Forms.KeyEventArgs e)
- {
- Rect windowRect = WindowHelper.GetWindowRectangle(Owner.InternalBitmapRenderer.HookedProcess.MainWindowHandle);
- Point cursorPos = MouseHelper.GetCursorPosition();
-
- if (windowRect.Contains(MouseHelper.GetCursorPosition()))
- {
- Point relativeCursorPos = new Point(cursorPos.X - windowRect.X - Offset.X, cursorPos.Y - windowRect.Y - Offset.Y);
-
- if (!Owner.InternalBrowser.IsBrowserInitialized)
- {
- return;
- }
-
- Owner.InternalBrowser.GetBrowser().GetHost().SendKeyEvent(new KeyEvent() { WindowsKeyCode = (int)e.KeyCode, Type = KeyEventType.KeyUp });
- }
- }
-
- public void GlobalMouseMove(object sender, MouseEventExtArgs e)
- {
- Rect windowRect = WindowHelper.GetWindowRectangle(Owner.InternalBitmapRenderer.HookedProcess.MainWindowHandle);
- Point cursorPos = MouseHelper.GetCursorPosition();
-
- if (windowRect.Contains(MouseHelper.GetCursorPosition()))
- {
- Point relativeCursorPos = new Point(cursorPos.X - windowRect.X - Offset.X, cursorPos.Y - windowRect.Y - Offset.Y);
-
- if (!Owner.InternalBrowser.IsBrowserInitialized)
- {
- return;
- }
-
- if (Owner.InternalBrowser.IsBrowserInitialized)
- {
- Owner.InternalBrowser.GetBrowser().GetHost().SendMouseMoveEvent((int)relativeCursorPos.X, (int)relativeCursorPos.Y, false, CefEventFlags.IsLeft);
- }
- }
- }
-
- private void GlobalMouseDown(object sender, MouseEventExtArgs e)
- {
- Rect windowRect = WindowHelper.GetWindowRectangle(Owner.InternalBitmapRenderer.HookedProcess.MainWindowHandle);
- Point cursorPos = MouseHelper.GetCursorPosition();
-
- if (windowRect.Contains(MouseHelper.GetCursorPosition()))
- {
- Point relativeCursorPos = new Point(cursorPos.X - windowRect.X - Offset.X, cursorPos.Y - windowRect.Y - Offset.Y);
-
- if (!Owner.InternalBrowser.IsBrowserInitialized)
- {
- return;
- }
-
- if(e.Button == System.Windows.Forms.MouseButtons.Left)
- {
- Owner.InternalBrowser.GetBrowser().GetHost().SendMouseClickEvent((int)relativeCursorPos.X, (int)relativeCursorPos.Y, MouseButtonType.Left, false, 1, CefEventFlags.None);
- }
- else if (e.Button == System.Windows.Forms.MouseButtons.Right)
- {
- Owner.InternalBrowser.GetBrowser().GetHost().SendMouseClickEvent((int)relativeCursorPos.X, (int)relativeCursorPos.Y, MouseButtonType.Right, false, 1, CefEventFlags.None);
- }
- }
- }
-
- private void GlobalMouseUp(object sender, MouseEventExtArgs e)
- {
- Rect windowRect = WindowHelper.GetWindowRectangle(Owner.InternalBitmapRenderer.HookedProcess.MainWindowHandle);
- Point cursorPos = MouseHelper.GetCursorPosition();
-
- if (windowRect.Contains(MouseHelper.GetCursorPosition()))
- {
- Point relativeCursorPos = new Point(cursorPos.X - windowRect.X - Offset.X, cursorPos.Y - windowRect.Y - Offset.Y);
-
- if (!Owner.InternalBrowser.IsBrowserInitialized)
- {
- return;
- }
-
- if (e.Button == System.Windows.Forms.MouseButtons.Left)
- {
- Owner.InternalBrowser.GetBrowser().GetHost().SendMouseClickEvent((int)relativeCursorPos.X, (int)relativeCursorPos.Y, MouseButtonType.Left, true, 1, CefEventFlags.None);
- }
- else if (e.Button == System.Windows.Forms.MouseButtons.Right)
- {
- Owner.InternalBrowser.GetBrowser().GetHost().SendMouseClickEvent((int)relativeCursorPos.X, (int)relativeCursorPos.Y, MouseButtonType.Right, true, 1, CefEventFlags.None);
- }
- }
- }
-
- private void GlobalMouseWheel(object sender, System.Windows.Forms.MouseEventArgs e)
- {
- Rect windowRect = WindowHelper.GetWindowRectangle(Owner.InternalBitmapRenderer.HookedProcess.MainWindowHandle);
- Point cursorPos = MouseHelper.GetCursorPosition();
-
- if (windowRect.Contains(MouseHelper.GetCursorPosition()))
- {
- Point relativeCursorPos = new Point(cursorPos.X - windowRect.X - Offset.X, cursorPos.Y - windowRect.Y - Offset.Y);
-
- if (!Owner.InternalBrowser.IsBrowserInitialized)
- {
- return;
- }
-
- Owner.InternalBrowser.GetBrowser().GetHost().SendMouseWheelEvent((int)relativeCursorPos.X, (int)relativeCursorPos.Y, 0, e.Delta, CefEventFlags.None);
- }
- }
-
- public void Destroy()
- {
- GlobalInputHook.MouseDownExt -= GlobalMouseDown;
- GlobalInputHook.MouseUpExt -= GlobalMouseUp;
- //GlobalMouseHook.MouseMoveExt -= GlobalMouseMove;
- GlobalInputHook.MouseWheelExt -= GlobalMouseWheel;
-
- GlobalInputHook.Dispose();
- }
- }
- }
|