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.
Any idea how to achieve this, i am not able to get it. Any suggestion will be helpful. Thanks..
full example at this site
You need two functions :
usage of DwmRegisterThumbnail
you are at your form, and process it a external program that you want to paint at your program.
after registration, you just saying to windows the location to paint the picture
You don't need to write any code to make this happen. It's part of the Aero theme, introduced with Windows Vista and still present in Windows 7. By default, a little thumbnail of the application's window is shown when you hover over its icon in the taskbar. That's true for the Skype example you showed, and also for a C# application that you write yourself.
If you want a finer level of control over exactly what gets shown in the preview (like if you only wanted to show a small portion of your app's window), you can write some code that calls one or more of the relevant DWM API functions.
But don't write all of the P/Invoke code yourself. Use one of the existing libraries that wraps it all up in a .NET friendly way, like Windows Forms Aero or the Windows API Code Pack.
If you want your own application to display an Aero thumbnail, maybe this C++ sample could help you. Apparently it uses DwmRegisterThumbnail() to say "This HWND will now display a thumbnail of this other one".
So, a little P/Invoke call and
IWin32Window
...