コード例 #1
0
        public static async Task Send(InputActionExecutionContainer container, InputAction action)
        {
            Log.Debug("Running action " + action.Name);
            if (action.OverrideProcess && !string.IsNullOrEmpty(action.ProcessName))
            {
                SetTargetProcess(action);
            }
            else if (container != null)
            {
                SetTargetProcess(container);
            }

            if (action.HasKeySequences)
            {
                await SendKeyBoardSequences(action);
            }
            if (action.HasMouseSequences)
            {
                await SendMouseSequences(action);
            }
            if (action.HasScriptSequences)
            {
                await SendScripts(action);
            }

            //if (container != null)
            //    SetTargetProcess(container);
        }
コード例 #2
0
ファイル: ActionController.cs プロジェクト: eitan-j/keysndr
        public async Task <ApiResult <Object> > Execute(InputActionExecutionContainer actionContainer)
        {
            var cmd = new ExecuteInputAction(actionContainer);
            await cmd.Execute();

            return(cmd.Result);
        }
コード例 #3
0
        public void Test()
        {
            var action    = TestFactory.CreateTestInputAction();
            var container = InputActionExecutionContainer.Wrap(action);

            cmd = new ExecuteInputAction(actionProcessor, container);
            cmd.Execute().Wait(1000);
            var result = cmd.Result;

            Assert.IsNotNull(result);
            Assert.IsTrue(result.Success);

            actionProcessorMock.Verify(a => a.Process(), Times.Once);
        }
コード例 #4
0
ファイル: Sender.cs プロジェクト: samiy-xx/keysndr
        public static async Task Send(InputActionExecutionContainer container, InputAction action)
        {
            Log.Debug("Running action " + action.Name);
            if (action.OverrideProcess && !string.IsNullOrEmpty(action.ProcessName))
                SetTargetProcess(action);
            else if (container != null)
                SetTargetProcess(container);

            if (action.HasKeySequences)
                await SendKeyBoardSequences(action);
            if (action.HasMouseSequences)
                await SendMouseSequences(action);
            if (action.HasScriptSequences)
                await SendScripts(action);

            //if (container != null)
            //    SetTargetProcess(container);
        }
コード例 #5
0
        private static void SetTargetProcess(InputActionExecutionContainer container)
        {
            var hasProcess = false;

            if (container.UseForegroundWindow)
            {
                var ptr = WindowsApi.GetForegroundWindow();
                if (ptr != IntPtr.Zero)
                {
                    WindowsApi.SetFocus(ptr);
                    Sender.SetCurrentProcessTarget(ptr);
                    hasProcess = true;
                }
            }

            if (!hasProcess && container.UseDesktop)
            {
                var ptr = WindowsApi.GetDesktopWindow();
                if (ptr != IntPtr.Zero)
                {
                    WindowsApi.SetForegroundWindow(ptr);
                    WindowsApi.SetFocus(ptr);
                    Sender.SetCurrentProcessTarget(ptr);
                    hasProcess = true;
                }
            }

            if (hasProcess || string.IsNullOrEmpty(container.ProcessName))
            {
                return;
            }
            var process = WinUtils.GetProcessByName(container.ProcessName);

            if (process == null)
            {
                return;
            }

            Sender.SetCurrentProcessTarget(process.MainWindowHandle);
            WindowsApi.SetForegroundWindow(process.MainWindowHandle);
            WindowsApi.SetFocus(process.MainWindowHandle);
        }
コード例 #6
0
ファイル: Sender.cs プロジェクト: samiy-xx/keysndr
 public static async Task Send(InputActionExecutionContainer container)
 {   
     
     await Send(container, container.InputAction);
 }
コード例 #7
0
ファイル: Sender.cs プロジェクト: samiy-xx/keysndr
        private static void SetTargetProcess(InputActionExecutionContainer container)
        {
            var hasProcess = false;
            if (container.UseForegroundWindow)
            {
                var ptr = WindowsApi.GetForegroundWindow();
                if (ptr != IntPtr.Zero)
                {
                    WindowsApi.SetFocus(ptr);
                    Sender.SetCurrentProcessTarget(ptr);
                    hasProcess = true;
                }
            }

            if (!hasProcess && container.UseDesktop)
            {
                var ptr = WindowsApi.GetDesktopWindow();
                if (ptr != IntPtr.Zero)
                {
                    WindowsApi.SetForegroundWindow(ptr);
                    WindowsApi.SetFocus(ptr);
                    Sender.SetCurrentProcessTarget(ptr);
                    hasProcess = true;
                }
            }

            if (hasProcess || string.IsNullOrEmpty(container.ProcessName))
                return;
            var process = WinUtils.GetProcessByName(container.ProcessName);
            if (process == null)
                return;

            Sender.SetCurrentProcessTarget(process.MainWindowHandle);
            WindowsApi.SetForegroundWindow(process.MainWindowHandle);
            WindowsApi.SetFocus(process.MainWindowHandle);
        }
コード例 #8
0
 public ActionProcessor(InputActionExecutionContainer c)
     : this()
 {
     Container = c;
 }
コード例 #9
0
ファイル: ActionProcessor.cs プロジェクト: samiy-xx/keysndr
 public ActionProcessor(InputActionExecutionContainer c)
     : this()
 {
     Container = c;
 }
コード例 #10
0
ファイル: ActionController.cs プロジェクト: samiy-xx/keysndr
 public async Task<ApiResult<Object>> Execute(InputActionExecutionContainer actionContainer)
 {
     var cmd = new ExecuteInputAction(actionContainer);
     await cmd.Execute();
     return cmd.Result;
 }
コード例 #11
0
 public static async Task Send(InputActionExecutionContainer container)
 {
     await Send(container, container.InputAction);
 }
コード例 #12
0
 public ExecuteInputAction(IActionProcessor p, InputActionExecutionContainer c)
 {
     actionContainer = c;
     processor       = p;
     p.Container     = actionContainer;
 }
コード例 #13
0
 public ExecuteInputAction(InputActionExecutionContainer c)
 {
     actionContainer = c;
     processor       = new ActionProcessor(actionContainer);
 }