Hallo,
ich versuche in C++ eine Funktion zu schreiben, die einen Screenshot erstellt. Die funktioniert für alle möglichen Fensteranwendungen auch sehr gut, aber sobald ich eine Anwendung im Fullscreen-Mode starte (z.B. CS:GO) bekomme ich als Screenshot nicht mehr das, was ich auf dem Bildschirm sehe, sondern was "hinter" der Anwendung liegt, sprich meinen Desktop. Der wichtige Teil der Funktion sieht so aus:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
LPDIRECT3DSURFACE9 frontBuffer;
if (FAILED(device->CreateOffscreenPlainSurface( static_cast<Integer>(resolution.getX()),
static_cast<Integer>(resolution.getY()),
D3DFMT_A8R8G8B8,
D3DPOOL_SYSTEMMEM,
&frontBuffer,
NULL))) {
throw(InternalErrorException("Could not create offscreen plain surface", "Direct3DDevice::createScreenshot"));
}
if (FAILED(device->GetFrontBufferData(0, frontBuffer))) {
throw(InternalErrorException("Could not create screenshot", "Direct3DDevice::createScreenshot"));
}
if (FAILED(D3DXSaveSurfaceToFile( outputFile.c_str(),
D3DXIFF_JPG,
frontBuffer,
0,
NULL))) {
throw(InternalErrorException("Could not write screenshot to file", "Direct3DDevice::createScreenshot"));
}
frontBuffer->Release();
|
Das Bild hat die korrekte Größe und wird auch richtig gespeichert, aber man sieht halt nichts von cs go, sondern nur meinen desktop...
Viele Grüße
newby