実行中のアプリケーション名が入力されたリストビューがあります。
listView1.Items.Add(proc.MainWindowTitle);
コードは foreach ステートメントにあります。このコードを使用して、選択したアイテム (プログラム名) を取得し、そのプログラムのクライアント ウィンドウのスクリーンショットを撮ろうとしました。
public string selectedProgram;
[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
public static extern IntPtr GetForegroundWindow();
[DllImport("user32.dll")]
public static extern bool GetWindowRect(IntPtr hwnd, out Rectangle lpRect);
private void button2_Click(object sender, EventArgs e)
{
Process[] process = Process.GetProcesses();
foreach (var p in process)
{
selectedProgram = listView1.SelectedItems.ToString();
}
Rectangle bonds = new Rectangle();
GetWindowRect(Handle, out bonds);
Bitmap bmp = new Bitmap(bonds.Width, bonds.Height);
using (var gfx = Graphics.FromImage(bmp))
{
gfx.CopyFromScreen(bonds.Location, Point.Empty, bonds.Size);
pictureBox1.Image = bmp;
Form2 frm2 = new Form2(this);
frm2.Show();
frm2.pictureBox1.Image = pictureBox1.Image;
}
私は何を間違っていますか?