|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Announcements
Want a new Job?
Chapters
Services
Feature Zones
|
IntroductionJPG 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. Setup the hotkeyThe program uses a Win32 API function called <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 The user can define the hotkey combination using two parameters, 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
Define the capture areaThe capture area can be the current window, full screen, or a rectangular area.
Capture processThe program uses a Win32 API function called <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 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
Config fileThe 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
Future improvementsThere are some other functions that can be developed, like a popup preview window before saving the file, resizing the screenshot file as desired, etc.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||