Esempio n. 1
0
        /// <summary>
        /// 开始执行工作流时触发
        /// </summary>
        /// <param name="obj">对象</param>
        private void BeginRun(RunManager obj)
        {
            //流程运行开始……
            SharedObject.Instance.Output(SharedObject.enOutputType.Trace, ResxIF.GetString("TheProcessStarted"));

            //不应该更新状态为START,不然和用户自己设置的标识冲突了
            //Task.Run(async()=> {
            //    await ControlServerService.UpdateRunStatus(obj.m_packageItem.Name, obj.m_packageItem.Version, ControlServerService.enProcessStatus.Start);
            //});


            if (FFmpegService != null)
            {
                FFmpegService.StopCaptureScreen();
                FFmpegService = null;
            }

            if (ViewModelLocator.Instance.UserPreferences.IsEnableScreenRecorder)
            {
                //屏幕录像开始……
                SharedObject.Instance.Output(SharedObject.enOutputType.Trace, ResxIF.GetString("ScreenRecordingStarted"));
                var screenRecorderFilePath = App.LocalRPAStudioDir + @"\ScreenRecorder\" + obj.m_packageItem.Name + @"(" + DateTime.Now.ToString(ResxIF.GetString("YYYYMMDD")) + ").mp4";
                FFmpegService = new FFmpegService(screenRecorderFilePath, ViewModelLocator.Instance.UserPreferences.FPS, ViewModelLocator.Instance.UserPreferences.Quality);//默认存到%localappdata%下RPASTUDIO下的ScreenRecorder目录下

                Task.Run(() =>
                {
                    FFmpegService.StartCaptureScreen();
                });

                //等待屏幕录像ffmpeg进程启动
                int wait_count = 0;
                while (!FFmpegService.IsRunning())
                {
                    wait_count++;
                    Thread.Sleep(300);
                    if (wait_count == 10)
                    {
                        break;
                    }
                }
            }


            Common.RunInUI(() => {
                m_view.Hide();

                obj.m_packageItem.IsRunning = true;

                IsWorkflowRunning      = true;
                WorkflowRunningName    = obj.m_packageItem.Name;
                WorkflowRunningToolTip = obj.m_packageItem.ToolTip;
                WorkflowRunningStatus  = ResxIF.GetString("RunningText"); //正在运行
            });
        }
Esempio n. 2
0
        private void BeginRun(RunManager obj)
        {
            SharedObject.Instance.Output(SharedObject.enOutputType.Trace, "流程运行开始……", null);
            if (this.FFmpegService != null)
            {
                this.FFmpegService.StopCaptureScreen();
                this.FFmpegService = null;
            }
            if (ViewModelLocator.Instance.UserPreferences.IsEnableScreenRecorder)
            {
                SharedObject.Instance.Output(SharedObject.enOutputType.Trace, "屏幕录像开始……", null);
                var screenCaptureSavePath = Path.Combine(
                    App.LocalRPAStudioDir,
                    "ScreenRecorder",
                    obj.m_packageItem.Name,
                    "(",
                    DateTime.Now.ToString("yyyy年MM月dd日HH时mm分ss秒"),
                    ").mp4"
                    );
                FFmpegService = new FFmpegService(screenCaptureSavePath, ViewModelLocator.Instance.UserPreferences.FPS, ViewModelLocator.Instance.UserPreferences.Quality);
                Task.Run(FFmpegService.StartCaptureScreen);

                // 三秒
                int num = 0;
                while (!FFmpegService.IsRunning())
                {
                    num++;
                    Thread.Sleep(300);
                    if (num == 10)
                    {
                        break;
                    }
                }
            }

            Common.RunInUI(() =>
            {
                ViewModelLocator.Instance.Main.m_view.Hide();

                obj.m_packageItem.IsRunning = true;

                IsWorkflowRunning      = true;
                WorkflowRunningName    = obj.m_packageItem.Name;
                WorkflowRunningToolTip = obj.m_packageItem.ToolTip;
                WorkflowRunningStatus  = "正在运行";
            });
        }