шаг 1: получить содержание чужого окна

Как ни странно процесс занял 20 минут на Qt 4 под виндоус 10. Перед запуском должно быть открыто окно с notepad.exe. 

#include <QtGui/QApplication>
#include "dialog.h"
#define _WIN32_WINNT    0x0501        //xp

#include <windows.h>
#include <QDebug>

#pragma comment (lib, "user32"); //User32.lib
#pragma comment (lib, "gdi32"); //User32.lib

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);


    RECT rc;
    HWND hwnd = FindWindow(TEXT("Notepad"), NULL);    //the window can't be min

    if (hwnd == NULL)
    {
        qDebug() << "it can't find any 'note' window";
        return 0;
    }
    GetClientRect(hwnd, &rc);

    //create
    HDC hdcScreen = GetDC(NULL);
    HDC hdc = CreateCompatibleDC(hdcScreen);

    HBITMAP hbmp = CreateCompatibleBitmap(hdcScreen,rc.right - rc.left, rc.bottom - rc.top);

    SelectObject(hdc, hbmp);

    //Print to memory hdc
    PrintWindow(hwnd, hdc, PW_CLIENTONLY);

    //copy to clipboard
    OpenClipboard(NULL);
    EmptyClipboard();
    SetClipboardData(CF_BITMAP, hbmp);
    CloseClipboard();

    //release
    DeleteDC(hdc);
    DeleteObject(hbmp);
    ReleaseDC(NULL, hdcScreen);

    qDebug() << "success copy to clipboard, please paste it to the 'mspaint'";


//    Dialog w;
//    w.show();
    
    return a.exec();
}

После выполнения изображение окна из notepad.exe попадет в буфер обмена, откуда можно вставить в редактор paint.exe (например):

фотка 1

Таким образом никто не запрещает одной программе смотреть что изображено в окне другой программы (под виндоус например).