


画面画像をキャプチャするために PrintScreen および Alt+PrintScreen をシミュレートする C# のサンプル コード共有 (写真)
C# PrintScreen と Alt+PrintScreen をシミュレートして画面の画像をキャプチャします
keybd_event API
Function 関数: この関数はキーストローク イベントを合成します。システムは、この合成されたキーストローク イベントを使用して WM_KEYUP または WM_KEYDOWN メッセージを生成でき、キーボード ドライバー プログラムの割り込みハンドラーが keybd_event 関数を呼び出します。 Windows NT では、この関数は SendInput に置き換えられました。
関数プロトタイプ; VOID keybd_event (BYTE bVk, BYTE bScan, DWORD dwFlags, DWORD dwExtralnfo);
パラメータ:
bVk: 仮想キーコードを定義します。キーコード値は 1 ~ 254 である必要があります。
bScan: このキーのハードウェア スキャン コードを定義します。
dwFlags: 関数の操作のさまざまな側面を定義するフラグのセット。アプリケーションは、次のように事前定義された定数の組み合わせを使用してフラグ ビットを設定できます。
KEYEVENTF_EXTENDEDKEY: この値が指定されている場合、スキャン コードの以前の値は OXEO (224) のプレフィックス バイトになります。
KEYEVENTF_KEYUP: この値が指定されている場合はキーが放され、この値が指定されていない場合はキーが押されます。
dwExtralnfo: キーストロークに関連する追加の 32 ビット値を定義します。
戻り値: この関数には戻り値がありません。
完全なコード:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; namespace PrintScreen { public partial class Form1 : Form { [DllImport("user32.dll")] static extern void keybd_event ( byte bVk,// 虚拟键值 byte bScan,// 硬件扫描码 uint dwFlags,// 动作标识 IntPtr dwExtraInfo// 与键盘动作关联的辅加信息 ); /// <summary> /// 模拟Print Screen键盘消息,截取全屏图片。 /// </summary> public void PrintScreen() { keybd_event((byte)0x2c, 0, 0x0, IntPtr.Zero);//down Application.DoEvents(); keybd_event((byte)0x2c, 0, 0x2, IntPtr.Zero);//up Application.DoEvents(); } /// <summary> /// 模拟Alt Print Screen键盘消息,截取当前窗口图片。 /// </summary> public void AltPrintScreen() { keybd_event((byte)Keys.Menu, 0, 0x0, IntPtr.Zero); keybd_event((byte)0x2c, 0, 0x0, IntPtr.Zero);//down Application.DoEvents(); Application.DoEvents(); keybd_event((byte)0x2c, 0, 0x2, IntPtr.Zero);//up keybd_event((byte)Keys.Menu, 0, 0x2, IntPtr.Zero); Application.DoEvents(); Application.DoEvents(); } public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } /// <summary> /// 从剪贴板获取图片 /// </summary> /// <returns></returns> private Bitmap GetScreenImage() { IDataObject newobject = null; Bitmap NewBitmap = null; try { Application.DoEvents(); newobject = Clipboard.GetDataObject(); if (Clipboard.ContainsImage()) { NewBitmap = (Bitmap)(Clipboard.GetImage().Clone()); } return NewBitmap; } catch(Exception ex) { Console.WriteLine(ex.Message); return null; } } private void button1_Click(object sender, EventArgs e) { button1.Enabled = false; pictureBox1.Image = null; PrintScreen(); pictureBox1.Image = GetScreenImage(); button1.Enabled = true; Application.DoEvents(); } private void button2_Click(object sender, EventArgs e) { button2.Enabled = false; pictureBox1.Image = null; AltPrintScreen(); pictureBox1.Image = GetScreenImage(); button2.Enabled = true; Application.DoEvents(); } } }
実行中の効果:
残りの問題:
PrintScreen タスクの問題はありませんが、AltPrintScreen を初めて使用するときは常に正しい画像が取得できません。原因がわかりません。専門家が通りかかったので、アドバイスをいただければ幸いです。
以上が画面画像をキャプチャするために PrintScreen および Alt+PrintScreen をシミュレートする C# のサンプル コード共有 (写真)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











C# を使用した Active Directory のガイド。ここでは、Active Directory の概要と、C# での動作方法について、構文と例とともに説明します。

C# データ グリッド ビューのガイド。ここでは、SQL データベースまたは Excel ファイルからデータ グリッド ビューをロードおよびエクスポートする方法の例について説明します。

マルチスレッドと非同期の違いは、マルチスレッドが複数のスレッドを同時に実行し、現在のスレッドをブロックせずに非同期に操作を実行することです。マルチスレッドは計算集約型タスクに使用されますが、非同期はユーザーインタラクションに使用されます。マルチスレッドの利点は、コンピューティングのパフォーマンスを改善することですが、非同期の利点はUIスレッドをブロックしないことです。マルチスレッドまたは非同期を選択することは、タスクの性質に依存します。計算集約型タスクマルチスレッド、外部リソースと相互作用し、UIの応答性を非同期に使用する必要があるタスクを使用します。
