それらを比較するために、異なるスクリーングラバーを実装しています。そのうちの 1 つは、'printscreen' キーとクリップボードを使用する必要があります。
keybd_ eventでキーストロークを送信します。
[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern void keybd_event(byte vVK, byte bScan, int dwFlags,int dwExtraInfo);
public const int KEYEVENTF_EXTENDEDKEY=0x0001; //key down
public const int KEYEVENTF_KEYUP=0x0002; //key up
public const int VK_SNAPSHOT=0x2C; //VirtualKey code for print key
public static void PrintScreen(){
keybd_event(VK_SNAPSHOT,0,KEYEVENTF_EXTENDEDKEY,0);
keybd_event(VK_SNAPSHOT,0,KEYEVENTF_KEYUP,0);
}
私の IEnumerable では、このメソッドを呼び出して、後で画像を取得しようとします。
...
InputController.PrintScreen();
var img=Clipboard.GetImage();
...
返される画像は常に null で、Clipboards.ContainsImage() は常に false です。キーを送信してからしばらく待ってみましたが、うまくいきません。なんらかの設定が欠けているのでしょうか、それとも基本的なエラーがありますか?
PS: プログラムを実行した後、正しい画像をペイントまたは gimp に貼り付けることができます。