Я пытаюсь сделать снимок экрана браузера, и один из моих методов Win32 API - это GetWindowRect.Это возвращает то же самое левое и правое значение.Это происходит только тогда, когда я запускаю свое приложение на удаленном компьютере с ОС Win7 в качестве ОС.
Также мой метод PrintWindow не работает на этом компьютере.Если кто-то сталкивался с этой проблемой раньше, пожалуйста, сообщите мне.
Эти два вышеупомянутых метода прекрасно работают с Vista и XP в качестве ОС на удаленном компьютере.
Добавление нескольких методов моего приложения.
[DllImport("user32.dll")]
public static extern bool PrintWindow(IntPtr hwnd, IntPtr hdcBlt, uint nFlags);
[DllImport("user32.dll")]
public static extern bool GetWindowRect(IntPtr hwnd, ref Rect rectangle);
private Image Capture(IntPtr hwnd)
{
Rectangle windowSize = this.GetWindowPosition(hwnd);
Bitmap bm = new Bitmap(windowSize.Width, windowSize.Height);
using (Graphics g = Graphics.FromImage(bm))
{
IntPtr hdc = g.GetHdc();
if (PrintWindow(hwnd, hdc, 0) == false)
{
throw new Exception("PrintWindow call failed");
}
g.ReleaseHdc(hdc);
g.Flush();
}
return bm;
}
private Rectangle GetWindowPosition(IntPtr hwnd)
{
Rect r = new Rect();
GetWindowRect(hwnd, ref r);
return new Rectangle(r.Left, r.Top, r.Width, r.Height);
}