public override Task <FocusWindowResponse> FocusWindow(FocusWindowRequest request, ServerCallContext context)
        {
            Log.Info("Executing [{Name}] [{ProcessId}]", nameof(FocusWindow), request.ProcessId);
            var result = NativeMethods.SetForegroundWindow(request.ProcessId);

            return(Task.FromResult(new FocusWindowResponse()
            {
                Success = result
            }));
        }
        public override Task <SendMediaKeysReply> SendMediaKeys(SendMediaKeysRequest request, ServerCallContext context)
        {
            Log.Info("Executing [{Name}] [{MediaKey}]", nameof(SendMediaKeys), request.KeyCode);

            switch (request.KeyCode)
            {
            case SendMediaKeysRequest.Types.MediaKeyCode.NextTrack:
                NativeMethods.PressMediaKey(NativeMethods.MediaKeyCode.NextTrack);
                break;

            case SendMediaKeysRequest.Types.MediaKeyCode.PreviousTrack:
                NativeMethods.PressMediaKey(NativeMethods.MediaKeyCode.PreviousTrack);
                break;

            case SendMediaKeysRequest.Types.MediaKeyCode.PlayPause:
                NativeMethods.PressMediaKey(NativeMethods.MediaKeyCode.PlayPause);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            return(Task.FromResult(new SendMediaKeysReply()));
        }
 public override Task <LockWorkStationReply> LockWorkStation(LockWorkStationRequest request, ServerCallContext context)
 {
     Log.Info("Executing [{Name}]", nameof(LockWorkStation));
     NativeMethods.LockWorkStation();
     return(Task.FromResult(new LockWorkStationReply()));
 }
 public override Task <SendKeysReply> SendKeys(SendKeysRequest request, ServerCallContext context)
 {
     Log.Info("Executing [{Name}] {Message}", nameof(SendKeys), request.Message);
     NativeMethods.SendKeys(request.Message);
     return(Task.FromResult(new SendKeysReply()));
 }