Wij zitten hier op ons werk een programma te maken waarmee we schermen over het netwerk van de ene pc naar de andere sturen. Dit werkt allemaal prima. Alleen nu willen we ook kunnen zien als de pc gelocked is of bij het inlogscherm is.
Deze screenshots pakt die niet met de volgende code. Het resultaat is gewoon een zwart of wit scherm. En dit terwijl die wel een windows desktop laat zien.
Onze vraag is: Hoe kan je een screenshot opvragen/krijgen van een gelockte pc of van het inlogscherm van windows?
Deze screenshots pakt die niet met de volgende code. Het resultaat is gewoon een zwart of wit scherm. En dit terwijl die wel een windows desktop laat zien.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
| procedure TClientForm.CaptureScreen(AFileName: string); const CAPTUREBLT = $40000000; var hdcScreen: HDC; hdcCompatible: HDC; bmp: TBitmap; hbmScreen: HBITMAP; begin // Create a normal DC and a memory DC for the entire screen. The // normal DC provides a "snapshot" of the screen contents. The // memory DC keeps a copy of this "snapshot" in the associated // bitmap. hdcScreen := CreateDC('DISPLAY', nil, nil, nil); hdcCompatible := CreateCompatibleDC(hdcScreen); // Create a compatible bitmap for hdcScreen. Label1.Caption := IntToStr(GetLastError); Mouse.CursorPos := Point(550,350); hbmScreen := CreateCompatibleBitmap(hdcScreen, GetDeviceCaps(hdcScreen, HORZRES), GetDeviceCaps(hdcScreen, VERTRES)); // Select the bitmaps into the compatible DC. SelectObject(hdcCompatible, hbmScreen); bmp := TBitmap.Create; bmp.Handle := hbmScreen; BitBlt(hdcCompatible, 0, 0, bmp.Width, bmp.Height, hdcScreen, 0, 0, SRCCOPY or CAPTUREBLT); bmp.SaveToFile(AFileName); bmp.Free; DeleteDC(hdcScreen); DeleteDC(hdcCompatible); end; |
Onze vraag is: Hoe kan je een screenshot opvragen/krijgen van een gelockte pc of van het inlogscherm van windows?
I intend to live forever - so far, so good.