- 直接改个源码给你吧 ,示例中内存中的图像做了一次备份,截的是最最层窗口上的图,下面直接截取当前桌面的
- function SetClipboardBmp(left,top,right,button)
-
- var CF_TEXT=1
- var CF_BITMAP=2
-
- var DesktopWindowHwnd = dllcall("user32.dll","int","GetDesktopWindow") //取桌面窗口句柄
- var DesktopWindowDC = dllcall("user32.dll","int","GetWindowDC","int", DesktopWindowHwnd) //取窗口设备场景
-
- var ClipDc = dllcall("gdi32.dll","int","CreateCompatibleDC","int",DesktopWindowDC) //创建一个内存DC,
- var hBitmap = dllcall("gdi32.dll","int","CreateCompatibleBitmap","int",DesktopWindowDC,"int",right-left,"int",button-top)
- var hOldBitmap=dllcall("gdi32.dll","int","SelectObject","int",ClipDc,"int",hBitmap)
- var ret=dllcall("gdi32.dll","int","BitBlt","int",ClipDc,"int",0,"int",0,"int",right-left,"int",button-top,"int",DesktopWindowDC,"int",left,"int",top,"int",#00CC0020) //将桌面图像拷贝进内存DC做备份
- hBitmap=dllcall("gdi32.dll","int","SelectObject","int",ClipDc,"int",hOldBitmap)
-
- dllcall("user32.dll","int","OpenClipboard","int",0) //打开剪切板
- dllcall("user32.dll","int","EmptyClipboard") //清空剪切板
- ret=dllcall("user32.dll","int","SetClipboardData","int",CF_BITMAP,"int",hBitmap) //复制图片
- dllcall("user32.dll","int","CloseClipboard") //清空剪切板
-
- dllcall("user32.dll","int","DeleteObject","int",hOldBitmap) //释放由调用GetDC或GetWindowDC函数获取的指定设备场景
- dllcall("user32.dll","int","DeleteObject","int",hBitmap) //释放由调用GetDC或GetWindowDC函数获取的指定设备场景
- dllcall("user32.dll","int","DeleteDC","int",ClipDc) //释放由调用GetDC或GetWindowDC函数获取的指定设备场景
- end
复制代码 |