在一个应用程序窗口中显示其他应用程序的实时屏

时间:2012-04-03 07:54:52

标签: c# wpf

是否可以在一个应用程序窗口(最大化)中显示同时运行的另一个应用程序的实时屏幕。

我有以下概念性想法(见下面的屏幕截图):当多个excel应用程序同时运行时,主应用程序正在显示。不是在应用程序之间单击(或选项卡)或调整这些窗口的大小以显示在屏幕上,我想简单地让主应用程序最大化以显示所有这些打开的Excel工作簿的生命屏幕。

enter image description here

2 个答案:

答案 0 :(得分:4)

为此,我定期拨打PrintWindow

我对这个解决方案并不完全满意,因为它看起来有些笨拙。但它也会扫描隐藏的窗口。

代码是

[DllImport("User32.dll")]
public static extern bool PrintWindow(IntPtr hWnd, IntPtr hdcBlt, int nFlags

[StructLayout(LayoutKind.Sequential)]
struct RECT
{
    public int Left;
    public int Top;
    public int Right;
    public int Bottom;
}

public static Bitmap GetWindow(IntPtr hWnd)
{
    RECT rect;
    GetWindowRect(hWnd, out rect);

    int width = rect.Right - rect.Left;
    int height = rect.Bottom - rect.Top;
    if (width > 0 && height > 0)
    {
        // Build device context (dc)
        Bitmap bmp = new Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
        Graphics gfxBmp = Graphics.FromImage(bmp);
        IntPtr hdcBitmap = gfxBmp.GetHdc();

        // drawing options
        int nFlags = 0;

        // execute call
        PrintWindow(hWnd, hdcBitmap, nFlags);

        // some clean-up
        gfxBmp.ReleaseHdc(hdcBitmap);
        gfxBmp.Dispose();

        return bmp;
    }
    else
    {
        return null;
    }

} // end function getWindow

答案 1 :(得分:0)

查看以下有趣的帖子。它们包含许多可能(非常)有用的信息!

Coding-4-Fun-Windows-7-Taskbar

Windows-7-Taskbar-C-Quick-Reference

祝你好运:)