private void CaptureWindow() { // mouse hook and such WindowButtonText = "Click a Window.."; mHook = new MouseKeyHook(); MouseKeyHook.SetAction(mouseAction); }
IImageProvider GetImageProvider() { var mouseKeyHook = new MouseKeyHook(OthersViewModel.MouseClicks, OthersViewModel.KeyStrokes); switch (VideoViewModel.SelectedVideoSourceKind) { case VideoSourceKind.Window: var src = VideoViewModel.SelectedVideoSource as WindowVSLI; if (src.Window == RegionSelector.Instance.Window && OthersViewModel.StaticRegion) { return(new StaticRegionProvider(RegionSelector.Instance, _cursor, mouseKeyHook)); } Func <WColor, Color> convertColor = C => Color.FromArgb(C.A, C.R, C.G, C.B); return(new WindowProvider(() => (VideoViewModel.SelectedVideoSource as WindowVSLI).Window, convertColor(VideoViewModel.BackgroundColor), _cursor, mouseKeyHook)); case VideoSourceKind.Screen: return(new ScreenProvider((VideoViewModel.SelectedVideoSource as ScreenVSLI).Screen, _cursor, mouseKeyHook)); default: return(null); } }
protected virtual void OnMouseKeyHook(MouseHookEventArgs e) { if (MouseKeyHook != null) { MouseKeyHook.Invoke(e); } }
IImageProvider GetImageProvider() { var mouseKeyHook = new MouseKeyHook(true, true); captureScreen = Screen.AllScreens[0]; return(new ScreenProvider(captureScreen, _cursor, mouseKeyHook)); }
private void HookMouseAction(bool b) { if (b) { NativeMethods.GetCursorPos(out NativeMethods.POINT p); Main.CaptureWindowFromPoint(p.X, p.Y); } MouseKeyHook.Unhook(); WindowButtonText = "Select Window"; }
void StartRecording() { var SelectedAudioSourceId = AudioSettings.SelectedAudioSourceId; var SelectedVideoSourceKind = VideoSettings.SelectedVideoSourceKind; var SelectedVideoSource = VideoSettings.SelectedVideoSource; var Encoder = VideoSettings.Encoder; Duration = OtherSettings.CaptureDuration; Delay = OtherSettings.StartDelay; if (Duration != 0 && (Delay * 1000 > Duration)) { Status.Content = "Delay cannot be greater than Duration"; SystemSounds.Asterisk.Play(); return; } if (OtherSettings.MinimizeOnStart) { WindowState = WindowState.Minimized; } VideoSettings.Instance.VideoSourceKindBox.IsEnabled = false; VideoSettings.Instance.VideoSourceBox.IsEnabled = SelectedVideoSourceKind == VideoSourceKind.Window; // UI Buttons RecordButton.ToolTip = "Stop"; RecordButton.IconData = (RectangleGeometry)FindResource("StopIcon"); ReadyToRecord = false; int temp; string Extension = SelectedVideoSourceKind == VideoSourceKind.NoVideo ? (AudioSettings.EncodeAudio && int.TryParse(SelectedAudioSourceId, out temp) ? ".mp3" : ".wav") : (Encoder.Name == "Gif" ? ".gif" : ".avi"); lastFileName = Path.Combine(OutPath.Text, DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss") + Extension); Status.Content = Delay > 0 ? string.Format("Recording from t={0}ms...", Delay) : "Recording..."; DTimer.Stop(); Seconds = Minutes = 0; TimeManager.Content = "00:00"; DTimer.Start(); int AudioBitRate = App.IsLamePresent ? Mp3EncoderLame.SupportedBitRates[AudioSettings.AudioQuality] : 0; IAudioProvider AudioSource = null; WaveFormat wf = new WaveFormat(44100, 16, AudioSettings.Stereo ? 2 : 1); if (SelectedAudioSourceId != "-1") { int i; if (int.TryParse(SelectedAudioSourceId, out i)) { AudioSource = new WaveIn(i, VideoSettings.FrameRate, wf); } else { AudioSource = new WasapiLoopbackCapture(WasapiAudioDevice.Get(SelectedAudioSourceId), true); wf = AudioSource.WaveFormat; } } #region ImageProvider IImageProvider ImgProvider = null; Func <System.Windows.Media.Color, System.Drawing.Color> ConvertColor = (C) => System.Drawing.Color.FromArgb(C.A, C.R, C.G, C.B); var mouseKeyHook = new MouseKeyHook(OtherSettings.CaptureClicks, OtherSettings.CaptureKeystrokes); if (SelectedVideoSourceKind == VideoSourceKind.Window) { var Src = SelectedVideoSource as WindowVSLI; if (Src.Handle == RegionSelector.Instance.Handle && OtherSettings.StaticRegionCapture) { ImgProvider = new StaticRegionProvider(RegionSelector.Instance, cursor, mouseKeyHook); VideoSettings.Instance.VideoSourceBox.IsEnabled = false; } else { ImgProvider = new WindowProvider(() => (VideoSettings.SelectedVideoSource as WindowVSLI).Handle, ConvertColor(VideoSettings.BackgroundColor), cursor, mouseKeyHook); } } else if (SelectedVideoSourceKind == VideoSourceKind.Screen) { ImgProvider = new ScreenProvider((SelectedVideoSource as ScreenVSLI).Screen, cursor, mouseKeyHook); } #endregion #region VideoEncoder IVideoFileWriter VideoEncoder = null; if (Encoder.Name == "Gif") { if (GifSettings.UnconstrainedGif) { Recorder = new UnconstrainedFrameRateGifRecorder( new GifWriter(lastFileName, Repeat: GifSettings.GifRepeat ? GifSettings.GifRepeatCount : -1), ImgProvider); } else { VideoEncoder = new GifWriter(lastFileName, 1000 / VideoSettings.FrameRate, GifSettings.GifRepeat ? GifSettings.GifRepeatCount : -1); } } else if (SelectedVideoSourceKind != VideoSourceKind.NoVideo) { VideoEncoder = new AviWriter(lastFileName, ImgProvider, Encoder, VideoSettings.VideoQuality, VideoSettings.FrameRate, AudioSource, AudioBitRate == 0 ? null : new Mp3EncoderLame(wf.Channels, wf.SampleRate, AudioBitRate)); } #endregion if (Recorder == null) { if (SelectedVideoSourceKind == VideoSourceKind.NoVideo) { if (AudioSettings.EncodeAudio) { Recorder = new AudioRecorder(AudioSource, new EncodedAudioFileWriter(lastFileName, new Mp3EncoderLame(wf.Channels, wf.SampleRate, AudioBitRate))); } else { Recorder = new AudioRecorder(AudioSource, new WaveFileWriter(lastFileName, wf)); } } else { Recorder = new Recorder(VideoEncoder, ImgProvider, AudioSource); } } Recorder.RecordingStopped += (E) => Dispatcher.Invoke(() => { OnStopped(); if (E != null) { Status.Content = "Error"; MessageBox.Show(E.ToString()); } }); Recorder.Start(Delay); Recent.Add(lastFileName, VideoEncoder == null ? RecentItemType.Audio : RecentItemType.Video); }
IImageProvider GetImageProvider() { var mouseKeyHook = new MouseKeyHook(OthersViewModel.MouseClicks, OthersViewModel.KeyStrokes); switch (VideoViewModel.SelectedVideoSourceKind) { case VideoSourceKind.Window: var src = VideoViewModel.SelectedVideoSource as WindowVSLI; if (src.Window == RegionSelector.Instance.Window && OthersViewModel.StaticRegion) { return new StaticRegionProvider(RegionSelector.Instance, _cursor, mouseKeyHook); } Func<WColor, Color> convertColor = C => Color.FromArgb(C.A, C.R, C.G, C.B); return new WindowProvider(() => (VideoViewModel.SelectedVideoSource as WindowVSLI).Window, convertColor(VideoViewModel.BackgroundColor), _cursor, mouseKeyHook); case VideoSourceKind.Screen: return new ScreenProvider((VideoViewModel.SelectedVideoSource as ScreenVSLI).Screen, _cursor, mouseKeyHook); default: return null; } }