public MainForm()
        {
            InitializeComponent();

            ISOModifier.UndoModifications();

            endOfRecordSessionActions.Add(StopRecorder);
            endOfRecordSessionActions.Add(() => StopProcess(pcsx2Process));

            this.Shown += MainForm_Shown;
            Application.ApplicationExit += OnApplicationExit;
        }
        private void RecordVoiceSet(int startVoiceIdOfScene, int numberOfVoicesAvailable, int currentBatchStartId, Action missionLoadAction, Action activationAction)
        {
            ISOModifier.PrepareNextBatch(startVoiceIdOfScene, currentBatchStartId, numberOfVoicesAvailable);
            pcsx2Process = StartPcsx2();
            pcsx2Process.WaitForInputIdle();
            emulatorWindow = pcsx2Process.MainWindowHandle;
            //Wait for the emulator to load the main screen...
            WaitSeconds(12);
            emulatorViewPortWindow = WndFinder.SearchForWindow("wxWindowNR", "Slot");
            this.inputImpersonator = new InputImpersonator(emulatorViewPortWindow);

            this.inputImpersonator.SelectFrenchLanguage();
            missionLoadAction.Invoke();
            StartRecorder(currentBatchStartId, numberOfVoicesAvailable);
            WindowReorganizer.SetActiveWindow(emulatorViewPortWindow);
            activationAction.Invoke();
        }