请教几个常见截图编程问题(100分)

  • 主题发起人 主题发起人 happymanfreeman
  • 开始时间 开始时间
H

happymanfreeman

Unregistered / Unconfirmed
GUEST, unregistred user!
各位高手:<br> &nbsp; 1. 已知一个窗口句柄, 如何获取该窗口上的所有图标 ??<br> &nbsp; 2. 如何获取鼠标所指向的当前图标 ?? <br> &nbsp; 3. 如何把word按顺序一页一页截取为图 ?? &nbsp;wps, pdf呢 ??<br> &nbsp; 4. 一些软件能在电脑屏幕上截取打印高分辨率图片, 如何实现 ??
 
太难了<br>我想只有真正的高手才能帮你 <br>我是无能为力<br>可以讨论一下
 
用API函数 getdc 和 bitblt
 
各位:<br> &nbsp;为了真正解决问题, 请大家不要随便发贴, 除非真正知道如何针对性地解决相应问题.
 
3.我现在也做类似的东西,不过我DELPHI很差,呵呵,提供我的思路参考:将word文件打印成swf(用FLASHPAPER,很快捷),然后D调用这个文件,可以控制翻页缩放等,控制的同时,抓图,过程没有你要求的简单,但抓图的效果要比直接从WORD抓要好一点
 
WORD应该有这样的接口<br>不然的话想办法通过二次转换进行<br>先转换到中间格式<br>在转换到你想要的格式
 
1. 已知一个窗口句柄, 如何获取该窗口上的所有图标 ??<br>试一下用这个方法<br>http://community.borland.com/article/0,1410,16778,00.html<br>===============================================<br>2. 如何获取鼠标所指向的当前图标 ??<br>不太明白你的意思。<br>你再看看MSDN 里 ExtractIcon,ExtractIconEx的解释。。。<br>===============================================<br>3. 如何把word按顺序一页一页截取为图 ?? &nbsp;wps, pdf呢 ??<br>你要把格式转换还是截取为图?<br>===============================================<br>4. 一些软件能在电脑屏幕上截取打印高分辨率图片, 如何实现 ??]<br>哪些软件? 能再解释清楚吗?<br>===============================================<br>再加一个问题; 如何编程对不规则窗口(如超级解霸)进行截图 ??<br>--<br>我最紧迫的问题是; 如何编程对不规则窗口(如超级解霸)进行截图 ????? &nbsp;<br> &nbsp;一些截图软件能对不规则窗口(如超级解霸等)进行截图 ?? 这些软件在截取不规则窗口时, 能自动检测不规则窗口的边界, 并在边界上加亮线, 然后截图, 如何编程实现呢 ?? <br>以下代码可以实现你要的一部分<br>我是通过反汇编SPY++得到的。SPY++还调用了其他函数我没有用。<br>如果你用IDA-PRO 就查看 .text:0041BAE0 ; int __stdcall sub_41BAE0(HWND hWnd)<br>function GetRGNandFrameIt(WHandle:Thandle):bool;<br>var<br>HR:HRGN;<br>wDC:HDC;<br>PenObj,BrushObj:HGDIOBJ;<br>ThePen:HPEN;<br>HactchBrush:HBRUSH;<br>begin<br>wDC:=GetWindowDC(whandle);<br>//SetROP2(wDC,R2_NOT);<br>//PenObj:=CreatePen(PS_SOLID,5,RGB(1,1,0));<br>//SelectObject(wDC,PenObj);<br>//BrushObj:=SelectObject(wDC,GetStockObject(NULL_BRUSH));<br>HR:= CreateRectRgn(0,0,0,0);<br>if GetWindowRgn(whandle,HR)= ERROR then<br>begin<br> &nbsp;Showmessage('Can not get RGN!!');<br> &nbsp;DeleteObject(HR);<br> &nbsp;result:=false;<br> &nbsp;exit;<br>end;<br>HactchBrush:=CreateSolidBrush(RGB(166,77,255));//SPY++ 用CreateHatchBrush<br>FrameRgn(wDc,HR,HactchBrush,5,3);<br>DeleteObject(HactchBrush);<br>DeleteObject(HR);<br>end;<br>===============================================<br>kcahcn
 
