mit GetDC(NULL) ein handle besorgen, mit CreateBitmap() ein Pufferbild erzeugen, und mit BitBlt() rüberkopieren.
dann hast du aber im grunde nur einen screenshot deines desktops. wenn ein programm directDraw verwendet, oder openGL, sind eher diese libraries ein ansatzpunkt.
direkt aus dem grafikram zu lesen ist (vermute ich) schwieriger, weil windows die hardware verwaltet, und dich da so einfach nicht ranlässt.

gruesse

EDIT: es ist aber nicht unmöglich. es gibt programme, die zB. bei spielen im hintergrund mitlaufen können, und als framegrabber ständig den bildschirminhalt sichern, um daraus ein video zu machen.