Пример #1
0
 private void OnKeyDown(Input.InputEventArgs e)
 {
     if (!isRecording)
     {
         return;
     }
     if (e.Key == KeyboardKey.Escape)
     {
         StopRecordPlugins();
         InputDriver.Instance.CallNext   = true;
         InputDriver.Instance.OnKeyDown -= OnKeyDown;
         InputDriver.Instance.OnKeyUp   -= OnKeyUp;
         GenericTools.restore(GenericTools.mainWindow);
         return;
     }
     // if (e.Key == KeyboardKey. 255) return;
     try
     {
         if (mainTabControl.SelectedContent is Views.WFDesigner view)
         {
             if (view.lastinserted != null && view.lastinserted is Activities.TypeText)
             {
                 Log.Debug("re-use existing TypeText");
                 var item = (Activities.TypeText)view.lastinserted;
                 item.AddKey(new Activities.vKey((FlaUI.Core.WindowsAPI.VirtualKeyShort)e.Key, false), view.lastinsertedmodel);
             }
             else
             {
                 Log.Debug("Add new TypeText");
                 var rme = new Activities.TypeText();
                 view.lastinsertedmodel = view.addActivity(rme);
                 rme.AddKey(new Activities.vKey((FlaUI.Core.WindowsAPI.VirtualKeyShort)e.Key, false), view.lastinsertedmodel);
                 view.lastinserted = rme;
             }
         }
     }
     catch (Exception ex)
     {
         Log.Error(ex.ToString());
     }
 }
Пример #2
0
 private void OnKeyUp(Input.InputEventArgs e)
 {
     if (!isRecording)
     {
         return;
     }
     // if (e.KeyValue == 255) return;
     try
     {
         if (mainTabControl.SelectedContent is Views.WFDesigner view)
         {
             if (view.lastinserted != null && view.lastinserted is Activities.TypeText)
             {
                 Log.Debug("re-use existing TypeText");
                 var item = (Activities.TypeText)view.lastinserted;
                 item.AddKey(new Activities.vKey((FlaUI.Core.WindowsAPI.VirtualKeyShort)e.Key, true), view.lastinsertedmodel);
             }
         }
     }
     catch (Exception ex)
     {
         Log.Error(ex.ToString());
     }
 }
Пример #3
0
 private void _OnKeyUp(OpenRPA.Input.InputEventArgs e)
 {
     AddKey(new Input.vKey((FlaUI.Core.WindowsAPI.VirtualKeyShort)e.Key, true));
     NotifyPropertyChanged("Text");
 }
Пример #4
0
 // private bool mouseDownWaiting = false;
 private void RaiseOnMouseMove(InputEventArgs e)
 {
     OnMouseMove?.Invoke(e);
 }
