2013-09-09 4 views
0

Я использую следующий код, чтобы захватить только область приложения указанная:экрана область захвата применения

'find running instance of calculator 
    Dim p As Process = Process.GetProcessesByName("calc").FirstOrDefault 
    If p IsNot Nothing Then 
     'bring window to front 
     AppActivate(p.Id) 
     'get location + size of window 
     Dim r As New RECT 
     GetWindowRect(p.MainWindowHandle, r) 
     'create new bitmap + copy calc window 
     Dim img As New Bitmap(r.right - r.left, r.bottom - r.top) 
     Dim gr As Graphics = Graphics.FromImage(img) 
     gr.CopyFromScreen(New Point(r.left, r.top), Point.Empty, img.Size) 
     'save image + launch in default viewer 
     img.Save("test.png", Drawing.Imaging.ImageFormat.Png) 
     Process.Start("test.png") 
    End If 

Это делает просто отлично захватить нужное приложение, но я пытаюсь просто захватить кнопку # 2 в это приложение, а не полный экран приложения.

Я знаю, что внутри приложения кнопка будет располагаться: 97 пикселей от левого 189 пикселей от верхней

И размер # 2 самой кнопки: 36 пикселей шириной 29 пикселей высота

Но я не смог получить это, чтобы работать с текущим кодом выше, независимо от того, где я помещаю эти точки.

ответ

2

я не смог захватить кнопку # 2, но это вполне может быть из-за других версий или другой программы, если вы вратаря Мента в окна калькулятор, но это должно получить Вас на правильном пути:

Ьгу замена:

Dim img As New Bitmap(r.right - r.left, r.bottom - r.top) 
Dim gr As Graphics = Graphics.FromImage(img) 
gr.CopyFromScreen(New Point(r.left, r.top), Point.Empty, img.Size) 

с:

'set the size of the to be captured area(size of button in this case) 
Dim img As New Bitmap(36, 29) 
Dim gr As Graphics = Graphics.FromImage(img) 
'set offsets and use image size to set region 
gr.CopyFromScreen(New Point(r.Left + 97, r.Top + 189), Point.Empty, img.Size) 
+0

Yep, что сделал трюк, Рафаэль! Благодарю. – StealthRT