问题描述
以前也分享过不过以前做的那个很粗糙主要就是凸显自动捕捉窗体的功能然后现在这个是重新做的山寨无罪、、、可以根据需要决定是否捕获鼠标上图是使用方法注释部分是提供的截图的属性更多截图效果看博客截图的功能写到了一个dll中FrmCapture就是截图的窗体设置快捷键啥的导入dll即可使用自行完成后续工作我打算过断时间给他加一个快捷键然后开机自启托盘运行至于你们有兴趣的想怎么改造就怎么改造其实截图程序并不常用--!、、可是要用的时候离线状态下没有qq截图就得prtscr键来截图感觉不方便而且平时大多数alt+ctrl+a并不是为了截图而是利用qq截图区框选一下某一个区域的大小比如做页面的时候想确定页面上放多大一块div然后就去那个地方托一块区域出来然后把数据记录下来还用就是利用QQ的截图程序去获取一下当前屏幕上的某一个点的颜色信息(所以我在做的时候为了方便在拖动过程中可以通过键盘wasd来精确移动鼠标位置这样拾取颜色比较方便)有什么bug希望尽量提出来在我测试的时候多次以为没啥问题了可总在收尾的时候出现一些bug不过现在看来应该是没有啥bug了
解决方案
解决方案二:
忘了顺带一个问题关于析构函数执行的问题
解决方案三:
图形图像相关的帖子在C#版总是热不起来的。呵呵。不过顶楼主了。
解决方案四:
有个问题想问你,一开始截图是那个灰色半透明的窗体怎么做的,我用窗口结果childwindowfrompointex就只能找的我的窗口,下面的都被我的窗口盖住了。求解啊
解决方案五:
引用3楼ygy1223的回复:
有个问题想问你,一开始截图是那个灰色半透明的窗体怎么做的,我用窗口结果childwindowfrompointex就只能找的我的窗口,下面的都被我的窗口盖住了。求解啊
你的第一个问题我是获取到屏幕图像在上面画了一层黑色的半透明的矩形至于第二个childwindowfrompointex可以忽悠禁用窗体将自己的窗体禁用就可以忽略过去了
解决方案六:
引用2楼laviewpbt的回复:
图形图像相关的帖子在C#版总是热不起来的。呵呵。不过顶楼主了。
又是你啊谢谢
解决方案七:
怎么禁用,我试了好久都不行
解决方案八:
引用6楼ygy1223的回复:
怎么禁用,我试了好久都不行
--!、、this.Enable=false;IntPtrhWnd=Win32.ChildWindowFromPointEx(Win32.GetDesktopWindow(),pt,Win32.CWP_SKIPINVISIBL|Win32.CWP_SKIPDISABLED);函数功能:该函数确定属于父窗口的哪一个子窗口(如果存在的话)包含着指定的点。该函数可以忽略不可见的、禁止的和透明的子窗口。函数原型:HWNDChidWindowFromaPointEx(HWNDhwndParent,POINTpt,UNITuFlags);参数:hWndParent:父窗口句柄。pt:指定一个POINT结构,该结构定义了被检查的点的坐标。uFlags:指明忽略的子窗口的类型。该参数可以是下列参数的组合。CWP_ALL:不忽略任一子窗口。CWP_SKIPINVISIBLE:忽略不可见的子窗口。CWP_SKIPDISABLE:忽略禁止的子窗口。CWP_SKIPTRABSPARENT:忽略透明子窗口。返回值:返回值为包含该点并且满足由uFlags定义的规则的第一个子窗口的句柄。如果该点在父窗口内,但在任一满足条件的子窗口外,则返回值为父窗口句柄。如果该点在父窗口之外或函数失败,则返回值为NULL。备注:系统有一个与某一父窗口有联系的所有子窗口的内部列表。列表中的句柄顺序依据这些子窗口的Z序。如果有多于一个的子窗口包含该点,那么系统返回在列表中包含该点并且满足由uFlags定义的规则的第一个窗口的句柄。速查:WindowSNT:4.0以上版本;Windows:95以上版本;WindowsCE:不支持;头文件:Winuser.h;库文件:user32.lib。
解决方案九:
见教了,学习学习
解决方案十:
引用6楼ygy1223的回复:
怎么禁用,我试了好久都不行
还是不行,不能透过去。我是用一个窗体,背景设为黑,然后把不透明度调低用来做那个灰色的效果。当时就是childwindowfrompointex透不过去
解决方案十一:
还是不行,不能透过去。我是用一个窗体,背景设为黑,然后把不透明度调低用来做那个灰色的效果。当时就是childwindowfrompointex透不过去
解决方案十二:
你能不能做个可以透过的给我看看。只要childwindowfrompointex可以透过就行。
解决方案十三:
解决方案十四:
引用11楼ygy1223的回复:
你能不能做个可以透过的给我看看。只要childwindowfrompointex可以透过就行。
publicpartialclassForm1:Form{[DllImport("user32.dll")]publicstaticexternIntPtrGetDesktopWindow();[DllImport("user32.dll")]//在桌面找寻子窗体publicstaticexternIntPtrChildWindowFromPointEx(IntPtrpHwnd,Pointpt,uintuFlgs);publicconstintCWP_SKIPDISABLED=0x2;//忽略不可用窗体publicconstintCWP_SKIPINVISIBL=0x1;//忽略隐藏的窗体[DllImport("user32.dll")]//获得句柄对象的位置publicstaticexternboolGetWindowRect(IntPtrhWnd,outLPRECTlpRect);publicstructLPRECT{publicintLeft;publicintTop;publicintRight;publicintBottom;}publicForm1(){InitializeComponent();Timert=newTimer();t.Interval=500;t.Enabled=true;t.Tick+=newEventHandler(t_Tick);this.FormBorderStyle=FormBorderStyle.None;this.Location=newPoint(0,0);this.Size=newSize(Screen.PrimaryScreen.Bounds.Width,Screen.PrimaryScreen.Bounds.Height);this.Load+=(s,e)=>this.BeginInvoke(newMethodInvoker(()=>this.Enabled=false));m_bmpScreen=GetScreen();this.SetStyle(ControlStyles.OptimizedDoubleBuffer,true);}privateRectanglem_rect;privateBitmapm_bmpScreen;voidt_Tick(objectsender,EventArgse){IntPtrhWnd=ChildWindowFromPointEx(GetDesktopWindow(),MousePosition,CWP_SKIPDISABLED|CWP_SKIPINVISIBL);LPRECTlpRect=newLPRECT();GetWindowRect(hWnd,outlpRect);m_rect.X=lpRect.Left;m_rect.Y=lpRect.Top;m_rect.Width=lpRect.Right-lpRect.Left;m_rect.Height=lpRect.Bottom-lpRect.Top;this.Invalidate();}protectedoverridevoidOnPaint(PaintEventArgse){Graphicsg=e.Graphics;g.DrawImage(m_bmpScreen,0,0);g.DrawRectangle(Pens.Cyan,m_rect);base.OnPaint(e);}privateBitmapGetScreen(){Bitmapbmp=newBitmap(this.Width,this.Height);using(Graphicsg=Graphics.FromImage(bmp)){g.CopyFromScreen(0,0,0,0,bmp.Size);}returnbmp;}}
解决方案十五:
这个不错呢这个不错呢
解决方案:
这个必须要留名,比我做的好多了
解决方案:
让我想起winspy
解决方案:
叼啊mark一下学习
解决方案:
解决方案:
马克留名
解决方案:
好好学习!顶起
解决方案:
比我做的强太多了,感谢楼主分享!
解决方案:
看看啊蛮好的哦
解决方案:
哈哈,比自己做的现在用的漂亮多了,工具条也很好。PS:有个bug,选中后再选中区域双击后会有异常
解决方案:
解决方案:
这个必须留下,以后来看
解决方案:
支持一下!!打个酱油
解决方案:
不错不错
解决方案:
好东西,有一定的技术含量!感谢楼主!
解决方案:
谢谢楼主分享~
解决方案:
好东西,有一定的技术含量!感谢楼
解决方案:
见教了,学习学习
解决方案:
解决方案:
确实不错。支持下。
解决方案:
解决方案:
很不错,就是性能上有些问题。
解决方案:
解决方案:
感谢lz分享
解决方案:
支持一个!顶一个!
解决方案:
好东西,学习了!
解决方案:
解决方案:
好像来迟了,又见楼主力作
解决方案:
学习啊
解决方案:
嗯,不错,QQ有些功能还是很有借鉴意义的
解决方案:
该回复于2014-04-10 22:54:42被版主删除
解决方案:
解决方案:
解决方案:
不错不错的值得借鉴
解决方案:
标记下,有需求的参考参考..好东西啊
解决方案:
学习学习学习学习学习学习
解决方案:
引用2楼laviewpbt的回复:
图形图像相关的帖子在C#版总是热不起来的。呵呵。不过顶楼主了。
等你的C#版,就热闹了。