C#+XAML+Webbrowser

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Spot, 18 May 2012.

  1. Spot

    Spot Elder - Старейшина

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1
    Привет %username%!
    Вот какой вопрос:
    Нужно получить координаты курсора, это делается простой функцией Mouse.GetPosition( ui elementname);
    Но вот в чем проблема - координаты получаются относительно какого либо элемента, либо как елемент можно указать окно в целом. Однако, это не работает, если курсор находиться на самой форме webbrowser, то есть получается - что это уже другое окно.
    Вопрос: Как получить координаты курсора с "внутренностей" Webbrowser(например открыта страница google.com ).
     
  2. CodeSender:)

    CodeSender:) Active Member

    Joined:
    29 Jul 2010
    Messages:
    245
    Likes Received:
    115
    Reputations:
    23
    Через винапи, получаешь хендлер нужного окна и дальше уже мутишь что хочешь.

    P.S Можно ещё через BSOD но хз, не тестил.
     
  3. Spot

    Spot Elder - Старейшина

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1

    Не, через Бсод только айпи получить можно.

    По сути: меня интересует как это сделать на шарпе без примесей и бубнов.

    Актуально.
     
  4. faddpr

    faddpr New Member

    Joined:
    1 Mar 2012
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0
    От CodeSender
    Заюзай код

    class Program
    {
    [DllImport("user32.dll")]
    private static extern bool ScreenToClient(int hWnd, ref POINT lpPoint);
    [DllImport("user32.dll")]
    private static extern int GetForegroundWindow();

    static void Main(string[] args)
    {
    POINT lp = new POINT();
    int handle = GetForegroundWindow();
    ScreenToClient(handle, ref lp);
    }

    struct POINT
    {
    public int X;
    public int Y;
    }
    }
     
    1 person likes this.
  5. Spot

    Spot Elder - Старейшина

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1
    Я уже пробовал похожим образом - не катит.
    Но вроде бы проблему нашёл - дело в том, что я вешал отслеживание евента MouseMove на общий Grid (впф) и по какой-то причине елемент Webbrowser не принадлежит к плоскости грида.Казалось бы - ладно, что может быть проще - вешаем евент на сам Webbrowser и ждём. Так и сделал, в итоге никак не мог понять где же лаг - полез читать доку, оказалось этот класс неимплементирован :eek: . В итоге решил пока оставить на свежую голову евент и посмотреть заработает ли всё теперь.
    Барабанная дробь.... и нихера. Завязал все на кнопку ф7, что бы в любой момент можно было посмотреть координаты.
    Итог:
    - Хэндлим главное окошко и браузерное, затем кастуем пункт. Не помогло. Видим левые значения.
    - Просто узнать позицию курсора - тоже не получается. Нет, если курсор находиться на webbrowser - выдаются одни и теже результаты, внезависимости от местоположения на самой форме.

    Жду ваших советов.
     
Loading...