The main class for the Screen Capture Engine.
public class ScreenCaptureEngine : IDisposable Public Class ScreenCaptureEngineImplements System.IDisposable
public ref class ScreenCaptureEngine : public System.IDisposable Defines screen capture structures, and class objects, captures an area of the screen, and then counts the number of resources in a EXE file
using Leadtools;using Leadtools.Codecs;using Leadtools.ScreenCapture;public void ScreenCaptureEngineExample(){// Startup the ScreenCaptureScreenCaptureEngine.Startup();// Define a ScreenCaptureEngine class objectScreenCaptureEngine scEngine = new ScreenCaptureEngine();// Define an EventHandler for CaptureInformationscEngine.CaptureInformation += new EventHandler<ScreenCaptureInformationEventArgs>(scEngine_CaptureInformation);// Define the Help Callback that will run whenever the Help button is pressed on the dialogsScreenCaptureHelpCallback helpCallback = new ScreenCaptureHelpCallback(HelpCallback);// Define ScreenCaptureAreaOptions and fill it using dialogScreenCaptureAreaOptions scAreaOptions = ScreenCaptureAreaOptions.Empty;// Get the default optionsscAreaOptions = ScreenCaptureEngine.DefaultCaptureAreaOptions;// Open the dialog allowing the user to change the values// NOTE: To fill the structure manually, you can write:// Cursor drawCursor = Cursors.Cross;// scAreaOptions.AreaType = ScreenCaptureAreaType.Rectangle;// scAreaOptions.DrawCursor = drawCursor;// scAreaOptions.DrawLineColor = Color.Red;// scAreaOptions.DrawLineStyle = ScreenCaptureAreaLineStyle.Solid;// scAreaOptions.EllipseHeight = 0;// scAreaOptions.EllipseWidth = 0;// scAreaOptions.FillBackgroundColor = Color.Black;// scAreaOptions.FillForegroundColor = Color.White;// scAreaOptions.FillPattern = ScreenCaptureAreaFillPattern.Solid;// scAreaOptions.Flags = ScreenCaptureAreaFlags.ShowInfoWindow;// scAreaOptions.InfoWindowBounds = new Rectangle(ScreenCaptureAreaOptions.LeftInfoWindowPosition, ScreenCaptureAreaOptions.TopInfoWindowPosition, ScreenCaptureAreaOptions.MediumInfoWindowSize, ScreenCaptureAreaOptions.MediumInfoWindowSize);// scAreaOptions.TextBackgroundColor = Color.White;// scAreaOptions.TextForegroundColor = Color.Black;// scAreaOptions.Zoom = ScreenCaptureAreaZoom.Normal;scEngine.ShowCaptureAreaOptionsDialog(null, ScreenCaptureDialogFlags.CaptureAreaOptionsContextHelp, scAreaOptions, true, helpCallback);// Define ScreenCaptureOptions and fill it using dialogScreenCaptureOptions scOptions = ScreenCaptureOptions.Empty;// Set the ScreenCaptureHotKeyCallback, so that it gets called if the hotkey is set in the dialogScreenCaptureHotkeyCallback hotkeyCallback = new ScreenCaptureHotkeyCallback(HotKeyCallback);ScreenCaptureEngine.SetCaptureHotkeyCallback(hotkeyCallback);// Open the dialog allowing the user to change the values// NOTE: To fill the structure manually, you can write:// scOptions.CancelKey = Keys.Escape;// scOptions.Count = 1;// scOptions.Cursor = Cursors.Arrow;// scOptions.Delay = 0;// scOptions.Hotkey = Keys.F11;// scOptions.Interval = 0;// scOptions.OptimizedHotkey = true;// scOptions.StatusCursor = Cursors.WaitCursor;scEngine.ShowCaptureOptionsDialog(null, ScreenCaptureDialogFlags.SetCaptureOptionsContextHelp, scOptions, helpCallback);// Set the Engine's ScreenCaptureOptionsscEngine.CaptureOptions = scOptions;// Define ScreenCaptureObjectOptions and fill it using dialogScreenCaptureObjectOptions scObjectOptions = ScreenCaptureObjectOptions.Empty;// Get the default OptionsscObjectOptions = ScreenCaptureEngine.DefaultCaptureObjectOptions;// Open the dialog allowing the user to change the values// NOTE: To fill the structure manually, you can write:// scObjectOptions.BorderWidth = 2;// scObjectOptions.EnableKeyboard = true;// scObjectOptions.Invert = false;// scObjectOptions.SelectCursor = Cursors.Arrow;scEngine.ShowCaptureObjectOptionsDialog(null, ScreenCaptureDialogFlags.CaptureObjectOptionsContextHelp, scObjectOptions, true, helpCallback);// Define ScreenCaptureInformation class objectScreenCaptureInformation scInformation = null;// NOTE: After preparing the structures and classes,// in this place you can insert any Capture method, such as:// CaptureWindow, CaptureActiveWindow, CaptureActiveClient, CaptureWallpaper,// CaptureFullScreen, CaptureMenuUnderCursor, CaptureWindowUnderCursor,// CaptureSelectedObject, CaptureArea, CaptureMouseCursor// We will Capture an Area of the screenRasterImage image = scEngine.CaptureArea(scAreaOptions, scInformation);// To get the number of resources in a EXE fileint iconsCount = scEngine.GetResourcesCount(Path.Combine(LEAD_VARS.ImagesDir, "ExeWithResources.exe"), ScreenCaptureResourceType.Icon);// Finally, if the Capture is still active, then Stop itif (scEngine.IsCaptureActive)scEngine.StopCapture();// clean upimage.Dispose();// Shutdown the ScreenCaptureScreenCaptureEngine.Shutdown();}bool HotKeyCallback(Keys key){// Here you can do anything with the pressed key// we will just show a message boxMessageBox.Show("You pressed the " + key.ToString() + "character.");return true;}void HelpCallback(ScreenCaptureHelpType helpType, ScreenCaptureControlId controlId){// Show a MessageBox mentioning the name of the dialog that called the help,// and which control ID was requested.switch (helpType){case ScreenCaptureHelpType.CaptureAreaOptions:MessageBox.Show("Capture Area Options Dialog Help Button\n" +"Control Id: " + controlId.ToString() + ".");break;case ScreenCaptureHelpType.CaptureFromExe:MessageBox.Show("Capture From EXE Dialog Help Button\n" +"Control Id: " + controlId.ToString() + ".");break;case ScreenCaptureHelpType.CaptureObjectOptions:MessageBox.Show("Capture Object Options Dialog Help Button\n" +"Control Id: " + controlId.ToString() + ".");break;case ScreenCaptureHelpType.SetCaptureOptions:MessageBox.Show("Capture Options Dialog Help Button\n" +"Control Id: " + controlId.ToString() + ".");break;default:// will never reach herebreak;}}void scEngine_CaptureInformation(object sender, ScreenCaptureInformationEventArgs e){// Make sure that the image was captured successfullyDebug.Assert(e.Image != null);// Define codecs class object to save the imageRasterCodecs codecs = new RasterCodecs();codecs.ThrowExceptionsOnInvalidImages = true;// Save the resulted Imagecodecs.Save(e.Image, Path.Combine(LEAD_VARS.ImagesDir, "Out_CapturedImage.bmp"), RasterImageFormat.Bmp, 24);// NOTE: e.Information is a ScreenCaptureInformation structure filled with information// about the captured image, this information can be used here// Display a MessageBox with the bounds of the capture areaMessageBox.Show("Captured Area Bounds:\n" +"Top:" + e.Information.Area.Top.ToString() + "\n" +"Left:" + e.Information.Area.Left.ToString() + "\n" +"Right:" + e.Information.Area.Right.ToString() + "\n" +"Bottom:" + e.Information.Area.Bottom.ToString());// everything worked finee.Cancel = false;}static class LEAD_VARS{public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images";}
Imports LeadtoolsImports Leadtools.CodecsImports Leadtools.ScreenCaptureWithEvents scEngine As ScreenCaptureEnginePublic Sub ScreenCaptureEngineExample()' Startup the ScreenCaptureScreenCaptureEngine.Startup()' Define a ScreenCaptureEngine class objectscEngine = New ScreenCaptureEngine()' Define the Help Callback that will run whenever the Help button is pressed on the dialogsDim helpCallbackObj As New ScreenCaptureHelpCallback(AddressOf HelpCallback)' Define ScreenCaptureAreaOptions and fill it using dialogDim scAreaOptions As ScreenCaptureAreaOptionsscAreaOptions = ScreenCaptureAreaOptions.Empty' Get the default optionsscAreaOptions = ScreenCaptureEngine.DefaultCaptureAreaOptions' Open the dialog allowing the user to change the values' NOTE: To fill the structure manually, you can write:' Cursor drawCursor = Cursors.Cross;' scAreaOptions.AreaType = ScreenCaptureAreaType.Rectangle;' scAreaOptions.DrawCursor = drawCursor;' scAreaOptions.DrawLineColor = Color.Red;' scAreaOptions.DrawLineStyle = ScreenCaptureAreaLineStyle.Solid;' scAreaOptions.EllipseHeight = 0;' scAreaOptions.EllipseWidth = 0;' scAreaOptions.FillBackgroundColor = Color.Black;' scAreaOptions.FillForegroundColor = Color.White;' scAreaOptions.FillPattern = ScreenCaptureAreaFillPattern.Solid;' scAreaOptions.Flags = ScreenCaptureAreaFlags.ShowInfoWindow;' scAreaOptions.InfoWindowBounds = new Rectangle(ScreenCaptureAreaOptions.LeftInfoWindowPosition, ScreenCaptureAreaOptions.TopInfoWindowPosition,_' ScreenCaptureAreaOptions.MediumInfoWindowSize, ScreenCaptureAreaOptions.MediumInfoWindowSize);' scAreaOptions.TextBackgroundColor = Color.White;' scAreaOptions.TextForegroundColor = Color.Black;' scAreaOptions.Zoom = ScreenCaptureAreaZoom.Normal;scEngine.ShowCaptureAreaOptionsDialog(Nothing, ScreenCaptureDialogFlags.CaptureAreaOptionsContextHelp, scAreaOptions, True, helpCallbackObj)' Define ScreenCaptureOptions and fill it using dialogDim scOptions As ScreenCaptureOptionsscOptions = ScreenCaptureOptions.Empty' Set the ScreenCaptureHotKeyCallback, so that it gets called if the hotkey is set in the dialogDim hotkeyCallbackObj As New ScreenCaptureHotkeyCallback(AddressOf HotKeyCallback)ScreenCaptureEngine.SetCaptureHotkeyCallback(hotkeyCallbackObj)' Open the dialog allowing the user to change the values' NOTE: To fill the structure manually, you can write:' scOptions.CancelKey = Keys.Escape;' scOptions.Count = 1;' scOptions.Cursor = Cursors.Arrow;' scOptions.Delay = 0;' scOptions.Hotkey = Keys.F11;' scOptions.Interval = 0;' scOptions.OptimizedHotkey = true;' scOptions.StatusCursor = Cursors.WaitCursor;scEngine.ShowCaptureOptionsDialog(Nothing, ScreenCaptureDialogFlags.SetCaptureOptionsContextHelp, scOptions, helpCallbackObj)' Set the Engine's ScreenCaptureOptionsscEngine.CaptureOptions = scOptions' Define ScreenCaptureObjectOptions and fill it using dialogDim scObjectOptions As ScreenCaptureObjectOptionsscObjectOptions = ScreenCaptureObjectOptions.Empty' Get the default OptionsscObjectOptions = ScreenCaptureEngine.DefaultCaptureObjectOptions' Open the dialog allowing the user to change the values' NOTE: To fill the structure manually, you can write:' scObjectOptions.BorderWidth = 2;' scObjectOptions.EnableKeyboard = true;' scObjectOptions.Invert = false;' scObjectOptions.SelectCursor = Cursors.Arrow;scEngine.ShowCaptureObjectOptionsDialog(Nothing, ScreenCaptureDialogFlags.CaptureObjectOptionsContextHelp, scObjectOptions, True, helpCallbackObj)' Define ScreenCaptureInformation class objectDim scInformation As ScreenCaptureInformation = Nothing' NOTE: After preparing the structures and classes,' in this place you can insert any Capture method, such as:' CaptureWindow, CaptureActiveWindow, CaptureActiveClient, CaptureWallpaper,' CaptureFullScreen, CaptureMenuUnderCursor, CaptureWindowUnderCursor,' CaptureSelectedObject, CaptureArea, CaptureMouseCursor' We will Capture an Area of the screenDim image As RasterImageimage = scEngine.CaptureArea(scAreaOptions, scInformation)' To get the number of resources in a EXE fileDim iconsCount As IntegericonsCount = scEngine.GetResourcesCount(Path.Combine(LEAD_VARS.ImagesDir, "ExeWithResources.exe"), ScreenCaptureResourceType.Icon)' Finally, if the Capture is still active, then Stop itIf (scEngine.IsCaptureActive) ThenscEngine.StopCapture()End If' clean upimage.Dispose()' Shutdown the ScreenCaptureScreenCaptureEngine.Shutdown()End SubPublic Function HotKeyCallback(ByVal key As Keys) As Boolean' Here you can do anything with the pressed key' we will just show a message boxMessageBox.Show("You pressed the " + key.ToString() + "character.")Return TrueEnd FunctionPublic Sub HelpCallback(ByVal helpType As ScreenCaptureHelpType, ByVal controlId As ScreenCaptureControlId)' Show a MessageBox mentioning the name of the dialog that called the help,' and which control ID was requested.Select Case (helpType)Case ScreenCaptureHelpType.CaptureAreaOptionsMessageBox.Show("Capture Area Options Dialog Help Button" & Environment.NewLine & "Control Id: " & controlId.ToString() & ".")Case ScreenCaptureHelpType.CaptureFromExeMessageBox.Show("Capture From EXE Dialog Help Button" & Environment.NewLine & "Control Id: " & controlId.ToString() & ".")Case ScreenCaptureHelpType.CaptureObjectOptionsMessageBox.Show("Capture Object Options Dialog Help Button" & Environment.NewLine & "Control Id: " & controlId.ToString() & ".")Case ScreenCaptureHelpType.SetCaptureOptionsMessageBox.Show("Capture Options Dialog Help Button" & Environment.NewLine & "Control Id: " & controlId.ToString() & ".")Case Else' will never reach hereEnd SelectEnd SubPublic Sub scEngine_CaptureInformation(ByVal sender As Object, ByVal e As ScreenCaptureInformationEventArgs) Handles scEngine.CaptureInformation' Define codecs class object to save the imageDim codecs As New RasterCodecs()codecs.ThrowExceptionsOnInvalidImages = True' Save the resulted Imagecodecs.Save(e.Image, Path.Combine(LEAD_VARS.ImagesDir, "CapturedImage.bmp"), RasterImageFormat.Bmp, 24)' NOTE: e.Information is a ScreenCaptureInformation structure filled with information' about the captured image, this information can be used here' Display a MessageBox with the bounds of the capture areaMessageBox.Show("Captured Area Bounds:" & Environment.NewLine & "Top:" & e.Information.Area.Top.ToString() & Environment.NewLine &"Left:" & e.Information.Area.Left.ToString() & Environment.NewLine & "Right:" + e.Information.Area.Right.ToString() &Environment.NewLine & "Bottom:" & e.Information.Area.Bottom.ToString())' everything worked finee.Cancel = FalseEnd SubPublic NotInheritable Class LEAD_VARSPublic Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images"End Class
Leadtools.ScreenCapture Namespace
ScreenCaptureInformation Class
ScreenCaptureInformationEventArgs Class
ScreenCaptureOptions Structure
ScreenCaptureAreaOptions Structure
Raster .NET | C API | C++ Class Library | JavaScript HTML5
Document .NET | C API | C++ Class Library | JavaScript HTML5
Medical .NET | C API | C++ Class Library | JavaScript HTML5
Medical Web Viewer .NET
