TC官方合作论坛

 找回密码
 立即注册
查看: 563|回复: 12
打印 上一主题 下一主题

[已解决] 怎样实现截图到剪贴板?

[复制链接]
跳转到指定楼层
楼主
发表于 2015-10-12 14:38:17 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
类似qq截图的功能。看了下自带截图只能保存为文件。是不是需要用到win32 api了?需要用哪些函数呢?
回复

使用道具 举报

13#
发表于 2016-1-14 16:31:24 来自手机 | 只看该作者
橡皮筋谁鸡,巴能看
回复 支持 反对

使用道具 举报

12#
发表于 2016-1-14 16:31:17 来自手机 | 只看该作者
橡皮筋谁鸡,巴能看
回复 支持 反对

使用道具 举报

11#
发表于 2016-1-14 16:31:16 来自手机 | 只看该作者
橡皮筋谁鸡,巴能看
回复 支持 反对

使用道具 举报

10#
发表于 2016-1-14 11:02:57 | 只看该作者
很好,学习了
回复 支持 反对

使用道具 举报

9#
 楼主| 发表于 2015-10-15 12:01:02 | 只看该作者
非常感谢!程序目前已经正常运行!
回复 支持 反对

使用道具 举报

8#
发表于 2015-10-14 23:07:05 | 只看该作者
这论坛多几个你这样慷慨解答的大神,必定会兴旺起来。
回复 支持 反对

使用道具 举报

7#
发表于 2015-10-14 11:09:35 | 只看该作者

  1. 直接改个源码给你吧 ,示例中内存中的图像做了一次备份,截的是最最层窗口上的图,下面直接截取当前桌面的
  2. function SetClipboardBmp(left,top,right,button)
  3.    
  4.     var CF_TEXT=1
  5.     var CF_BITMAP=2   
  6.    
  7.     var DesktopWindowHwnd = dllcall("user32.dll","int","GetDesktopWindow")  //取桌面窗口句柄
  8.     var DesktopWindowDC = dllcall("user32.dll","int","GetWindowDC","int", DesktopWindowHwnd)  //取窗口设备场景
  9.    
  10.     var ClipDc = dllcall("gdi32.dll","int","CreateCompatibleDC","int",DesktopWindowDC)  //创建一个内存DC,
  11.     var hBitmap = dllcall("gdi32.dll","int","CreateCompatibleBitmap","int",DesktopWindowDC,"int",right-left,"int",button-top)   
  12.     var hOldBitmap=dllcall("gdi32.dll","int","SelectObject","int",ClipDc,"int",hBitmap)
  13.     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做备份   
  14.     hBitmap=dllcall("gdi32.dll","int","SelectObject","int",ClipDc,"int",hOldBitmap)
  15.    
  16.     dllcall("user32.dll","int","OpenClipboard","int",0) //打开剪切板
  17.     dllcall("user32.dll","int","EmptyClipboard") //清空剪切板
  18.     ret=dllcall("user32.dll","int","SetClipboardData","int",CF_BITMAP,"int",hBitmap) //复制图片
  19.     dllcall("user32.dll","int","CloseClipboard") //清空剪切板
  20.    
  21.     dllcall("user32.dll","int","DeleteObject","int",hOldBitmap) //释放由调用GetDC或GetWindowDC函数获取的指定设备场景
  22.     dllcall("user32.dll","int","DeleteObject","int",hBitmap) //释放由调用GetDC或GetWindowDC函数获取的指定设备场景
  23.     dllcall("user32.dll","int","DeleteDC","int",ClipDc) //释放由调用GetDC或GetWindowDC函数获取的指定设备场景
  24. end



复制代码

评分

参与人数 0威望 +10 金币 +10 收起 理由
sanmaodo + 10 + 10 这论坛多几个你这样慷慨解答的大神,必定会.

查看全部评分

回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2015-10-13 21:32:49 | 只看该作者
kevinqq 发表于 2015-10-13 09:36
TC自带的像皮筋的示例里面 有写好的现成的方法 SetClipboardBmp

大神!关于橡皮筋事例.SetClipboardBmp函数我用了以后截出的图是一块黑块..函数里用到hdc,memhdc这两个变量我也依照示例进行了赋值,不知道问题出在哪,能否点拨一下?
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2015-10-13 10:49:29 | 只看该作者
kevinqq 发表于 2015-10-13 09:36
TC自带的像皮筋的示例里面 有写好的现成的方法 SetClipboardBmp

非常感谢
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18043773号

GMT+8, 2025-9-19 13:47 , Processed in 0.191644 second(s), 25 queries .

Powered by 海安天坑软件科技有限公司

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表