Пример #5
0
        private IntPtr LowLevelMouseProc(int nCode, IntPtr wParam, IntPtr lParam)
        {
            try
            {
                if (AllowOneClick)
                {
                    if ((int)wParam == NativeMethods.WM_LBUTTONDOWN || (int)wParam == NativeMethods.WM_RBUTTONDOWN || (int)wParam == NativeMethods.WM_MBUTTONDOWN)
                    {
                        return(NativeMethods.CallNextHookEx(IntPtr.Zero, nCode, wParam, lParam));
                    }
                    if ((int)wParam == NativeMethods.WM_LBUTTONUP || (int)wParam == NativeMethods.WM_RBUTTONUP || (int)wParam == NativeMethods.WM_MBUTTONUP)
                    {
                        AllowOneClick = false;
                        return(NativeMethods.CallNextHookEx(IntPtr.Zero, nCode, wParam, lParam));
                    }
                }
                if (currentprocessid == 0)
                {
                    currentprocessid = System.Diagnostics.Process.GetCurrentProcess().Id;
                }
                if (nCode >= NativeMethods.HC_ACTION)
                {
                    var e  = new InputEventArgs();
                    var pt = new NativeMethods.POINT();
                    NativeMethods.GetPhysicalCursorPos(ref pt);
                    e.X        = pt.x;
                    e.Y        = pt.y;
                    e.AltKey   = NativeMethods.HIBYTE(NativeMethods.GetKeyState(NativeMethods.VK_LMENU) | NativeMethods.GetKeyState(NativeMethods.VK_RMENU)) != 0;
                    e.CtrlKey  = NativeMethods.HIBYTE(NativeMethods.GetKeyState(NativeMethods.VK_LCONTROL) | NativeMethods.GetKeyState(NativeMethods.VK_RCONTROL)) != 0;
                    e.ShiftKey = NativeMethods.HIBYTE(NativeMethods.GetKeyState(NativeMethods.VK_LSHIFT) | NativeMethods.GetKeyState(NativeMethods.VK_RSHIFT)) != 0;
                    e.WinKey   = NativeMethods.HIBYTE(NativeMethods.GetKeyState(NativeMethods.VK_LWIN) | NativeMethods.GetKeyState(NativeMethods.VK_RWIN)) != 0;

                    switch ((int)wParam)
                    {
                    case NativeMethods.WM_LBUTTONUP:
                        e.Type   = InputEventType.MouseUp;
                        e.Button = MouseButton.Left;
                        if (!AllowOneClick)
                        {
                            RaiseOnMouseUp(e);
                        }
                        //OnInput(e);
                        break;

                    case NativeMethods.WM_RBUTTONUP:
                        e.Type   = InputEventType.MouseUp;
                        e.Button = MouseButton.Right;
                        if (!AllowOneClick)
                        {
                            RaiseOnMouseUp(e);
                        }
                        //OnInput(e);
                        break;

                    case NativeMethods.WM_MBUTTONUP:
                        e.Type   = InputEventType.MouseUp;
                        e.Button = MouseButton.Middle;
                        if (!AllowOneClick)
                        {
                            RaiseOnMouseUp(e);
                        }
                        //OnInput(e);
                        break;

                    case NativeMethods.WM_LBUTTONDOWN:
                        e.Type   = InputEventType.MouseDown;
                        e.Button = MouseButton.Left;
                        if (!AllowOneClick)
                        {
                            RaiseOnMouseDown(e);
                        }
                        //OnInput(e);
                        break;

                    case NativeMethods.WM_RBUTTONDOWN:
                        e.Type   = InputEventType.MouseDown;
                        e.Button = MouseButton.Right;
                        if (!AllowOneClick)
                        {
                            RaiseOnMouseDown(e);
                        }
                        //OnInput(e);
                        break;

                    case NativeMethods.WM_MBUTTONDOWN:
                        e.Type   = InputEventType.MouseDown;
                        e.Button = MouseButton.Middle;
                        if (!AllowOneClick)
                        {
                            RaiseOnMouseDown(e);
                        }
                        //OnInput(e);
                        break;

                    case NativeMethods.WM_MOUSEMOVE:
                        e.Type = InputEventType.MouseMove;
                        if (!AllowOneClick)
                        {
                            RaiseOnMouseMove(e);
                        }
                        //OnInput(e);
                        break;
                    }
                    if (CallNext || (int)wParam == NativeMethods.WM_MOUSEMOVE || (int)wParam == NativeMethods.WM_MouseWheel)
                    {
                        // if((int)wParam != WM_MOUSEMOVE) Log.Debug("CallNextHookEx: " + CallNext);
                        return(NativeMethods.CallNextHookEx(IntPtr.Zero, nCode, wParam, lParam));
                    }
                    try
                    {
                        if (e.Element != null && e.Element.ProcessId == currentprocessid)
                        {
                            // if ((int)wParam != WM_MOUSEMOVE) Log.Debug("CallNextHookEx: " + CallNext);
                            return(NativeMethods.CallNextHookEx(IntPtr.Zero, nCode, wParam, lParam));
                        }
                    }
                    catch (Exception ex)
                    {
                        Log.Error(ex, "");
                        return(NativeMethods.CallNextHookEx(IntPtr.Zero, nCode, wParam, lParam));
                    }
                    // if ((int)wParam != WM_MOUSEMOVE) Log.Debug("Skip CallNextHookEx: " + CallNext);
                    return((IntPtr)1);
                }
                else
                {
                    return(NativeMethods.CallNextHookEx(IntPtr.Zero, nCode, wParam, lParam));
                }
            }
            catch (Exception ex)
            {
                System.Diagnostics.Trace.WriteLine("LowLevelMouseProc: " + ex.Message);
                return(IntPtr.Zero);
            }
        }
