Пьяная мышь

Discussion in 'WASM.BEGINNERS' started by Izgoy, Jul 25, 2009.

  1. Izgoy

    Izgoy New Member

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

    MSoft New Member

    Blog Posts:
    0
    А что, если получить клиентскую область рабочего стола и применить к ней новый курсор? Правда, не знаю, будет ли он другим на обычных окнах
     
  3. punxer

    punxer Андрей

    Blog Posts:
    0
    Ставь хук и делай своё дело во всех гуи прцессах, как в своём.
     
  4. Com[e]r

    Com[e]r Com[e]r

    Blog Posts:
    0
    антиреклама алкоголя? .)
    это мы поддерживаем, это мы обеими руками!
    GetCursorPos();
    SetCursorPos();

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

    wasm_test wasm test user

    Blog Posts:
    0
    Comer_
    Но в этом случае придется отслеживать создание новых окон) А в варианте с хуком - нет.
    Но хук бяка, да.
     
  6. max7C4

    max7C4 New Member

    Blog Posts:
    0
    Great
    WindowFromPoint ни кто не отменял
     
  7. Com[e]r

    Com[e]r Com[e]r

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

    Izgoy New Member

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

    max7C4 New Member

    Blog Posts:
    0
    Comer_
    так кем тогда величать.
     
  10. max7C4

    max7C4 New Member

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