Hallo Leute,
ich brauche bitte Hilfe.
Ziel ist es, einen Screenshot zu machen, der ausschließlich den Desktop zeigt - also ohne bereits geöffnete Fenster etc. - sozusagen das "Windows-Hintergrundbild".
Ein Projekt habe ich mal drangehängt (kompilierte EXE ist auch dabei im Release-Ordner).
Erster Ansatz war, über Shell32 den Desktop zu togglen, dann den Screenshot zu machen und wieder zu togglen.
Das geht auch, aber ich hätte sehr gern eine Variante ohne togglen.
Wie komme ich bitte direkt an den Desktop heran (ohne togglen), wenn Programmfenster darüber liegen?
Ein weiterer Versuch über die API mit "GetDesktopWindow" brachte mir auch nicht das Desktopfenster ..
Hilfe...
Spoiler anzeigen
LG,
Bruno
ich brauche bitte Hilfe.
Ziel ist es, einen Screenshot zu machen, der ausschließlich den Desktop zeigt - also ohne bereits geöffnete Fenster etc. - sozusagen das "Windows-Hintergrundbild".
Ein Projekt habe ich mal drangehängt (kompilierte EXE ist auch dabei im Release-Ordner).
Erster Ansatz war, über Shell32 den Desktop zu togglen, dann den Screenshot zu machen und wieder zu togglen.
Das geht auch, aber ich hätte sehr gern eine Variante ohne togglen.
Wie komme ich bitte direkt an den Desktop heran (ohne togglen), wenn Programmfenster darüber liegen?
Ein weiterer Versuch über die API mit "GetDesktopWindow" brachte mir auch nicht das Desktopfenster ..
Hilfe...
VB.NET-Quellcode
- Private Function CaptureDesktopImage() As Image
- ' Verweis auf Shell32 muss bestehen
- Dim ShellReference As Shell32.Shell = Nothing
- Dim WorkingImage As Bitmap = Nothing
- Dim WorkingGraphics As Graphics = Nothing
- Dim TargetArea As Rectangle = Screen.PrimaryScreen.WorkingArea
- ShellReference = New Shell32.Shell()
- ShellReference.ToggleDesktop()
- System.Threading.Thread.Sleep(200)
- WorkingImage = New Bitmap(TargetArea.Width, TargetArea.Height)
- WorkingGraphics = Graphics.FromImage(WorkingImage)
- WorkingGraphics.CopyFromScreen(TargetArea.X, TargetArea.X, 0, 0, TargetArea.Size)
- ShellReference.ToggleDesktop()
- Return DirectCast(WorkingImage.Clone(), Image)
- End Function
LG,
Bruno