被一个有关问题整晕了~

被一个问题整晕了~~~
关于截屏的问题
我下载了一个 快速截屏手v1.0 的截屏工具,该工具运行的时候,会把截取的屏幕图片保存在指定的目录,图片名称按顺序排列,后缀为bmp格式。
为了研究该工具,我通过Pedump查看了该工具调用的api如下:

  函数名:GetProcAddress 来自的DLL:kernel32.dll
  函数名:GetModuleHandleA 来自的DLL:kernel32.dll
  函数名:LoadLibraryA 来自的DLL:kernel32.dll
  函数名:GetKeyboardType 来自的DLL:user32.dll  
  函数名:RegQueryValueExA 来自的DLL:advapi32.dll
  函数名:VariantChangeTypeEx 来自的DLL:oleaut32.dll
  函数名:RegSetValueExA 来自的DLL:advapi32.dll
  函数名:UnrealizeObject 来自的DLL:gdi32.dll  
  函数名:WindowFromPoint 来自的DLL:user32.dll  
  函数名:CoUninitialize 来自的DLL:ole32.dll  
  函数名:GetErrorInfo 来自的DLL:oleaut32.dll
  函数名:ImageList_SetIconSize 来自的DLL:comctl32.dll
  函数名:Shell_NotifyIconA 来自的DLL:shell32.dll 
  函数名:GetSaveFileNameA 来自的DLL:comdlg32.dll

对于动态引用的api,我通过api Hook 得到该工具在运行的时候,只调用了一个函数GetUserNameExW。由于水平不够,看不懂汇编,不知道该工具到底是通过什么方式取得屏幕的。敬请各位大哥帮下小弟了,平时比较懒,没有什么积分,只能发在这里来,以后改改懒的毛病 

补充:我的水平有限,一直以为截取屏幕或别的窗口的界面,一般通过getdc,getwindowdc,createdc等等之类的,对于这个工具,我找了好多资料,一点也不知道他是怎么实现截屏的。

------解决方案--------------------
一般就是GetDC, BitBlt等几个API
------解决方案--------------------
截个图,如果不使用妖哥提到的那几个API的话,倒是有其他方法,不过我都没有试过:
1.直接访问显存,所有在屏幕上的东西,都会在显存中找到,关键是怎么去找。。。
2.DirectX。 和直接访问显存相比,多了一层API而已。