kcahcn: 你好!<br> &nbsp;看来你真的有实力! 能否给我留个email &nbsp;QQ &nbsp;?? <br> &nbsp;我的email; &nbsp;happymanfreeman@sohu.com <br><br>你解决了我的&quot;对不规则窗口(如超级解霸)进行截图&quot;问题关键部分, 谢谢你 !! 看来反汇编<br>倒是研究软件的好方法, &nbsp;1.2.3.4.四个问题我没讲清楚,现逐一说明:<br><br> &nbsp;1. 已知一个窗口句柄, 如何获取该窗口上的所有图标 ?? &nbsp;你误会我的意思了! 我说的是<br>对桌面上的某一个程序窗口(任意某个窗口), (我们很容易获取它的窗口句柄), 如何编程获取这个窗口上所有图标 ?? 不是指对硬盘上的某个文件使用ExtractIcon,ExtractIconEx<br><br> &nbsp;2. 很多软件如snagit等有这样的截取图标功能, 移动鼠标到桌面或窗口上某个图标上时<br>(不管该图标在按钮上或客户区内), &nbsp;该图标四周便出现红色边框, 单击一下鼠标, 就把红色边框内的图形截取并保存在硬盘上. 该功能如何编程 ?? &nbsp;反汇编一下 ?? ChildWindowFromPoint, ChildWindowFromPointEx ??? 客户区内的图标能否当作ChildWindow ?? &nbsp;如果能那一切就好办了. &nbsp;反汇编一下 &nbsp;?? <br> &nbsp;但是, snagit等这种截图功能截取的其实不是真正的图标, 而是红色边框内的小矩形图像, 该小矩形图像包含图标, 真实图标只是截取的小矩形图像的一部分 !! 如何才能截取鼠标下图标的真实图像 ?????<br><br> &nbsp;3. 如何把word按顺序一页一页截取为图 ?? &nbsp;wps, pdf呢 ?? 是截取为图片, 按顺序一页一页截取,而不是截取word的整个客户区。 <br><br> &nbsp;4. 一些软件声称能在电脑屏幕上截取并打印高分辨率图片,或能改变已有图像的分辨率 如何实现呢 ?? 对这个问题我感到困惑, &nbsp;图像的分辨率应该由产生图像的设备决定, 如<br>从桌面截取的图像分辨率是由显卡决定, 从摄像头捕获的图像分辨率是由摄像头硬件决定,<br>软件怎么能在电脑屏幕上截取高分辨率图片, 或能改变已有图像的分辨率呢 ??? <br>请看看这里: http://www.gamedev.net/reference/articles/article2063.asp
 
(1)(2):<br>Icon(图标)不是window(窗口)。。<br>Sagit得到是一个Childwindow包含图标。<br>windows sdk 的bin 文件夹里面有AccExplorer32.exe有点类似于SPY++。它可以得到那个child window的信息并画蓝色边框。。<br><br>这样有没有用?<br>var<br> &nbsp;wHandle : THandle;<br> &nbsp;H: HIcon;<br>begin<br>...<br>H := CopyIcon(GetClassLong(wHandle, GCL_HICON )); // 也可以用GCL_HICONSM<br>...<br>end;<br>====<br>(3)<br>你是要跟Sangit做一样的功能?<br>有没有试过用ScrollWindow,ScrollWindowEx..<br>===<br>(4)<br>你给的网址有代码。他用了DirectX。我还没下载DirectX SDK 所以没看到效果..
 
kcahcn: 你好!<br> &nbsp;能否下载 DirectX SDK 看看效果, 我在上述网站上找不到演示工程文件, 只有一个很长的源码, 你找到演示工程文件没有 ?<br> &nbsp;另, CopyIcon(GetClassLong(wHandle, GCL_HICON )); 是不行的, 它获取的是一个窗体标题上小图标, 不是窗体上的许多图标.
 
to:happymanfreeman,借你的宝地问一下,如何把WORD导出为BMP.也是一页一页导出.没有搞过.期待kcahcn:能解决.我开贴加分也行...........
 
后退
顶部