Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Пробег мыши :)))))) Добавлено: 21.11.05 16:42  

Автор вопроса:  HACKER
амиго один попросил прогу наваять :) Короче надо каким-то макаром засеч пробег мыши по X and Y отдельно. Кое-что я накодил:

Private Declare Function GetCursorPos Lib "user32" (lpPoint As Now_POINTAPI) As Long

Private Type Now_POINTAPI
        x As Long
        y As Long
End Type

Private Type Last_POINT
        x As Long
        y As Long
End Type

Private Type Last_POINT_Stop
        x As Long
        y As Long
End Type

    Dim Curs As Now_POINTAPI
    Dim LastCurs As Last_POINT
    Dim LastPoint As Last_POINT_Stop
    

Private Sub Form_Load()
    Timer1.Interval = 1
End Sub

Private Sub Timer1_Timer()
    
    GetCursorPos Curs
    
    If (LastPoint.x = Curs.x) And (LastPoint.y = Curs.y) Then Exit Sub
    LastCurs.x = LastCurs.x + Curs.x
    LastCurs.y = LastCurs.y + Curs.y
    
    LastPoint.x = Curs.x:  LastPoint.y = Curs.y
    
    Debug.Print "X = " & LastCurs.x & "  Y = " & LastCurs.y
End Sub


Теперь вопросы:
1) Почему мне кажеться что это "кривой" способ? :)
2) Почему он возвращает не то что я думаю... слишком большие числа
3) Как по другому?

Ответить

  Ответы Всего ответов: 16  

Номер ответа: 1
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #1 Добавлено: 21.11.05 17:47
1) Почему мне кажеться что это "кривой" способ? :)
Гы, прикольный вопрос, но здесь действительно существует погрешность при складывании X и Y.

2) неверно написано

3)
Private Sub Timer1_Timer()
     
    GetCursorPos Curs
     
    'If (LastPoint.x = Curs.x) And (LastPoint.y = Curs.y) Then Exit Sub
    LastCurs.x = LastCurs.x + [B];(LastCurs.x - Curs.x)[/B]
    LastCurs.y = LastCurs.y + [B];(LastCurs.y - Curs.y)[/B]
'Это прибавляется НАСКОЛЬКО X и Y ИЗМЕНЯЛИСЬ
     
    'LastPoint.x = Curs.x:  LastPoint.y = Curs.y
     
    Debug.Print "X = " & LastCurs.x & "  Y = " & LastCurs.y 'Будет писаться сумма
End Sub

Ответить

Номер ответа: 2
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #2 Добавлено: 21.11.05 17:48
Че за хрень? почему не работает жирный шрифт?!

Ответить

Номер ответа: 3
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #3 Добавлено: 21.11.05 17:49
oops... А теперь работает

Ответить

Номер ответа: 4
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #4 Добавлено: 21.11.05 17:52
А тепер видимо не будет:

[В]LoL[/В]

Ответить

Номер ответа: 5
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #5 Добавлено: 21.11.05 17:53
мда... теперь я понял, какой тут есть глюк ;))

Ответить

Номер ответа: 6
Автор ответа:
 «UL.eXe»



ICQ: 197.895.916.247 

Вопросов: 72
Ответов: 540
 Профиль | | #6 Добавлено: 21.11.05 18:14
2 Noviks:
Внатуре есть.. а че заглюк-то хоть, если прописываешь сам, не работает.. или как?

Ответить

Номер ответа: 7
Автор ответа:
 Страшный Сон



Вопросов: 46
Ответов: 848
 Профиль | | #7 Добавлено: 21.11.05 20:19
Есть такой вариант:


Private Sub Form_Load()
Dim MP As POINTAPI, PMP As POINTAPI, L As Double

Do
  PMP = MP
  GetCursorPos MP
  L = L + Sqr(CDbl(MP.X - PMP.X) * CDbl(MP.X - PMP.X) + CDbl(MP.Y - PMP.Y) * CDbl(MP.Y - PMP.Y))
  DoEvents
  SleepEx 1, 0
Loop
End Sub


Переменная L и будет пробегом мыши.

Ответить

Номер ответа: 8
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #8 Добавлено: 21.11.05 20:47
2 Noviks
бред, ещё хуже чем у меня!

2 Страшный Сон
Спасибо, а если отдельно X and Y ?

Ответить

Номер ответа: 9
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #9 Добавлено: 21.11.05 21:03
сорри, за вопрос :) разобрался сам, ещё раз спасибо!

Ответить

Номер ответа: 10
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #10
Добавлено: 22.11.05 14:55
Глюков нет. Просто внутри тега [code] все остальные теги игнрориуются.
И это правильно.

Ответить

Номер ответа: 11
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #11 Добавлено: 22.11.05 17:08
бред, ещё хуже чем у меня!
Это еще как посмотреть!!! Я конечно, не применял квадратного корня, но намного упростил твой код!

Ответить

Номер ответа: 12
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #12 Добавлено: 22.11.05 18:53
только я там в одном месте чуть-чуть не так сделал... но в остальном верно!!

Ответить

Номер ответа: 13
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #13
Добавлено: 22.11.05 19:01
Кстати, извините, что в Офф-топ.

2 Noviks: при введении в действие новой версии сайта (предположительно
это будет не позднее чем через 4 месяца) все аккаунты с невалидными
E-mail'ами будут заблокированы.

Ответить

Номер ответа: 14
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #14 Добавлено: 22.11.05 21:07
Кстати, извините, что в Офф-топ. (copy/paste :)
2 Павел, чё так долго??? Обещал к новому году!

Ответить

Номер ответа: 15
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #15
Добавлено: 22.11.05 21:16
Мне тут еще иногда учиться приходится :) ПОэтому процесс, буучи бурным в конце лета, сейчас существенно замедлился.

Хотя сейчас намечается приток новых сил: UU наконец-то сумел поставить VS 2005, Алексей вернулся - вместо быстрее победим, но к НГ всяко не успеем. К реализации принимаются любые, даже смелые идеи, так что пока еще только вылизываем и улучшаем форум ;)

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам