Support Forums
Create a Screen Recorder. - Printable Version

+- Support Forums (https://www.supportforums.net)
+-- Forum: Categories (https://www.supportforums.net/forumdisplay.php?fid=87)
+--- Forum: Coding Support Forums (https://www.supportforums.net/forumdisplay.php?fid=18)
+---- Forum: Visual Basic and the .NET Framework (https://www.supportforums.net/forumdisplay.php?fid=19)
+---- Thread: Create a Screen Recorder. (/showthread.php?tid=6145)



Create a Screen Recorder. - hockeynut35 - 04-12-2010

This Basic tutorial will show you how to make a simple screen recorder.


Step 1.

-Create a new Windows ApplicationPublic Class ScreenRecorder


Step 2.

-Add a reference to System.Drawing.dll, and System.Windows.Forms.dll

Use this code;

Code:
Public Class ScreenRecorder

    Private Shared tempDir As String = My.Computer.FileSystem.SpecialDirectories.Temp & "\snapshot\"
    Private Shared snap As New System.Threading.Thread(AddressOf Snapshot)
    Private Shared _Bounds As System.Drawing.Rectangle = System.Windows.Forms.Screen.PrimaryScreen.Bounds
    Public Shared Property Bounds() As System.Drawing.Rectangle
        Get
            Return _Bounds
        End Get
        Set(ByVal value As System.Drawing.Rectangle)
            _Bounds = value
        End Set
    End Property
    Private Shared Sub Snapshot()
        If Not My.Computer.FileSystem.DirectoryExists(tempDir) Then _
            My.Computer.FileSystem.CreateDirectory(tempDir)
        Dim Co As Integer = 0
        Do
            Co += 1
            System.Threading.Thread.Sleep(50)
            Dim X As New System.Drawing.Bitmap(_Bounds.Width, _Bounds.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb)
            Using G = System.Drawing.Graphics.FromImage(X)
                G.CopyFromScreen(_Bounds.Location, New System.Drawing.Point(), _Bounds.Size)
                Dim CurBounds As New System.Drawing.Rectangle(System.Windows.Forms.Cursor.Position - Bounds.Location, System.Windows.Forms.Cursor.Current.Size)
                Forms.Cursors.Default.Draw(G, CurBounds)
            End Using
            Dim FS As New IO.FileStream(tempDir & FormatString(Co.ToString, 5, "0"c) & ".png", IO.FileMode.OpenOrCreate)
            X.Save(FS, System.Drawing.Imaging.ImageFormat.Png)
            X.Dispose()
            FS.Close()
        Loop
    End Sub
    Public Shared Sub ClearRecording()
        If My.Computer.FileSystem.DirectoryExists(tempDir) Then _
        My.Computer.FileSystem.DeleteDirectory(tempDir, FileIO.DeleteDirectoryOption.DeleteAllContents)
        My.Computer.FileSystem.CreateDirectory(tempDir)
    End Sub
    Public Shared Sub Save(ByVal Output As String)
        Dim G As New Windows.Media.Imaging.GifBitmapEncoder

        Dim X As New List(Of IO.FileStream)
        For Each Fi As String In My.Computer.FileSystem.GetFiles(tempDir, FileIO.SearchOption.SearchTopLevelOnly, "*.png")
            Dim TempStream As New IO.FileStream(Fi, IO.FileMode.Open)
            Dim Frame = Imaging.BitmapFrame.Create(TempStream)
            X.Add(TempStream)
            G.Frames.Add(Frame)
        Next
        Dim FS As New IO.FileStream(Output, IO.FileMode.OpenOrCreate)
        G.Save(FS)
        FS.Close()

        For Each St As IO.FileStream In X
            St.Close()

        Next

    End Sub
    Public Shared Sub Start()
        snap = New System.Threading.Thread(AddressOf Snapshot)
        snap.Start()
    End Sub
    Public Shared Sub [Stop]()
        snap.Abort()
    End Sub
    Private Shared Function FormatString(ByVal S As String, ByVal places As Integer, ByVal character As Char) As String
        If S.Length >= places Then Return S
        For X As Integer = S.Length To places
            S = character & S
        Next
        Return S
    End Function

End Class

To use the Codes

Start:
Code:
ScreenRecorder.Start

Stop
Code:
ScreenRecorder.Stop

Save
Code:
ScreenRecorder.Save("")

Select Window to Record
Code:
ScreenRecorder.Bounds = New System.Drawing.Rectangle(300, 300, 500, 300)

Delete the "Movie"
Code:
ScreenRecorder.ClearRecording()


This is a very simple tutorial to follow. Feel free to modify/ add your own functions!

Hope you found this helpfullBlackhat


RE: Create a Screen Recorder. - Sam - 04-12-2010

Ahh sweet!! I'm going to try this right now!


RE: Create a Screen Recorder. - hockeynut35 - 04-12-2010

(04-12-2010, 07:38 AM)Sam Wrote: Ahh sweet!! I'm going to try this right now!

Smile. It works pretty well for something that takes ten minutes to code.


RE: Create a Screen Recorder. - Sam - 04-12-2010

I'm going to expand on it and make loads of functions.


RE: Create a Screen Recorder. - hockeynut35 - 04-12-2010

(04-12-2010, 07:54 AM)Sam Wrote: I'm going to expand on it and make loads of functions.

Post any codes here and I'll add a, "if you would like to go more in depth" party


RE: Create a Screen Recorder. - Christopher - 04-12-2010

Thanks for this, the people that are just learning can use this. Its a great Tut. 10/10


RE: Create a Screen Recorder. - hockeynut35 - 04-12-2010

(04-12-2010, 09:14 AM)ImPrune Wrote: Thanks for this, the people that are just learning can use this. Its a great Tut. 10/10

Thanks man.


RE: Create a Screen Recorder. - Poppins - 04-12-2010

Very nice work. Should help new people when starting out in coding. Maybe make a common error section in order to deal with the same replies over and over again. But great work mate.
-Poppins


RE: Create a Screen Recorder. - RaZoR03 - 04-18-2010

Nice tut,thanks....