Как определить координаты положения курсора относительно стороннего окна - C#
Формулировка задачи:
как определить коодинаты относительно окна(не формы)
1. Не предлогать вычислять относительные координаты
2. Живой пример(желательно) или ссылку(нежелательно, но можно)
Решение задачи: «Как определить координаты положения курсора относительно стороннего окна»
textual
Листинг программы
[StructLayout( LayoutKind.Sequential )]
struct RECT
{
public int left;
public int top;
public int right;
public int bottom;
}
[StructLayout( LayoutKind.Sequential )]
struct WINDOWINFO
{
public int cbSize;
public RECT rcWindow;
public RECT rcClient;
public uint dwStyle;
public uint dwExStyle;
public uint dwWindowStatus;
public int cxWindowBorders;
public int cyWindowBorders;
public ushort atomWindowType;
public ushort wCreatorVersion;
}
[DllImport( "user32.dll", SetLastError = true )]
[return: MarshalAs( UnmanagedType.Bool )]
static extern bool GetWindowInfo(
[In] IntPtr hWnd,
[In, Out] ref WINDOWINFO rect
);
static void Main( string[] args )
{
var hWnd = (IntPtr)0x00130A4C; // дескриптор окна
var wndInfo = new WINDOWINFO( );
wndInfo.cbSize = Marshal.SizeOf( wndInfo );
while ( true )
{
if ( !GetWindowInfo( hWnd, ref wndInfo ) )
{
Console.Clear( );
break;
}
var pt = System.Windows.Forms.Cursor.Position; // Замените на GetCursorPos
Console.WriteLine( "x: {0} y: {1}", pt.X - wndInfo.rcClient.left, pt.Y - wndInfo.rcClient.top );
Thread.Sleep( 100 );
}
}