Пьяная мышь

Тема в разделе "WASM.BEGINNERS", создана пользователем Izgoy, 25 июл 2009.

  1. Izgoy

    Izgoy New Member

    Публикаций:
    0
    Регистрация:
    24 июн 2009
    Сообщения:
    24
    Здравствуйте.
    Познания мои в ассемблере не велики, что можно понять из названия ветки форума в которой размещена эта тема))
    В целях получения практического опыта хочу создать программу следующего содержания:
    Назвается "Пьяная мышь". Суть вот в чем. Запущеная прога меняет траекторию движения мыши так, что она движется не по прямой относительно движений руки пользователя, а как бы "шатаясь", например по синусоиде, для начала. Иногда, к примеру раз в пол минуты курсор мыши замирает на экране(типо свалилась от поглащенного алкоголя), чтобы "вернуть" его к жизни надо будет подергать мышь вправо-влево. Иконку курсора хочу сделать анимированную, причем менять анимацию при определенных условиях, например по наступлению условия замирания курсора на экране, и его возвращения к жизни(силует человечка, подмиающегося с пола).
    Так вот, как можно задать параметры курсора, стиль и пр. не в отдельном окне а на всей области рабочего стола. Те API функции которые я нашел позволяют менять только в области своего окна. Или надо работать с драйвером? Вобщем дайте мне ключевые слова, чтобы знать, какую инфу искать, а то все что нахожу - не то.
    Благодарю Вас.
     
  2. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    А что, если получить клиентскую область рабочего стола и применить к ней новый курсор? Правда, не знаю, будет ли он другим на обычных окнах
     
  3. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    Ставь хук и делай своё дело во всех гуи прцессах, как в своём.
     
  4. Com[e]r

    Com[e]r Com[e]r

    Публикаций:
    0
    Регистрация:
    20 апр 2007
    Сообщения:
    2.624
    Адрес:
    ого..
    антиреклама алкоголя? .)
    это мы поддерживаем, это мы обеими руками!
    GetCursorPos();
    SetCursorPos();

    а курсор глобально - это только системный менять, что есть жажа и комер крайне не советуе.
    ну и да: с хендлами чужих окон работать ещё не запрещали, так что присвойте себе привелегии, а чужим окнам - курсоры, да побольше ,)
     
  5. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Comer_
    Но в этом случае придется отслеживать создание новых окон) А в варианте с хуком - нет.
    Но хук бяка, да.
     
  6. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    Great
    WindowFromPoint ни кто не отменял
     
  7. Com[e]r

    Com[e]r Com[e]r

    Публикаций:
    0
    Регистрация:
    20 апр 2007
    Сообщения:
    2.624
    Адрес:
    ого..
    max7C4
    не, это то все поняли, и даже не wfp, а getforegroundwindow, но суть в том, что надо цикл, и отслеживать, который вот грейт посчитал дурным тоном,
    а я считаю что варианта пока лучше нет, и вариант с хуком вовсе вариантом считаться не должен.
    хотя какая разница? всёравно мы выяснили что я - собирательная персона, в том числе являющаяся грейтом/
     
  8. Izgoy

    Izgoy New Member

    Публикаций:
    0
    Регистрация:
    24 июн 2009
    Сообщения:
    24
    Так, по порядку, курсор наверно придется загружать LoadCursorFromFile, щас прогу для создания *.ani только докачаю.
    Можно подробней про присвоение привилегий? неуверен что нашел именно ту информацию которая нужна.
    Так же прошу Вас немного подробней говорить про методы описанные вами, я конечно прилагаю все возможные усилия для понимания, но сами понимаете, иногда незнаеш на что опереться, вобщем от дополнительной информации не откажусь.
    Спасибо.
     
  9. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    Comer_
    так кем тогда величать.
     
  10. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    1) хук. ставишь хук на все модули на события от мыши (копай SetWindowHookEx), их же (события) и изменяешь
    2) в цикле определяешь направление движения мыши и изменяешь траекторию. (копай GetCursorPos)
    3) получаешь окно под мышкой и подменяешь его курсор (копая WindowFromPoint)
    по перекрестным ссылкам в MSDN найдешь все необходимое.