Пример #6
0
        private IntPtr LowLevelMouseProc(Int32 nCode, IntPtr wParam, IntPtr lParam)
        {
            if (SkipEvent)
            {
                if (CallNext)
                {
                    return(CallNextHookEx(IntPtr.Zero, nCode, wParam, lParam));
                }
                return((IntPtr)1);
            }
            if (currentprocessid == 0)
            {
                currentprocessid = System.Diagnostics.Process.GetCurrentProcess().Id;
            }
            if (nCode >= HC_ACTION)
            {
                var e  = new InputEventArgs();
                var pt = new POINT();
                GetPhysicalCursorPos(ref pt);
                e.X        = pt.x;
                e.Y        = pt.y;
                e.AltKey   = HIBYTE(GetKeyState(VK_LMENU) | GetKeyState(VK_RMENU)) != 0;
                e.CtrlKey  = HIBYTE(GetKeyState(VK_LCONTROL) | GetKeyState(VK_RCONTROL)) != 0;
                e.ShiftKey = HIBYTE(GetKeyState(VK_LSHIFT) | GetKeyState(VK_RSHIFT)) != 0;
                e.WinKey   = HIBYTE(GetKeyState(VK_LWIN) | GetKeyState(VK_RWIN)) != 0;

                switch ((Int32)wParam)
                {
                case WM_LBUTTONUP:
                    e.Type   = InputEventType.MouseUp;
                    e.Button = MouseButton.Left;
                    RaiseOnMouseUp(e);
                    //OnInput(e);
                    break;

                case WM_RBUTTONUP:
                    e.Type   = InputEventType.MouseUp;
                    e.Button = MouseButton.Right;
                    RaiseOnMouseUp(e);
                    //OnInput(e);
                    break;

                case WM_MBUTTONUP:
                    e.Type   = InputEventType.MouseUp;
                    e.Button = MouseButton.Middle;
                    RaiseOnMouseUp(e);
                    //OnInput(e);
                    break;

                case WM_LBUTTONDOWN:
                    e.Type   = InputEventType.MouseDown;
                    e.Button = MouseButton.Left;
                    RaiseOnMouseDown(e);
                    //OnInput(e);
                    break;

                case WM_RBUTTONDOWN:
                    e.Type   = InputEventType.MouseDown;
                    e.Button = MouseButton.Right;
                    RaiseOnMouseDown(e);
                    //OnInput(e);
                    break;

                case WM_MBUTTONDOWN:
                    e.Type   = InputEventType.MouseDown;
                    e.Button = MouseButton.Middle;
                    RaiseOnMouseDown(e);
                    //OnInput(e);
                    break;

                case WM_MOUSEMOVE:
                    e.Type = InputEventType.MouseMove;
                    RaiseOnMouseMove(e);
                    //OnInput(e);
                    break;
                }
                if (CallNext || (Int32)wParam == WM_MOUSEMOVE)
                {
                    // if((Int32)wParam != WM_MOUSEMOVE) Log.Debug("CallNextHookEx: " + CallNext);
                    return(CallNextHookEx(IntPtr.Zero, nCode, wParam, lParam));
                }
                try
                {
                    if (e.Element != null && e.Element.ProcessId == currentprocessid)
                    {
                        // if ((Int32)wParam != WM_MOUSEMOVE) Log.Debug("CallNextHookEx: " + CallNext);
                        return(CallNextHookEx(IntPtr.Zero, nCode, wParam, lParam));
                    }
                }
                catch (Exception ex)
                {
                    Log.Error(ex, "");
                    return(CallNextHookEx(IntPtr.Zero, nCode, wParam, lParam));
                }
                // if ((Int32)wParam != WM_MOUSEMOVE) Log.Debug("Skip CallNextHookEx: " + CallNext);
                return((IntPtr)1);
            }
            else
            {
                return(CallNextHookEx(IntPtr.Zero, nCode, wParam, lParam));
            }
        }