Как определить координаты положения курсора относительно стороннего окна - C#

Узнай цену своей работы

Формулировка задачи:

как определить коодинаты относительно окна(не формы) 1. Не предлогать вычислять относительные координаты 2. Живой пример(желательно) или ссылку(нежелательно, но можно)

Решение задачи: «Как определить координаты положения курсора относительно стороннего окна»

textual
Листинг программы
  1.         [StructLayout( LayoutKind.Sequential )]
  2.         struct RECT
  3.         {
  4.             public int left;
  5.             public int top;
  6.             public int right;
  7.             public int bottom;
  8.         }
  9.  
  10.         [StructLayout( LayoutKind.Sequential )]
  11.         struct WINDOWINFO
  12.         {
  13.             public int      cbSize;
  14.             public RECT     rcWindow;
  15.             public RECT     rcClient;
  16.             public uint     dwStyle;
  17.             public uint     dwExStyle;
  18.             public uint     dwWindowStatus;
  19.             public int      cxWindowBorders;
  20.             public int      cyWindowBorders;
  21.             public ushort   atomWindowType;
  22.             public ushort   wCreatorVersion;
  23.         }
  24.  
  25.         [DllImport( "user32.dll", SetLastError = true )]
  26.         [return: MarshalAs( UnmanagedType.Bool )]
  27.         static extern bool GetWindowInfo(
  28.             [In] IntPtr hWnd,
  29.             [In, Out] ref WINDOWINFO rect
  30.             );
  31.  
  32.         static void Main( string[] args )
  33.         {
  34.             var hWnd = (IntPtr)0x00130A4C; // дескриптор окна
  35.             var wndInfo = new WINDOWINFO( );
  36.  
  37.             wndInfo.cbSize = Marshal.SizeOf( wndInfo );
  38.             while ( true )
  39.             {
  40.                 if ( !GetWindowInfo( hWnd, ref wndInfo ) )
  41.                 {
  42.                     Console.Clear( );
  43.                     break;
  44.                 }
  45.  
  46.                 var pt = System.Windows.Forms.Cursor.Position; // Замените на GetCursorPos
  47.                 Console.WriteLine( "x: {0} y: {1}", pt.X - wndInfo.rcClient.left, pt.Y - wndInfo.rcClient.top );
  48.                 Thread.Sleep( 100 );
  49.             }
  50.         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы