Here is the code i have:
public string selectedProgram;
[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
public static extern IntPtr GetForegroundWindow();
[DllImport("user32.dll")]
private static extern bool GetWindowRect(IntPtr hWnd, Rectangle rect);
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, 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;
frm2.Show();
frm2.pictureBox1.Image = pictureBox1.Image;
}
}
I am getting an error or some green highlighting on GetWindowRect(Handle, bonds);
that says:
A call to PInvoke function 'Screen Shot!WindowsFormsApplication1.Form3::GetWindowRect' has unbalanced the stack. This is likely because the managed PInvoke signature does not match the unmanaged target signature. Check that the calling convention and parameters of the PInvoke signature match the target unmanaged signature.
How do i fix this so i can get a screenshot of the other application's window?