Как узнать размеры окна по Handle?
От: objMihail Россия  
Дата: 16.10.10 23:16
Оценка:
Нужно получить картинку окна по хендлу, нашел вот такой код, который это делает:
[Flags]
private enum DrawingOptions
{
  PRF_CHECKVISIBLE = 0x00000001,
  PRF_NONCLIENT = 0x00000002,
  PRF_CLIENT = 0x00000004,
  PRF_ERASEBKGND = 0x00000008,
  PRF_CHILDREN = 0x00000010,
  PRF_OWNED = 0x00000020
}

private const int WM_PRINT       = 0x0317;
private const int WM_PRINTCLIENT = 0x0318;

[DllImport("user32.dll")]
private static extern int SendMessage (IntPtr hWnd, int msg, 
      IntPtr dc, DrawingOptions opts);

private void button1_Click(object sender, System.EventArgs e)
{
  using (Bitmap bm = new Bitmap(Width + 2, Height + 2))
  {
    using (Graphics g = Graphics.FromImage(bm))
    {
      IntPtr dc = g.GetHdc();
      try
      {
        SendMessage(Handle, WM_PRINT, dc,
         DrawingOptions.PRF_CHILDREN |
         DrawingOptions.PRF_CLIENT |
         DrawingOptions.PRF_NONCLIENT);
      }
      finally
      {
       g.ReleaseHdc(dc);
      }
      bm.Save("bm.png");
    }
  }
}

Но тут размеры окна уже известны, а я их не знаю (окно другого приложения).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.