我正在为我的Win32系统开发一些能找到并响应特定屏幕事件的东西。例如,当我的屏幕的位图范围(100,100)到(130,130)(屏幕的30x30像素部分)与提供的30x30像素基线匹配时,则执行某个操作。
任何人都可以让我开始这个吗?也许有一个框架可以让这更容易?或者我可以使用的包裹?甚至可能是第三方实用程序?
答案 0 :(得分:1)
您可以尝试获取桌面窗口(GetDesktopWindow
),然后获取它的设备上下文(GetWindowDC
),然后创建兼容的内存设备上下文(CreateCompatibleDC
),从桌面dc(CreateCompatibleBitmap
)创建一个兼容的位图,在内存中的dc(SelectObject
)中选择它,然后对你感兴趣的区域进行bit-blitting,从桌面dc到in -memory dc(BitBlt
)。在这一切之后不要忘记清理。
哦,如果您在托管代码中执行此操作,则可以在PInvoke.net上找到所有这些API。您还需要使用Imaging.CreateBitmapSourceFromHBitmap
将位图从本机位图复制到托管位图。
我是从记忆中写下这一切的;它过去常用于XP,但我没有在Vista或Win7上试过它。
编辑:在网络上快速搜索“.Net截屏”会返回几个点击,包括this one以及C#和VB.Net中的示例代码。