Capture image aus IntPtr Problem Seit Ms update 09.01.2019

  • VB.NET
  • .NET 4.5

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Nofear23m.

    Capture image aus IntPtr Problem Seit Ms update 09.01.2019

    Hallo

    Ich habe Ein Großes Problem.

    Um ein screenshot Von Mein Externes Browser Fenster zu machen, die sich versteckt außerhalb des Bildschirm befindet.

    Habe ich Diesem Code Verwendet Und es funzionierte Perfeckt.

    VB.NET-Quellcode

    1. Friend Function CreateBitmap(ByVal hWnd As IntPtr, ByVal BmpRect As Bitmap) As Bitmap
    2. Dim WinRect As RECT
    3. GetWindowRect(hWnd, WinRect)
    4. HWndChield7width = WinRect.right - WinRect.left
    5. HWndChield7height = WinRect.bottom - WinRect.top
    6. BmpRect = New Bitmap(WinRect.right - WinRect.left, WinRect.bottom - WinRect.top)
    7. Dim hdcFrom As IntPtr = GetDC(hWnd)
    8. Dim hdcTo As IntPtr = CreateCompatibleDC(hdcFrom)
    9. Dim hBitmap As IntPtr = CreateCompatibleBitmap(hdcFrom, BmpRect.Width, BmpRect.Height)
    10. If hBitmap <> IntPtr.Zero Then
    11. Dim hLocalBitmap As IntPtr = SelectObject(hdcTo, hBitmap)
    12. BitBlt(hdcTo, 0, 0, BmpRect.Width, BmpRect.Height, hdcFrom, 0, 0, SRCCOPY)
    13. SelectObject(hdcTo, hLocalBitmap)
    14. DeleteDC(hdcTo)
    15. ReleaseDC(hWnd, hdcFrom)
    16. BmpRect = Image.FromHbitmap(hBitmap)
    17. DeleteObject(hBitmap)
    18. End If
    19. Return BmpRect
    20. End Function



    Nun Aber Hat Microschrott Eine update gebracht am 09.01.2019... <X
    Seit dem Bekomme ich Bei Windows 10 Ein schwarzes Bild, Schiebe ich den versteckten Browser (Halb auf dem Desktop) Wird nur den sichtbaren bereich aufgezeichnet.

    Weiß jemand warum und was tun?
    1 von 3 Update läßt sich nicht deinstallieren
    Windoof auf 09.001.2019 zurück gesetzt brachte aber nix und frühere Zeitpunkt nicht vorhanden.

    ich kann schlecht die User Auffodern dem pc zu formatieren und sich die alte Version drauf zu Hauen

    Lg

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „seby1302“ ()

    Hi.

    Ich hab mal die "Allwissendemüllhalde" gefragt, und die sagte "GetDesktopWindow()".

    Naja, ist ja für Fraggles... Also war das nicht so eindeutig.

    Der Lösungsweg meiner wahl wäre dann das Fenster ganz kurz hervorholen, Screenshotten (ja, mit Kilt) und dann mit dem letzten Focus und dem letzten ActiveWindow zurück.

    Das ist ja kein Lösung für alle Möglichkeiten, aber sowas habe ich schonmal gemacht, und dem Benutzer darauf Explizit hingewiesen, dabei geduld zu haben, und den Prozess abzuwarten, weil das Produkt wichtiger ist als ein Paar sekunden zu warten.

    Ich hatte ähnliches von der Bilschirmaufnahme Software OBS (keine Werbung!) gehört, als ich versucht habe Greenscreen-Fenster in Video-Captures einzubinden.
    Also ein verstecktes (Nicht aktiv und nicht sichtbar) mit grünem Hintergrund, war nur Schwarz.
    Ich musste einen zweiten Bildschirm nutzen und dort das Fenster sichtbar haben.
    Ich bin auch ziemlich gespannt ob das "Überhaupt" noch geht...

    Vielleicht weil die Software auch Opensource ist, könntest Du ja mal dort nachfragen.
    Das sind Experten, die aber in der falschen Programmiersprache sprechen... Wer ist denn noch in C++, das ist sowas von Nineties... Uuups Vb ist sowas von 80´s... lol

    Ich weiss keine grossartige Hilfe. ;(

    Und an den Moderator, ich will hier keinen weglocken, aber das ist ein "sehr" Spezieller Fall hier.

    c.u. Joshi
    Hallo

    Das Problem habe/hatte ich auch bei mir Teilweise beim aufzeichnen von Videos (Screencast) und alles war schwarz.
    Da mein Lappi zwei Grafikkarten eingebaut hat habe ich das betreffende Programm mal mit der Intel Karte anstatt mit der von NVidia gestartet und siehe da. Bild wird aufgezeichnet.
    Mal nachgeguckt und Hardwarebeschleuningung aus und es geht mit beiden. Evtl. ist es bei dir ja ein ähnliches Problem und du könntest es so oder ähnlich ja umgehen.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##