#include "Main.h"
#include "ScreenCaptureDLL.h"
ExternalWindowCapture *g_Capture = NULL;
SCREENCAPTUREDLL_API UINT32 BeginVideoCapture(UINT32 WindowHandle, UINT32 WholeWindow, UINT32 X, UINT32 Y, UINT32 Width, UINT32 Height, UINT32 BitRate, UINT32 FrameRate, UINT32 AudioDeviceIndex, char *Filename)
{
if(g_Capture != NULL)
{
MessageBox(NULL, "Capture must be stopped before BeginCapture is called", "Error", MB_OK);
return 1;
}
g_Capture = new ExternalWindowCapture;
PersistentAssert(g_Capture != NULL, "Failed to allocate ExternalWindowCapture");
if(FrameRate < 5)
{
FrameRate = 5;
}
if(BitRate < 1000)
{
BitRate = 1000;
}
UINT Result = g_Capture->Init(String(Filename), (HWND)WindowHandle, BitRate, FrameRate, AudioDeviceIndex);
if(Result != 0)
{
g_Capture->FreeMemory();
delete g_Capture;
g_Capture = NULL;
}
return Result;
}
SCREENCAPTUREDLL_API UINT32 CaptureVideoFrame()
{
if(g_Capture == NULL)
{
MessageBox(NULL, "CaptureFrame called before BeginCapture", "Error", MB_OK);
return 1;
}
g_Capture->Capture();
return 0;
}
SCREENCAPTUREDLL_API UINT32 StopVideoCapture()
{
if(g_Capture == NULL)
{
MessageBox(NULL, "StopCapture called before BeginCapture", "Error", MB_OK);
return 1;
}
g_Capture->FreeMemory();
delete g_Capture;
g_Capture = NULL;
return 0;
}
SCREENCAPTUREDLL_API UINT32 EnumerateAndSaveWindows()
{
WindowList List;
List.UpdateList();
List.Save("Windows.txt");
return 0;
}
SCREENCAPTUREDLL_API UINT32 EnumerateAndSaveAudioCaptureDevices()
{
AudioCaptureList List;
List.UpdateList();
List.Save("AudioCaptureDevices.txt");
return 0;
}
SCREENCAPTUREDLL_API UINT32 ReSizeWindow(UINT32 WindowHandle, UINT32 NewWidth, UINT32 NewHeight)
{
RECT ClientRect, ScreenRect;
HWND Window = (HWND)WindowHandle;
GetClientRect(Window, &ClientRect);
GetWindowRect(Window, &ScreenRect);
int BorderWidth = ScreenRect.right - ScreenRect.left - ClientRect.right;
int BorderHeight = ScreenRect.bottom - ScreenRect.top - ClientRect.bottom;
MoveWindow(Window, ScreenRect.left, ScreenRect.top, NewWidth + BorderWidth, NewHeight + BorderHeight, TRUE);
return 0;
}