←Select platform

ScreenCaptureHotkeyCallback Delegate

Summary
Indicates which method will handle the HotKey pressed by the user.

Syntax
C#
C++/CLI
Python
public delegate bool ScreenCaptureHotkeyCallback( 
   Keys hotkey 
) 
public delegate bool ScreenCaptureHotkeyCallback(  
   Keys hotkey 
) 
def ScreenCaptureHotkeyCallback(self,hotkey): 
# hotkey : Keys 

Parameters

hotkey
Holds the key code for the key that was pressed.

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.