python怎么调用api_python win32api中文手册

2022-11-10 15:14:13 浏览数 (1)

#1、获得应用窗口句柄 hwnd=win32gui.FindWindow(0,“窗口名字”)

#2、通过应用窗口句柄获得窗口DC hwndDC=win32gui.GetWindowDC(hwnd)

#3、通过hwndDC创建兼容DC(注意主窗口用的是win32gui库,操作位图截图是用win32ui库) mfcDC=win32ui.GreateDCFromHandle(hwnd)

#4、创建内存兼容DC,实际在内存开辟空间( 将位图BitBlt至屏幕缓冲区(内存),而不是将屏幕缓冲区替换成自己的位图。同时解决绘图闪烁等问题) neicunDC=mfcDC.CreateCompatibleDC()

#5、创建位图 savebitmap=win32ui.CreateBitmap()

#6、设置位图的大小以及内容(图片为应用窗口的整个截图) width=40 height=40(长宽为自己想要图片的大小,单位是像素) savebitmap.CreateCompatibleBitmap(mfcDC,width,height)

#7、将位图放置在兼容DC,即将位图数据放置在刚开辟的内存里 neicunDC.SleteObject(savebitmap)

‘’‘8、截取位图部分,并将截图保存在剪贴板(剪贴板是Windows系统一段可连续的。可随存放信息的大小而变化的内存空间,用来临时存放交换信息。只能保留一份数据,每当新的数据传入,旧的便会被覆盖。平时使用的qq截图、微信截图就是将截好的图放置在剪贴板,然后在QQ/微信窗口粘贴才将截图从剪贴板中取出来)’’’ neicunDC.BitBle((w1,w2),width,height,mfcDC,(x,y),win32con.SRCCOPY) ‘’‘BitBle函数需要输入6个参数,第一参数(w1,w2),指在位图里显示的左上角顶点,一般为(0,0),若不为(0,0),应用位图无法覆盖的地方为黑色背景。第二第三参数width,height最终截图的长宽(一般与上面设置的位图大小一致)。第四参数指窗口的mfcDC。第五参数(x,y)指应用截图起点的逻辑坐标(设备坐标指相对于屏幕左上角为起点的坐标,逻辑坐标指相对于应用窗口左上角的坐标)。第六参数win32con.SRCCOPY,指用复制的方法截取,其他参数可百度光栅操作代码。整个逻辑是内存作为黑色背景墙,第二层为位图,第三层为我们需要截图的位置。所以BitBle的第一个参数是位图放置在黑色背景墙的位置(内存),以黑色背景墙左上角为起点,(w1,w2)为位图左上角顶点的位置。放置好位图后,在位图上截图,截图的长为width,宽为height。截图的起始位置(相对于应用窗口左上角顶点的位置坐标)为(x,y)。’’’

‘’‘9、将截图数据从剪贴板中取出,并保存为bmp图片(注意创建位图使用的是bitmap,故图片格式为bmp。上一步也只是截图并没有操作’另存为’。其中filename为存放图片的名称,可自己修改。保存的路径为当前脚本储存的路径。比如当前脚本在D:TEST文件夹下,那bmp截图文件也在D:TEST文件夹下)’’’ savebitmap.SaveBitmapFile(neicunDC,filename)

#10、释放内存 win32gui.delete(savebitmap.GetHandle()) neicunDC.DeleteDC() mfcDC.DeleteDC() win32gui.Release(hwnd,hwndDC)

#以上仅为个人理解,方便小白去使用截图制作脚本。本人也是小白

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/183194.html原文链接:https://javaforall.cn

0 人点赞