次のコードを使用して、指定されたアプリ領域のみをキャプチャしています。
'find running instance of calculator
Dim p As Process = Process.GetProcessesByName("calc").FirstOrDefault
If p IsNot Nothing Then
'bring window to front
AppActivate(p.Id)
'get location + size of window
Dim r As New RECT
GetWindowRect(p.MainWindowHandle, r)
'create new bitmap + copy calc window
Dim img As New Bitmap(r.right - r.left, r.bottom - r.top)
Dim gr As Graphics = Graphics.FromImage(img)
gr.CopyFromScreen(New Point(r.left, r.top), Point.Empty, img.Size)
'save image + launch in default viewer
img.Save("test.png", Drawing.Imaging.ImageFormat.Png)
Process.Start("test.png")
End If
正しいアプリをキャプチャすることは問題ありませんが、アプリの全画面ではなく、そのアプリ内の#2ボタンのみをキャプチャしようとしています。
アプリ内でボタンが配置されることはわかっています: 左から 97 ピクセル 上から 189 ピクセル
2 番目のボタン自体のサイズは、幅 36 ピクセル、高さ 29 ピクセルです。
しかし、それらのポイントをどこに置いても、上記の現在のコードでそれを機能させることができませんでした。