Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > Положение мыши вне окна


Автор: Alfmaster 23.8.2009, 16:08
Можно ли отслеживать положение мыши вне моего окна?

Автор: Partizan 23.8.2009, 22:37
ага....повесить low-level hook на мышь

Автор: Maxidrom 23.8.2009, 23:57
Зачем же с хуками возится, если мона апи GetCursorPos заюзать

Автор: Mikant 26.8.2009, 18:22
можно. только мышу сначала захватить надо. вот экспромт

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;

namespace mousenonover {
    class Program {
        [STAThread]
        static void Main() {
            Application app = new Application();
            app.Run(new MyWindow());
        }
    }

    class MyWindow : Window {
        public MyWindow() {

            this.Width = 300;
            this.Height = 300;


            StackPanel mysp = new StackPanel();

            mysp.Children.Add(tbPos);

            Content = mysp;

            this.MouseMove += MyWindow_MouseMove;
            this.KeyDown += MyWindow_KeyDown;
        }

        void UpdatePosition() {
            Mouse.Capture(this);
            tbPos.Text = Mouse.GetPosition(this).ToString();
            ReleaseMouseCapture();
        }

        void MyWindow_KeyDown(object sender, KeyEventArgs e) {
            UpdatePosition();
        }

        TextBlock tbPos = new TextBlock() { Text = "???" };

        void MyWindow_MouseMove(object sender, MouseEventArgs e) {
            UpdatePosition();
        }
    }
}

тут с реликтами первой попытки) в общем при нажатии на любую кнопку на окне будут отображаться координаты мыши

Добавлено через 14 минут и 43 секунды
для вычисления положения мыши на всем экране надо просто к х прибавить Left, а к у - Top. + поправки за размеры границы ока (заголовка итп)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)