Я пытаюсь сделать снимок экрана определенной области (приложения) на рабочем столе. Пожалуйста, проверьте этот код ...Снимок экрана с конкретным приложением
try
{
//Process p = Process.Start("notepad");
//Process p = Process.GetProcessById(11152);
if (p == null)
Console.WriteLine("Got Null");
else
{
IntPtr h = p.Handle;
SetForegroundWindow(h);
ShowWindow(h, 9);
Rect rect = new Rect();
IntPtr error = GetWindowRect(p.MainWindowHandle, ref rect);
while (error == (IntPtr)0)
{
error = GetWindowRect(p.MainWindowHandle, ref rect);
}
Thread.Sleep(2000);
int width = rect.right - rect.left;
int height = rect.bottom - rect.top;
System.IO.FileStream fs = System.IO.File.Create(@"D:\snapshot.jpg");
Bitmap bitmap = new Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
Graphics.FromImage(bitmap).CopyFromScreen(rect.left, rect.top, 0, 0, new Size(width, height), CopyPixelOperation.SourceCopy);
bitmap.Save(fs, System.Drawing.Imaging.ImageFormat.Jpeg);
fs.Close();
bitmap.Dispose();
}
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
и я это за пределами этого метода ..
[DllImport("user32.dll")]
private static extern bool SetForegroundWindow(IntPtr hWnd);
[DllImport("user32.dll")]
private static extern bool IsIconic(IntPtr hWnd);
[DllImport("user32.dll")]
private static extern IntPtr GetForegroundWindow();
[DllImport("user32.dll")]
private static extern IntPtr ShowWindow(IntPtr hWnd, int nCmdShow);
[DllImport("user32.dll")]
public static extern IntPtr GetWindowRect(IntPtr hWnd, ref Rect rect);
[StructLayout(LayoutKind.Sequential)]
public struct Rect
{
public int left;
public int top;
public int right;
public int bottom;
}
Когда я пытаюсь открыть новое приложение и попытаться взять скриншот (например, блокнотом в этом, например,) Отлично работает. Но когда я пытаюсь сделать снимок экрана текущего приложения (например, диспетчера задач и т. Д.), Он не работает (я все еще получаю изображение маленького черного прямоугольника). Пожалуйста, помогите мне ..
Проверить следующие > http://stackoverflow.com/questions/891345/get-a-screenshot-of-a-specific-application – Sameer
Я проверил каждый пост относительно этого .. до сих пор could'nt найти где моя проблема лежит ... пожалуйста, дайте предложения относительно моего кода .. – user3197401