←Select platform

CaptureFromExe Method

Summary
Captures an image of a resource stored in an exe or dll.

Syntax
C#
C++/CLI
Python
public: 
RasterImage^ CaptureFromExe(  
   String^ fileName, 
   ScreenCaptureResourceType resourceType, 
   String^ resourceId, 
   bool captureByIndex, 
   Color backgroundColor 
)  

Parameters

fileName
A string containing the name of the exe (or dll) from which the resource will be captured.

resourceType
Type of resource to be captured. For possible values refer to ScreenCaptureResourceType.

resourceId
Specifies the index of the resource being captured.

captureByIndex
If true, then the  resourceId is the index position of the requested resource. Otherwise,  resourceId is the resource id of the requested resource.

backgroundColor
Background color to be used for icons.

Return Value

A Leadtools.RasterImage that represents the captured image.

Example
C#
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.ScreenCapture; 
 
 
public void ScreenCaptureEngineExample() 
{ 
   // Startup the ScreenCapture 
   ScreenCaptureEngine.Startup(); 
 
   // Define a ScreenCaptureEngine class object 
   ScreenCaptureEngine scEngine = new ScreenCaptureEngine(); 
 
   // Define an EventHandler for CaptureInformation 
   scEngine.CaptureInformation += new EventHandler<ScreenCaptureInformationEventArgs>(scEngine_CaptureInformation); 
 
   // Define the Help Callback that will run whenever the Help button is pressed on the dialogs 
   ScreenCaptureHelpCallback helpCallback = new ScreenCaptureHelpCallback(HelpCallback); 
 
   // Define ScreenCaptureAreaOptions and fill it using dialog 
   ScreenCaptureAreaOptions scAreaOptions = ScreenCaptureAreaOptions.Empty; 
   // Get the default options 
   scAreaOptions = 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 dialog 
   ScreenCaptureOptions scOptions = ScreenCaptureOptions.Empty; 
   // Set the ScreenCaptureHotKeyCallback, so that it gets called if the hotkey is set in the dialog 
   ScreenCaptureHotkeyCallback 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 ScreenCaptureOptions 
   scEngine.CaptureOptions = scOptions; 
 
   // Define ScreenCaptureObjectOptions and fill it using dialog 
   ScreenCaptureObjectOptions scObjectOptions = ScreenCaptureObjectOptions.Empty; 
   // Get the default Options 
   scObjectOptions = 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 object 
   ScreenCaptureInformation 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 screen 
   RasterImage image = scEngine.CaptureArea(scAreaOptions, scInformation); 
 
   // To get the number of resources in a EXE file 
   int iconsCount = scEngine.GetResourcesCount(Path.Combine(LEAD_VARS.ImagesDir, "ExeWithResources.exe"), ScreenCaptureResourceType.Icon); 
 
   // Finally, if the Capture is still active, then Stop it 
   if (scEngine.IsCaptureActive) 
      scEngine.StopCapture(); 
 
   // clean up 
   image.Dispose(); 
 
   // Shutdown the ScreenCapture 
   ScreenCaptureEngine.Shutdown(); 
} 
 
bool HotKeyCallback(Keys key) 
{ 
   // Here you can do anything with the pressed key 
   // we will just show a message box 
   MessageBox.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 here 
         break; 
   } 
} 
 
void scEngine_CaptureInformation(object sender, ScreenCaptureInformationEventArgs e) 
{ 
   // Make sure that the image was captured successfully 
   Debug.Assert(e.Image != null); 
 
   // Define codecs class object to save the image 
   RasterCodecs codecs = new RasterCodecs(); 
   codecs.ThrowExceptionsOnInvalidImages = true; 
 
   // Save the resulted Image 
   codecs.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 area 
   MessageBox.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 fine 
   e.Cancel = false; 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\LEADTOOLS22\Resources\Images"; 
} 
Requirements

Target Platforms

Help Version 22.0.2023.3.31
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.ScreenCapture Assembly

Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.