![]() |
Languages »
VB.NET »
Utilities
Intermediate
License: The Code Project Open License (CPOL)
A Screen Capture UtilityBy Ken.HuangA screen capture utility for developers as well as generic users. |
VB 8.0, .NET, Win2K, WinXPVS2005, Dev, QA, Design
|
|
Advanced Search Add to IE Search |
|
|
|
||||||||||||||||

JPG Capture is a utility designed for developers to capture debugging screenshots, while it is also ideal for general screen capture purposes. JPG Capture can capture the desktop screen into picture files in sequence. Users can define the capture hotkey, capture area (current window, full screen, or rectangular area), picture format (JPG, GIF, BMP etc.), and also the destination.
The program uses a Win32 API function called RegisterHotKey to setup the system wide hotkey.
<DllImport("user32", EntryPoint:="RegisterHotKey", _
SetLastError:=True, _
ExactSpelling:=True, _
CallingConvention:=CallingConvention.StdCall)> _
Public Function RegisterHotkey(ByVal hwnd As IntPtr, _
ByVal Id As Int32, _
<MarshalAs(UnmanagedType.U4)> ByVal fsModifiers As Int32, _
<MarshalAs(UnmanagedType.U4)> ByVal vkey As Int32) As Boolean
End Function
The program passes the window handle of an invisible window called inVisibleHotkey to the RegisterHotKey function. Whenever the hotkey is pressed, a Windows message will be sent to the inVisibleHotkey window, which will trigger the HotKey_Press() routine.
The user can define the hotkey combination using two parameters, fsModifiers and vkey. fsModifiers can be the Ctrl, Alt, or Shift key. vkey can be any other key.
Public Enum HotkeyModifierFlags
MOD_ALT = &H1
MOD_CONTROL = &H2
MOD_SHIFT = &H4
MOD_WIN = &H8
End Enum
Public Enum HotkeyVkeyFlags
Key_O = &H4F
Key_G = &H47
Key_T = &H54
End Enum
The capture area can be the current window, full screen, or a rectangular area.
GetForegroundWindow to define the capture area.GetDesktopWindow to define the capture area.inVisibleCapWin to define the capture area. When the capture starts, the inVisibleCapWin window will be loaded. Users can use a mouse to draw a rectangle to define the capture area. After the mouse button is released, the inVisibleCapWin window will be closed and continues the capture process.The program uses a Win32 API function called BitBlt to capture the desktop screen according to the selected capture area.
<DllImport("gdi32.dll")> Public Shared _
Function BitBlt(ByVal hObject As IntPtr, ByVal nXDest As Integer, ByVal nYDest As Integer, _
ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal hObjectSource As IntPtr, _
ByVal nXSrc As Integer, ByVal nYSrc As Integer, ByVal dwRop As Integer) As Boolean
End Function
The screenshot file is saved in sequence. The program uses a routine called makeup_filename to generate the filename in sequence.
Function makeup_Filename(ByRef Scr_num As Integer, ByVal Dir_Path As String, _
ByVal Prefix_fn As String, ByVal Subfix_fn As String) As String
'combine and generate the filename in sequence
Dim FileName As String
Dir_Path = Standardize_path(Dir_Path)
If Not Directory.Exists(Dir_Path) Then
Directory.CreateDirectory(Dir_Path)
'make sure the directory do exist.
Scr_num = 0
'reset the picture number since the new dir is empty.
End If
Next_num:
If Scr_num < 0 Then Stop
Scr_num = Scr_num + 1
FileName = Dir_Path & Prefix_fn
FileName = FileName & Format(Scr_num, "000")
FileName = FileName & "." & Subfix_fn
If File.Exists(FileName) Then GoTo Next_num
'make sure NOT to overwrite the exsisting file
Return FileName
End Function
The settings of the program is saved into a config file called config.ini. If the config file is missing, the default config file will be created.
Dir_Path = C:\Lexer_trace\
Prefix_fn = lexer
Subfix_fn = jpg
hotfsModifiers = 2
hotVkey = 71
Area = 2
There are some other functions that can be developed, like a popup preview window before saving the file, resizing the screenshot file as desired, etc.
| You must Sign In to use this message board. | ||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
General
News
Question
Answer
Joke
Rant
Admin
|
PermaLink |
Privacy |
Terms of Use
Last Updated: 19 Oct 2007 Editor: Smitha Vijayan |
Copyright 2007 by Ken.Huang Everything else Copyright © CodeProject, 1999-2009 Web19 | Advertise on the Code Project |