ホームページ > バックエンド開発 > C++ > C# を使用して特定のアプリケーション ウィンドウのスクリーンショットを取得するにはどうすればよいですか?

C# を使用して特定のアプリケーション ウィンドウのスクリーンショットを取得するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-17 12:07:10
オリジナル
467 人が閲覧しました

How Can I Take a Screenshot of a Specific Application Window Using C#?

C# は指定されたアプリケーション ウィンドウのスクリーンショットを取得します

場合によっては、画面全体ではなく、特定のアプリケーションまたはウィンドウのスクリーンショットを撮る必要があります。これは、デバイス コンテキストにウィンドウを印刷できる PrintWindow Win32 API を通じて実現されます。

コードの実装

次の C# コードは、指定したウィンドウのスクリーンショットを撮る方法を示しています。

<code class="language-csharp">// 导入所需的Win32 API
[DllImport("user32.dll")]
public static extern bool GetWindowRect(IntPtr hWnd, out RECT lpRect);
[DllImport("user32.dll")]
public static extern bool PrintWindow(IntPtr hWnd, IntPtr hdcBlt, int nFlags);

// 定义表示RECT结构的类
[StructLayout(LayoutKind.Sequential)]
public struct RECT
{
    public int Left;
    public int Top;
    public int Right;
    public int Bottom;
}

// 获取窗口句柄和尺寸
IntPtr hwnd = ...; // 请替换为要截取的窗口句柄
RECT rc;
GetWindowRect(hwnd, out rc);

// 创建位图以存储截图
Bitmap bmp = new Bitmap(rc.Width, rc.Height, PixelFormat.Format32bppArgb);

// 获取位图的图形设备上下文
Graphics gfxBmp = Graphics.FromImage(bmp);

// 创建离屏设备上下文
IntPtr hdcBitmap = gfxBmp.GetHdc();

// 将窗口打印到离屏设备上下文
PrintWindow(hwnd, hdcBitmap, 0);

// 释放离屏设备上下文
gfxBmp.ReleaseHdc(hdcBitmap);
gfxBmp.Dispose();

// 现在您拥有了表示指定窗口截图的位图</code>
ログイン後にコピー

その他の指示

  • PrintWindow 関数は、境界線やメニューなどの他の部分ではなく、ウィンドウのクライアント領域をインターセプトします。
  • ウィンドウが部分的に表示されている場合は、表示されている部分のみがキャプチャされます。
  • キャプチャしたスクリーンショットは、ファイルに保存したり、画像ビューアに表示したりできます。

以上がC# を使用して特定のアプリケーション ウィンドウのスクリーンショットを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート