这个c#,csharp缩略图方式可以获取任何窗口,包括最小化的窗口,包括DX窗口,静止窗口,视频窗口,游戏窗口,速度极快.CPU占用极小!特意提出完整程序,VS2022编译通过。
下载完整源码在:https://download.csdn.net/download/lglyjlylglyjly/88847519?spm=1001.2014.3001.5501
/// 这个c#,csharp缩略图方式可以获取任何窗口,包括最小化的窗口,包括DX窗口,静止窗口,视频窗口,游戏窗口,速度极快.CPU占用极小!特意提出完整程序,VS2022编译通过。
public partial class jietu_suoluetu : Form
{
private IntPtr _hThumbnail = IntPtr.Zero;
private IntPtr _hWnd = IntPtr.Zero;
private int widow_width, widow_hight;
public jietu_suoluetu()
{
InitializeComponent();
}
private void jietu_suoluetu_Load(object sender, EventArgs e)
{
_hWnd= caozuowindow.FindWindow_ByTitlec("播放");//这里改变要截屏的窗口
IntPtr hscrdc = jietushibie.GetWindowDC(_hWnd);
jietushibie.RECT rECT = new jietushibie.RECT();
jietushibie.GetWindowRect(_hWnd, ref rECT);
widow_width = rECT.Right- rECT.Left;
widow_hight = rECT.Bottom- rECT.Top;
//目标窗口和源窗口必须都是顶级窗口,在目标窗口和源窗口之间创建桌面窗口管理器(DWM)缩略图关系。
var hr = NativeMethods.DwmRegisterThumbnail(this.Handle, _hWnd, out _hThumbnail);
if (hr != 0)
return;
UpdateThumbnailProperties();
}
private void jietu_suoluetu_ResizeEnd(object sender, EventArgs e)
{
if (_hThumbnail == IntPtr.Zero)
return;
UpdateThumbnailProperties();
}
private void UpdateThumbnailProperties()
{
var dpi = new Point(1, 1);
var props = new DWM_THUMBNAIL_PROPERTIES
{
//所有字段解释
//dwFlags 给出了接下来的那个字段是有效的。
//rcDestination 字段表示目的窗体用来显示缩略图的客户区域的边界范围。若想使用该字段,请在dwFlags 中包含DWM_TNP_RECTDESTINATION标记。
//rcSource 字段表示窗体客户区域的边界,该范围的内容将显示到缩略图中。若想使用该字段,请在dwFlags 中包含DWM_TNP_RECTSOURCE标记。
//opacity 字段表示缩略图的不透明度。若源窗体是半透明的,那么缩略图也将是半透明的,提供这个选项仅仅为了需要时得更全面控制而已。若想使用该字段,请在dwFlags 中包含DWM_TNP_OPACITY标记。
//fVisible 允许我们暂时打开/关闭缩略图功能,而无须注册/取消注册。若想使用该字段,请在dwFlags 中包含DWM_TNP_VISIBLE标记。
//fSourceClientAreaOnly 用来让缩略图只显示源窗口的客户区域,而并不包含其边框内容。若想使用该字段,请在dwFlags 中包含DWM_TNP_SOURCECLIENTAREAONLY标记。
fVisible = true,
// 标识哪些字段已经设置了有效值
dwFlags = (int)(DWM_TNP.DWM_TNP_VISIBLE | DWM_TNP.DWM_TNP_OPACITY | DWM_TNP.DWM_TNP_RECTDESTINATION | DWM_TNP.DWM_TNP_SOURCECLIENTAREAONLY),
opacity = 255, //不透明度
// 绘制缩略图的尺寸,根据实际情况调整大小和位置
rcDestination = new RECT { left = 0, top = 0, bottom = (int)(widow_hight * dpi.Y), right = (int)(widow_width * dpi.X) },
fSourceClientAreaOnly =true
};
;//按属性显示桌面窗口管理器的 (DWM) 缩略图。
}
}
下载完整源码在:https://download.csdn.net/download/lglyjlylglyjly/88847519?spm=1001.2014.3001.5501