Search code examples
c#windowswinformspreview

C# - on mouseover at taskbar, a preview is generated. how can i achieve this by C# coding


I am developing a winForm application in which i am list all the running processes. on mouseover of any process, i want preview window like (In Windows 7, when you mouse over an application in your task bar, a preview is generated showing the contents of the application window.) See Image.

enter image description here

Any idea how to achieve this, i am not able to get it. Any suggestion will be helpful. Thanks..


Solution

  • full example at this site
    You need two functions :

    [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);
    

    usage of DwmRegisterThumbnail
    you are at your form, and process it a external program that you want to paint at your program.

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

    after registration, you just saying to windows the location to paint the picture

                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);