программа для создания скринов с экрана

Тема в разделе "WASM.ASSEMBLER", создана пользователем Alastor, 26 апр 2010.

  1. Alastor

    Alastor Member

    Публикаций:
    0
    Регистрация:
    23 июн 2009
    Сообщения:
    43
    привет всем, у меня к Вам такой вот вопрос - подскажите, как написать программу, которая бы скринила экран, сохраняла его в файл - но не в текстовый а графический. И теперь самое сложное - как восстанавливать экран из сохраненного файла. С первой частью думаю проблем не будет - но вот над второй призадумался. Подскажите кто-что может.
     
  2. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Alastor
    GetDesktopWindow() /GetWindowDC() и копируете битмапу с этого контекста или на него.
    При первом апдейте будет стёрто. Окон то множество.
     
  3. G13

    G13 New Member

    Публикаций:
    0
    Регистрация:
    24 мар 2006
    Сообщения:
    499
    Под DOS пишете?

    А это ещё зачем? Оглашайте уж тогда полное ТЗ.

    Между прочим, для студенческих заданий у нас есть отдельная тема.
     
  4. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    лучшей юзать CreateDC, тк десктоп на боттом левеле. все остальные его чайлды. а через CreateDC("DISPLAY", 0, 0, 0); имеем именно картинку.

    экзампл кода из статьи в мсдн о
    Код (Text):
    1. //   Capturing an Image
    2.  
    3. // Create a normal DC and a memory DC for the entire screen. The
    4. // normal DC provides a "snapshot" of the screen contents. The
    5. // memory DC keeps a copy of this "snapshot" in the associated
    6. // bitmap.
    7.  
    8. hdcScreen = CreateDC("DISPLAY", NULL, NULL, NULL);
    9. hdcCompatible = CreateCompatibleDC(hdcScreen);
    10.  
    11. // Create a compatible bitmap for hdcScreen.
    12.  
    13. hbmScreen = CreateCompatibleBitmap(hdcScreen,
    14.                      GetDeviceCaps(hdcScreen, HORZRES),
    15.                      GetDeviceCaps(hdcScreen, VERTRES));
    16.  
    17. if (hbmScreen == 0)
    18.     errhandler("hbmScreen", hwnd);
    19.  
    20. // Select the bitmaps into the compatible DC.
    21.  
    22. if (!SelectObject(hdcCompatible, hbmScreen))
    23.     errhandler("Compatible Bitmap Selection", hwnd);
    24.  
    25.         // Hide the application window.
    26.  
    27.         ShowWindow(hwnd, SW_HIDE);
    28.  
    29.          //Copy color data for the entire display into a
    30.          //bitmap that is selected into a compatible DC.
    31.  
    32.         if (!BitBlt(hdcCompatible,
    33.                0,0,
    34.                bmp.bmWidth, bmp.bmHeight,
    35.                hdcScreen,
    36.                0,0,
    37.                SRCCOPY))
    38.  
    39.         errhandler("Screen to Compat Blt Failed", hwnd);
    40.  
    41.         // Redraw the application window.
    42.  
    43.         ShowWindow(hwnd, SW_SHOW);
    при апдейте все стерется, но можно, напр, все прикрыть топлевел окошком.
     
  5. Alastor

    Alastor Member

    Публикаций:
    0
    Регистрация:
    23 июн 2009
    Сообщения:
    43
    Спасибо всем, повнимательнее посмотрел msdn и сам разобрался.