захват экрана! помогите плз!

Тема в разделе "WASM.DirectX", создана пользователем valix7, 23 ноя 2006.

  1. valix7

    valix7 New Member

    Публикаций:
    0
    Регистрация:
    31 окт 2006
    Сообщения:
    143
    Привет!
    Приведите плз кусок кода который делает сабж, или где про это можно прочитать! Заранее спасибо!
     
  2. _220

    _220 New Member

    Публикаций:
    0
    Регистрация:
    23 мар 2006
    Сообщения:
    111
    эээ.. в смысле? захват экрана?
    Я знаю, что можно с помощью DirectDraw получить доступ к экрану.
     
  3. valix7

    valix7 New Member

    Публикаций:
    0
    Регистрация:
    31 окт 2006
    Сообщения:
    143
    под захватом экрана понимается - поместить в какой-нибудь буфер изображение экрана..
     
  4. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Так как тема в Directx.OpenGL предпологаю что нужно средствами этих библиотек.

    valix7
    Рендеринг в текстуру?
     
  5. valix7

    valix7 New Member

    Публикаций:
    0
    Регистрация:
    31 окт 2006
    Сообщения:
    143
    нет, просто скопировать в буфер изображение а-ля GetDIBits...
     
  6. Kozyr__

    Kozyr__ New Member

    Публикаций:
    0
    Регистрация:
    28 янв 2005
    Сообщения:
    213
    Адрес:
    Ukraine
    без DirectX можно так:
    Код (Text):
    1. CreateDesktopBitmap      PROC
    2.      LOCAL hwndDesktop:HWND
    3.      LOCAL hdcMem:DWORD, hdcScr:DWORD
    4.      LOCAL hdcDesktop:DWORD, hdcSplash:DWORD
    5.      
    6.      invoke GetDesktopWindow
    7.      mov    hwndDesktop, EAX
    8.      invoke LockWindowUpdate, EAX
    9.      or     EAX, EAX
    10.      jz     @LockFailed
    11.  
    12.           invoke GetClientRect, hwndDesktop, addr DesktopRect
    13.           mov    EAX, DesktopRect.right
    14.           mul    DesktopRect.bottom
    15.           mov    ddDesktopDibSize, EAX
    16.  
    17.           invoke GetDCEx, hwndDesktop, NULL, DCX_CACHE or DCX_LOCKWINDOWUPDATE
    18.           mov    hdcScr, EAX
    19.  
    20.           ; --------------------------------------------------------------------
    21.           invoke HeapAlloc, heap, HEAP_ZERO_MEMORY, ddDesktopDibSize
    22.           mov    pDesktopDib, EAX
    23.  
    24.           invoke CreateCompatibleDC, hdcScr
    25.           mov    hdcDesktop, EAX
    26.  
    27.           invoke RtlZeroMemory, addr bi, sizeof(BITMAPINFO) + 8
    28.           mov    bi.bmiHeader.biSize, sizeof(BITMAPINFOHEADER)
    29.           m2m    bi.bmiHeader.biWidth, DesktopRect.right
    30.           m2m    bi.bmiHeader.biHeight, DesktopRect.bottom
    31.           mov    bi.bmiHeader.biPlanes, 1
    32.           mov    bi.bmiHeader.biBitCount, 24
    33.           mov    bi.bmiHeader.biCompression, BI_RGB
    34.  
    35.           invoke CreateDIBSection, hdcDesktop, addr bi, DIB_RGB_COLORS, addr pDesktopDibTemp, NULL, NULL
    36.           push   EAX          ; <-- HBITMAP
    37.  
    38.           invoke SelectObject, hdcDesktop, EAX
    39.           push   EAX
    40.          
    41.           invoke BitBlt, hdcDesktop, 0, 0, DesktopRect.right, DesktopRect.bottom, \
    42.                          hdcScr, 0, 0, SRCCOPY
    43.  
    44.           pop    EAX                             ;-)
    45.           invoke SelectObject, hdcDesktop, EAX   ;-)
    46.  
    47.           invoke DeleteDC, hdcDesktop
    48.  
    49.           ; --------------------------------------------------------------------
    50.           invoke ReleaseDC, hwndDesktop, hdcScr
    51.           invoke LockWindowUpdate, NULL
    52.          
    53.           pop    EAX          ; <-- HBITMAP
    54. @LockFailed:
    55.  
    56.      ret
    57. CreateDesktopBitmap      ENDP
    давно писал код, но должен работать :)
     
  7. valix7

    valix7 New Member

    Публикаций:
    0
    Регистрация:
    31 окт 2006
    Сообщения:
    143
    через стандартные API я знаю как, проблема в том что мне надо полностью все сфоткать... курсор мыши... фильм в медиаплеер и т.д. и т.п.!