微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C# – 在任务栏上的鼠标hover上,生成一个预览 我怎么能通过C#编码实现这一点

我正在开发一个winForm应用程序,我列出了所有正在运行的进程。 在任何进程的鼠标hover时,我需要预览窗口(如在Windows 7中,将鼠标hover在任务栏中的应用程序上时,会生成预览,显示应用程序窗口的内容

任何想法如何实现这一点,我无法得到它。 任何build议都会有帮助。 谢谢..

显示Windows对话框后如何处理?

使用C uder Window OS与UTC时间同步系统时钟

在Windows中从C ++应用程序进行Thrift调用

Python:Howto启动一个完整的进程而不是subprocess并检索PID

如何编写一个工具,反转Windows中的颜色?

find()方法获取时间search-c ++

扩展时重绘comboBox项目

是否有可能将Windows Mobile仿真build立到应用程序中?

程序在缓冲区溢出时没有崩溃

为什么没有Microsoft.Win64命名空间?

完整的例子在这网站

你需要两个功能

[DllImport("dwmapi.dll")] static extern int DwmRegisterThumbnail(IntPtr dest,IntPtr src,out IntPtr thumb); [DllImport("dwmapi.dll")] static extern int DwmUpdateThumbnailProperties(IntPtr hThumb,ref DWM_THUMBNAIL_PROPERTIES props);

使用DwmRegisterThumbnail

你在你的形式 ,并处理它你想在你的程序上绘制一个外部程序。

IntPtr hWnd = process.MainWindowHandle; int i = DwmRegisterThumbnail(this.Handle,hWnd,out thumb);

注册后,你只要说窗口的位置来绘制图片

DWM_THUMBNAIL_PROPERTIES props = new DWM_THUMBNAIL_PROPERTIES(); props.fVisible = true; props.dwFlags = DWM_TNP_VISIBLE | DWM_TNP_RECTDESTINATION | DWM_TNP_OPACITY; props.opacity = 255; props.rcDestination = new Rect(panel.Left,panel.Top,panel.Right,panel.Bottom); DwmUpdateThumbnailProperties(thumb,ref props);

你不需要编写任何代码来实现这一点。 它是Windows Vista中引入的Aero主题的一部分,仍然存在于Windows 7中。认情况下,当您将鼠标悬停在任务栏中的图标上时,会显示应用程序窗口的一个缩略图。 对于您展示的Skype示例,以及您自己编写的C#应用​​程序,情况也是如此。

如果您想要更精确地控制预览中显示内容(如果您只想显示应用程序窗口的一小部分),则可以编写一些调用一个或多个相关DWM API函数代码

但是不要自己编写所有的P / Invoke代码。 使用一个现有的库,以.NET友好的方式封装它,如Windows Forms Aero或Windows API Code Pack 。

如果你想自己的应用程序显示一个Aero缩略图,也许这个C ++示例可以帮助你。 显然它使用DwmRegisterThumbnail()来表示“此HWND现在将显示一个缩略图”。

所以,一个小小的P / Invoke调用和IWin32Window …

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

相关推荐