Capture From Entire ScreenByteScout Screen Capturing SDK

Capture From Entire Screen for ByteScout Screen Capturing SDK

CaptureFromEntireScreen.cpp:

C++
// CaptureFromEntireScreen.cpp : Defines the entry point for the console application.
// 

#include "stdafx.h"
#import "BytescoutScreenCapturing.dll"

using namespace BytescoutScreenCapturingLib;
using namespace std;


void usage(ICapturer* capturer);
void setParams(int argc, _TCHAR* argv[], ICapturer* capturer);


int _tmain(int argc, _TCHAR* argv[])
{
    ::CoInitialize(0);

    // Create Capturer instance

    CLSID clsid_ScreenCapturer;
    CLSIDFromProgID(OLESTR("BytescoutScreenCapturing.Capturer"), &clsid_ScreenCapturer);

    ICapturer* capturer = NULL;
    ::CoCreateInstance(clsid_ScreenCapturer, NULL, CLSCTX_ALL, __uuidof(ICapturer), (LPVOID*)&capturer);

    if (!capturer)
    {
        _ftprintf(stdout, _T("Screen Capturer is not installed properly."));
        ::CoUninitialize();
        return 1;
    }

    capturer->put_RegistrationName(_T("demo"));
    capturer->put_RegistrationKey(_T("demo"));

    // Set capturing type
    capturer->put_CapturingType(catScreen);

    // Set output video width and height
    capturer->put_OutputWidth(640);
    capturer->put_OutputHeight(480);

        // WMV and WEBM output use WMVVideoBitrate property to control output video bitrate
           // so try to increase it by x2 or x3 times if you think the output video are you are getting is laggy
        // capturer->put_WMVVideoBitrate(capturer->WMVVideoBitrate * 2);


    // Set output file name
    capturer->OutputFileName = _T("Output.wmv");

        // uncomment to enable recording of semitransparent or layered windows (Warning: may cause mouse cursor flickering)
        // capturer->CaptureTransparentControls = true;


    // Start capturing
    HRESULT hr = capturer->Run();

    // IMPORTANT: if you want to check for some code if need to stop the recording then make sure you are 
    // using Thread.Sleep(1) inside the checking loop, so you have the loop like
    // Do 
    // Thread.Sleep(1) 
    // While StopButtonNotClicked


    if (FAILED(hr))
    {
        // Error handling
        CComBSTR s;
        capturer->get_LastError(&s);
        _ftprintf(stdout, _T("Capture failed: %s\n"), CString(s));
    }
    else
    {
        _tprintf(_T("Starting capture - Hit a key to stop ...\n"));

        int i = 0;
        TCHAR *spin = _T("|/-\\");

        // Show some progress
        while (!_kbhit())
        {
            _tprintf(_T("\rEncoding %c"), spin[i++]);
            i %= 4;
            Sleep(50);
        }

        // Stop after key press
        capturer->Stop();

        _tprintf(_T("\nDone."));
        getchar();
    }

    // Release Capturer
    capturer->Release();
    capturer = NULL;

    ::CoUninitialize();

    return 0;
}

stdafx.cpp:

C++
// stdafx.cpp : source file that includes just the standard includes
// CaptureFromEntireScreen.pch will be the pre-compiled header
// stdafx.obj will contain the pre-compiled type information

#include "stdafx.h"

// TODO: reference any additional headers you need in STDAFX.H
// and not in this file