屏幕截图非活动的外部应用程序

海塔姆

我需要对非活动的外部应用程序(例如TeamSpeak或Skype)进行截图。

我进行了搜索,但没有发现太多,我知道不可能对最小化的应用程序进行屏幕截图,但是我认为应该可以对非活动的应用程序进行屏幕截图。

PS:我只想截图该应用程序,所以如果另一个应用程序位于我想要的应用程序之上,会不会有问题?

我现在没有代码,我发现一个user32 API可以执行我想要的操作,但是我忘记了名称。

谢谢您的帮助。

阿农·科沃德(Anon Coward)

您需要的API是PrintWindow

void Example()
{
    IntPtr hwnd = FindWindow(null, "Example.txt - Notepad2");
    CaptureWindow(hwnd);
}

[DllImport("User32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool PrintWindow(IntPtr hwnd, IntPtr hDC, uint nFlags);

[DllImport("user32.dll")]
static extern bool GetWindowRect(IntPtr handle, ref Rectangle rect);

[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

public void CaptureWindow(IntPtr handle)
{
    // Get the size of the window to capture
    Rectangle rect = new Rectangle();
    GetWindowRect(handle, ref rect);

    // GetWindowRect returns Top/Left and Bottom/Right, so fix it
    rect.Width = rect.Width - rect.X;
    rect.Height = rect.Height - rect.Y;

    // Create a bitmap to draw the capture into
    using (Bitmap bitmap = new Bitmap(rect.Width, rect.Height))
    {
        // Use PrintWindow to draw the window into our bitmap
        using (Graphics g = Graphics.FromImage(bitmap))
        {
            IntPtr hdc = g.GetHdc();
            if (!PrintWindow(handle, hdc, 0))
            {
                int error = Marshal.GetLastWin32Error();
                var exception = new System.ComponentModel.Win32Exception(error);
                Debug.WriteLine("ERROR: " + error + ": " + exception.Message);
                // TODO: Throw the exception?
            }
            g.ReleaseHdc(hdc);
        }

        // Save it as a .png just to demo this
        bitmap.Save("Example.png");
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Android拍摄我的应用程序活动的屏幕截图

来自分类Dev

截取特定应用程序的屏幕截图

来自分类Dev

当我的应用程序在 IOS 中处于活动状态时如何阻止屏幕截图

来自分类Dev

通过从应用程序的“外部”遍历其子级来创建WinForm的自动屏幕截图

来自分类Dev

非活动窗口的屏幕截图

来自分类Dev

在全屏应用程序中防止屏幕截图(打印屏幕)

来自分类Dev

我该怎么做才能使我的android活动设计更像此应用程序屏幕截图图像?

来自分类Dev

C#拍摄WPF应用程序的屏幕截图

来自分类Dev

如何使用QTP拍摄应用程序的屏幕截图?

来自分类Dev

如何制作Tkinter应用程序的屏幕截图?

来自分类Dev

从全屏Qt快速应用程序中截取屏幕截图

来自分类Dev

拍摄Mac上特定应用程序窗口的屏幕截图

来自分类Dev

屏幕截图何时用于应用程序抽屉?

来自分类Dev

通过shell脚本捕获终端应用程序的屏幕截图?

来自分类Dev

从全屏Qt快速应用程序中截取屏幕截图

来自分类Dev

拍摄Mac上特定应用程序窗口的屏幕截图

来自分类Dev

WinJS以编程方式获取应用程序的屏幕截图

来自分类Dev

C#拍摄WPF应用程序的屏幕截图

来自分类Dev

如何创建屏幕截图查看器应用程序?

来自分类Dev

如何从屏幕底部到顶部启动一个Android应用程序(非活动)?

来自分类Dev

从Google Play商店获取应用程序详细信息,应用程序图标,应用程序屏幕截图

来自分类Dev

Qt屏幕截图共享应用程序-如何选择屏幕区域

来自分类Dev

恢复应用程序时,初始屏幕活动被忽略-Android

来自分类Dev

为全屏 KDE 应用程序指定活动屏幕

来自分类Dev

从应用程序主屏幕切换到其他活动时,应用程序崩溃

来自分类Dev

同时在应用程序外部进行多个对话活动

来自分类Dev

如何在IOS 7上更新应用程序的屏幕截图

来自分类Dev

用于拍摄漂亮屏幕截图的应用程序(如OS X)

来自分类Dev

为什么DirectX全屏应用程序会显示黑色屏幕截图?

Related 相关文章

  1. 1

    Android拍摄我的应用程序活动的屏幕截图

  2. 2

    截取特定应用程序的屏幕截图

  3. 3

    当我的应用程序在 IOS 中处于活动状态时如何阻止屏幕截图

  4. 4

    通过从应用程序的“外部”遍历其子级来创建WinForm的自动屏幕截图

  5. 5

    非活动窗口的屏幕截图

  6. 6

    在全屏应用程序中防止屏幕截图(打印屏幕)

  7. 7

    我该怎么做才能使我的android活动设计更像此应用程序屏幕截图图像?

  8. 8

    C#拍摄WPF应用程序的屏幕截图

  9. 9

    如何使用QTP拍摄应用程序的屏幕截图?

  10. 10

    如何制作Tkinter应用程序的屏幕截图?

  11. 11

    从全屏Qt快速应用程序中截取屏幕截图

  12. 12

    拍摄Mac上特定应用程序窗口的屏幕截图

  13. 13

    屏幕截图何时用于应用程序抽屉?

  14. 14

    通过shell脚本捕获终端应用程序的屏幕截图?

  15. 15

    从全屏Qt快速应用程序中截取屏幕截图

  16. 16

    拍摄Mac上特定应用程序窗口的屏幕截图

  17. 17

    WinJS以编程方式获取应用程序的屏幕截图

  18. 18

    C#拍摄WPF应用程序的屏幕截图

  19. 19

    如何创建屏幕截图查看器应用程序?

  20. 20

    如何从屏幕底部到顶部启动一个Android应用程序(非活动)?

  21. 21

    从Google Play商店获取应用程序详细信息,应用程序图标,应用程序屏幕截图

  22. 22

    Qt屏幕截图共享应用程序-如何选择屏幕区域

  23. 23

    恢复应用程序时,初始屏幕活动被忽略-Android

  24. 24

    为全屏 KDE 应用程序指定活动屏幕

  25. 25

    从应用程序主屏幕切换到其他活动时,应用程序崩溃

  26. 26

    同时在应用程序外部进行多个对话活动

  27. 27

    如何在IOS 7上更新应用程序的屏幕截图

  28. 28

    用于拍摄漂亮屏幕截图的应用程序(如OS X)

  29. 29

    为什么DirectX全屏应用程序会显示黑色屏幕截图?

热门标签

归档