Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Jak zrobić screena nieaktywnego okna


Rekomendowane odpowiedzi

Opublikowano

Witam, chciałbym się dowiedzieć czy się da zrobić screena okna np. zwiniętego w pasek bądź np. za oknem przeglądarki  z góry dzięki.

Opublikowano

Za pomocą _WinAPI_PrintWindow da się to zrobić. Niestety nie może być zminimalizowane, tylko musi być ukryte za jakimś innym oknem.

Opublikowano

Za pomocą _WinAPI_PrintWindow da się to zrobić. Niestety nie może być zminimalizowane, tylko musi być ukryte za jakimś innym oknem.

a będzie działać gdy okno będzie po za widocznym ekranem czyli jeżeli ktos ma ekran 1280 x 960 a program będzie na pixelach 1600 x 1500 to będzie działać?

Opublikowano

Tak, operuje na współrzędnych wirtualnych pulpitów bez problemu.

Skrypt jest w dziale podany z dwa lata temu chyba był temat o tym, poszukaj sobie. 

Mózg to nie mydło; nie ubędzie Ci go, gdy go użyjesz.

Opublikowano

A jest jeszcze cos innego typu _ScreenCapture_Capture tylko do okna zwiniętego w pasek bądź za jakims oknem ?

Opublikowano

Masz funkcje winapi i gdiplus , skrypt będziesz musiał napisać sobie sam bo nie ma jednej funkcji robiącej to co chcesz.

 

np taki jeden z prostrzych 

#include <GDIPlus.au3>
#include <WinAPI.au3>
#include <SendMessage.au3>

Func _CaptureWindow($hWnd)
    Local $WM_PAINT = 0x000F
    Local $WM_PRINT = 0x317
    Local $PRF_CHILDREN = 0x10 ; Draw all visible child windows.
    Local $PRF_CLIENT = 0x4 ; Draw the window's client area.
    Local $PRF_OWNED = 0x20 ; Draw all owned windows.
    Local $PRF_NONCLIENT = 0x2 ; Draw the window's Title area.
    Local $PRF_ERASEBKGND = 0x8 ; Erases the background before drawing the window

    Local $pos = WinGetPos($hWnd)
    ;MsgBox($MB_OK, "OK", $pos[0])
    Local $Width = $pos[2]
    Local $Height = $pos[3]

    Local $hDC = _WinAPI_GetDC($hWnd)
    Local $memDC = _WinAPI_CreateCompatibleDC($hDC)
    Local $memBmp = _WinAPI_CreateCompatibleBitmap($hDC, $Width, $Height)
    _WinAPI_SelectObject ($memDC, $memBmp)

    Local $Ret = _SendMessage($hWnd, $WM_PAINT, $memDC, 0)
    $Ret = _SendMessage($hWnd, $WM_PRINT, $memDC, BitOR($PRF_CHILDREN , $PRF_CLIENT, $PRF_OWNED, $PRF_NONCLIENT, $PRF_ERASEBKGND))
    _GDIPlus_Startup()
    Local $hBMP=_GDIPlus_BitmapCreateFromHBITMAP($memBmp)
    Local $hHBITMAP=_GDIPlus_BitmapCreateHBITMAPFromBitmap($hBMP)

    _WinAPI_DeleteObject($hDC)
    _WinAPI_ReleaseDC($hWnd, $hDC)
    _WinAPI_DeleteDC($memDC)
    _WinAPI_DeleteObject ($memBmp)
    _WinAPI_DeleteDC($hDC)
    Return $hHBITMAP
EndFunc ;==>_CaptureWindow()



Mózg to nie mydło; nie ubędzie Ci go, gdy go użyjesz.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...