선언:
C#
[DllImport("user32")]
public static extern IntPtr WindowFromPoint(POINT pt);
VB.NET
<DllImport("user32")> _
Public Shared Function WindowFromPoint(pt As POINT) As IntPtr
End Function
사용 예제:
C#
using System;
using System.Runtime.InteropServices;
namespace ApiReference {
class ApiExample {
public struct POINT {
public Int32 x;
public Int32 y;
}
[DllImport("user32")]
public static extern IntPtr WindowFromPoint(POINT pt);
public static void Main(string[] args) {
EnterX:
Console.Write("윈도우가 있는지 확인할 X 좌표를 입력하세요: ");
Int32 x;
try {
x = Int32.Parse(Console.ReadLine());
} catch (Exception) {
Console.WriteLine("다시 입력하세요");
goto EnterX;
}
EnterY:
Console.Write("윈도우가 있는지 확인할 Y 좌표를 입력하세요: ");
Int32 y;
try {
y = Int32.Parse(Console.ReadLine());
} catch (Exception) {
Console.WriteLine("다시 입력하세요");
goto EnterY;
}
Console.WriteLine("{0}, {1} 에 있는 윈도우의 핸들은?", x, y);
POINT pt;
pt.x = x;
pt.y = y;
IntPtr hWnd = WindowFromPoint(pt);
if ( hWnd == IntPtr.Zero )
Console.WriteLine("위치에 윈도우 창이 없네요...");
else
Console.WriteLine("{0:X8} 입니다!", hWnd.ToInt32());
Console.ReadKey(true);
}
}
}
VB.NET
Imports System
Imports System.Runtime.InteropServices
Namespace ApiReference
Class ApiExample
Public Structure POINT
Public x As Int32
Public y As Int32
End Structure
<DllImport("user32")> _
Public Shared Function WindowFromPoint(pt As POINT) As IntPtr
End Function
Public Shared Sub Main(args As String())
EnterX:
Console.Write("윈도우가 있는지 확인할 X 좌표를 입력하세요: ")
Dim x As Int32
Try
x = Int32.Parse(Console.ReadLine())
Catch generatedExceptionName As Exception
Console.WriteLine("다시 입력하세요")
GoTo EnterX
End Try
EnterY:
Console.Write("윈도우가 있는지 확인할 Y 좌표를 입력하세요: ")
Dim y As Int32
Try
y = Int32.Parse(Console.ReadLine())
Catch generatedExceptionName As Exception
Console.WriteLine("다시 입력하세요")
GoTo EnterY
End Try
Console.WriteLine("{0}, {1} 에 있는 윈도우의 핸들은?", x, y)
Dim pt As POINT
pt.x = x
pt.y = y
Dim hWnd As IntPtr = WindowFromPoint(pt)
If hWnd = IntPtr.Zero Then
Console.WriteLine("위치에 윈도우 창이 없네요...")
Else
Console.WriteLine("{0:X8} 입니다!", hWnd.ToInt32())
End If
Console.ReadKey(True)
End Sub
End Class
End Namespace
예제 실행 결과:
매개 변수 설명:
pt - 핸들을 가져올 윈도우가 있는 위치를 입력합니다.
API 설명:
지정된 위치에 있는 윈도우의 핸들을 가져옵니다.
참고:
WindowFromPoint (MSDN)
비고:
지정된 위치에 있는 컨트롤의 핸들을 가져옵니다. 컨트롤이 자식을 포함하고 있는 경우엔 자식 컨트롤의
위치를 입력하여도, 자식 컨트롤을 포함하는 컨트롤의 핸들을 가져옵니다.
Spy++ 프로그램도 이 API와 ChildWindowFromPoint API를 겸하여 사용합니다.
ChildWindowFromPoint API에 대한 내용은 다음에 다루도록 하겠습니다.
'API Reference' 카테고리의 다른 글
12. MapWindowPoints (0) | 2014.09.21 |
---|---|
11. ChildWindowFromPoint (0) | 2014.09.20 |
9. Process32First, Process32Next (0) | 2014.09.18 |
8. CreateToolhelp32Snapshot (0) | 2014.09.16 |
7. CloseHandle (0) | 2014.09.11 |