Конференция "WinAPI" » Cобытия курсора мышки.
 
  • hub00 © (31.05.08 17:43) [0]
    Вопрос.
    Во время перемещения курсора мышки над текстом,ссылкой или кнопкой в окне любой программы, курсор меняет иконку (стрелка, рука, итд) происходит событие.
    Как можно выполнить еще что-то кроме изменения иконки?
    Другое действие, которое нужно мне.
    Какая функция за это отвечает?
    Спасибо.
  • {RASkov} © (31.05.08 19:26) [1]
    Вопрос из ряда нестандартных и непонятных... Может объяснишь подробнее задачу? Возможно и варианты легче решаемые будут....

    > Какая функция за это отвечает?

    Вот прямо такой, какой тебе хочется - нет.)
    Вот даже смотри.... как ты ее у себя в программе будешь вызывать? по таймеру?

    Другие варианты: есть сообщения виндовс, есть хуки..... но может и не так все сложно... зависит от задачи..
  • DVM © (31.05.08 19:45) [2]

    > Во время перемещения курсора мышки над текстом,ссылкой или
    > кнопкой в окне любой программы, курсор меняет иконку (стрелка,
    >  рука, итд) происходит событие.

    Событие возникает для того окна, над которым указатель мыши перемещается. Это окно и меняет вид указателя. Т.е. все наоборот - сначала событие, потом смена вида указателя. Собственно все эти события (приход сообщений мыши в окно) можно перехватывать с помощью ловушек (Hooks) на сообщения мыши.
  • hub00 © (31.05.08 19:48) [3]
    Нужно сделать так.
    Запускается справка windows, курсор мышки произвольно начинает двигаться в этом окне, после того как он будет над ссылкой, нужно сделать щелочек мышкой, перейти по этой ссылке.
    Хочется чтоб щелчок выполнялся тогда, когда курсор над ссылкой.
  • hub00 © (31.05.08 19:50) [4]
    Ловушка. Как её использовать? Можно пример?
  • DVM © (31.05.08 19:56) [5]

    > hub00 ©   (31.05.08 19:50) [4]

    в гугле пишешь WH_MOUSE ищешь пример
  • hub00 © (31.05.08 20:16) [6]
    А как я узнаю какое событие в этот момент происходит?
    Я немогу понять что мне вылавливать?
    Какое сообщение windows шлет в тот момент когда мышка над ссылкой?
  • DVM © (31.05.08 20:48) [7]
    Зачем все это надо? Запуск справки перемещения курсора и т.д.? Может есть другой путь. Тот путь, что ты выбрал - гиблый.


    > Я немогу понять что мне вылавливать?

    вот и я не пойму, что ты ловить будешь.


    > Какое сообщение windows шлет в тот момент когда мышка над
    > ссылкой?

    WM_MOUSEMOVE
  • {RASkov} © (31.05.08 20:54) [8]
    > [6] hub00 ©   (31.05.08 20:16)
    > Какое сообщение windows шлет в тот момент когда мышка над ссылкой?

    Ну, наверное, ответ - никакого. т.е. не для твоих интересов...
    Еще раз прочитай [2]. Приложения, как правило, сами решают как реагировать на, например, WM_MOUSEMOVE...
  • hub00 © (31.05.08 20:55) [9]
    Справка это пример, мне нужно чтоб мышка нажимала на ссылку.
    Но чтоб нажимала тогда, когда она над ней.
  • {RASkov} © (31.05.08 20:59) [10]
    > [9] hub00 ©   (31.05.08 20:55)

    Т.е.? ...Т.е. я "тащу" мышку над ссылкой, а она сама "квакает" по ней? :)
    Брось ты это гиблое и неблагородное дело)
  • DVM © (31.05.08 21:00) [11]

    > Справка это пример, мне нужно чтоб мышка нажимала на ссылку.

    Ссылка это просто картинка. Окно справки само знает, что вот тот прямоугольник с координатами x1,y1,x2,y2 - ссылка и перерисовывает его соответственно тогда, когда мышь входит в этот прямоугольник. Окну где расположена ссылка приходят только многочисленные WM_MOUSEMOVE. Узнать, где у приложения ссылка не выйдет, т.к. это его внутренняя кухня.

    Единственно, если справка основана на движке Internet Explorer, то можно попробовать действовать через его объектную модель документа, тогда вобщем то до ссылок можно добраться, но имхо не справишься, много работы больно.
  • hub00 © (01.06.08 01:19) [12]
    Ребята, вы не так поняли меня.
    Мышкой водить я не буду. Она сама рандомно будет гулять в окне.
    Гулять до тех пор, пока не проскочит над какой-то ссылкой.
    Вот в тот момент когда она будет над ней (ссылкой), программно сделать нажатие кнопки и перейти.
  • hub00 © (01.06.08 01:25) [13]
    Я думал иначе сделать, сначало Tab`ом выделять (подсвечивать) ссылки (рандомно) к примеру 10 нажатий и оказался б я на 10-й ссылке.  
    Потом как-то узнать то место где остановился Tab (10-я ссылка) перевести туда курсор мышки и кликнуть по ней.
  • Германн © (01.06.08 01:36) [14]

    > hub00 ©   (01.06.08 01:19) [12]
    >
    > Ребята, вы не так поняли меня.
    > Мышкой водить я не буду. Она сама рандомно будет гулять
    > в окне.
    > Гулять до тех пор, пока не проскочит над какой-то ссылкой.
    >
    > Вот в тот момент когда она будет над ней (ссылкой), программно
    > сделать нажатие кнопки и перейти.
    >

    А как тебя понять, Саид? Сама мышка никогда не блуждает.
  • hub00 © (01.06.08 01:47) [15]
    А если я буду программно менять её координаты, она не будет произвольно двигаться?
  • Германн © (01.06.08 02:18) [16]

    > hub00 ©   (01.06.08 01:47) [15]
    >
    > А если я буду программно менять её координаты, она не будет
    > произвольно двигаться?
    >

    Чьи координаты? Мышки? На твоём столе?
    Но уж точно! Программно мышку нельзя передвинуь!
  • hub00 © (01.06.08 09:37) [17]
    Да, Германн представь, координаты курсора мышки на "Рабочем столе".
    Фантастика.
  • hub00 © (01.06.08 11:16) [18]
    Копался в сети нашел этот это

    Как автоматически помещать курсор мышки в центр контрола получившего фокус
    procedure MoveMouseOverControl(Sender: TObject);
    var
     Point: TPoint;
    begin
     with TControl(Sender) do
     begin
       Point.X := Left + (Width  div 2);
       Point.Y := Top +  (Height div 2);
       Point := Parent.ClientToScreen(Point);
       SetCursorPos(Point.X, Point.Y);
     end;
    end;

    Хотел запускать через таймер, вылетает ошибка. В чем может быть проблема?
  • {RASkov} © (01.06.08 12:04) [19]
    > [18] hub00 ©   (01.06.08 11:16)
    > Как автоматически помещать курсор мышки в центр контрола
    > получившего фокус

    Код в [18] - это не то что ты думаешь.... там даже ни одной инструкции нет связанной с фокусом ввода...
    Ошибка-то какая? AV небось)...
    Кстати, почему не показываешь как вызываешь данную процедуру?
    ЗЫ: Копайся далее.... Неблагородными делами занимаешься) И, главное, не хочешь понять, что занимаешься не тем...
 
Конференция "WinAPI" » Cобытия курсора мышки.
Есть новые Нет новых   [134432   +19][b:0][p:0.001]