2010-08-13 6 views
5

Ich möchte einen Screenshot des Desktops erstellen, während Windows gesperrt ist (mit Win + L). Standardmethoden machen einen schwarzen Bildschirm, mit Code von Pixel:Screenshot des Desktops erstellen, wenn Windows gesperrt ist (Win + L)

COLORREF color = GetPixel(hdc, x, y); 

gleich -1. Weder ein Benutzermodusprogramm noch ein Dienst können ein nützliches Bild erfassen. Irgendwelche Ideen?

+0

Versuchen Sie, ein Bild des Desktops zu erhalten, das angezeigt würde, wenn er entsperrt wäre, oder eine Aufnahme des gesperrten Bildschirms selbst? – RBerteig

+0

Ich versuche, Screenshot der Anzeige zu machen, wenn es entsperrt war, Screenshot von Winlogon interessiert mich nicht) –

Antwort

2

GetPixel und BitBlt funktionieren nicht, wenn der Desktop nicht physisch auf dem Monitor angezeigt wird.

Möglicherweise haben Sie etwas Glück beim Erfassen einzelner Fenster mit PrintWindow. Jedoch reagieren nicht alle Anwendungen auf PrintWindow Aufrufe auf die gleiche Weise, so dass Sie Störungen und/oder Schwärze sehen können. Sie müssen jedes Fenster auch einzeln erfassen.

+0

Ich verstehe Sie richtig: Sie schlagen vor, einen Zyklus zu organisieren und einen Screenshot von jedem Fenster zu machen? Wenn ich HWND Parameter gleich 0 verwenden, wird es alle Desktop auf DC kopieren? Trotz allem, danke. –

+0

Es wird den Desktop bitten, sich selbst in die 'HDC' Ihrer Wahl zu malen, was meiner Meinung nach eine Kopie des Hintergrundbildes des Benutzers und möglicherweise dessen Icons liefert. –

+0

Anticreativshik, hast du irgendwelche Ergebnisse erhalten? –