Доброго времени суток.
Меня интересует, как можно создать хук на систему (а именно на WM_SETCURSOR) без использования длл. Хотелось бы увидеть либо кусок кода либо линк на сиё чудо.
Результат всей этой фигни должен быть таков:
Во всех окна, во всех, должен стоять один и тот же курсор, который поставлю я. Если система пытается изменить его, то срабатывает хук и перекрывается сообщение.
Спасибо за внимание,
SUnteXx
Nobody is perfect. I am nobody
Здравствуйте SUnteXx, Вы писали:
SUX>Доброго времени суток.
SUX>Меня интересует, как можно создать хук на систему (а именно на WM_SETCURSOR) без использования длл. Хотелось бы увидеть либо кусок кода либо линк на сиё чудо.
В MSDN утверждается, что сие не возможно (без dll).
SUX>Результат всей этой фигни должен быть таков:
SUX>Во всех окна, во всех, должен стоять один и тот же курсор, который поставлю я. Если система пытается изменить его, то срабатывает хук и перекрывается сообщение.
Маньяк.

А пользователь этого хочет?
SUX>Спасибо за внимание,
SUX> SUnteXx
Здравствуйте SUnteXx, Вы писали:
Если бы в MSDN было всё описано, то и не спрашивали бы
#define CODE "MY_CODE"
#pragma comment(linker,"/BASE:0x99990000") // Хороший адрес, вряд-ли там кто-то бывает
#pragma comment(linker,"/merge:.rdata="CODE) // Все секции в одну загони
#pragma comment(linker,"/merge:.rsrc="CODE)
#pragma comment(linker,"/merge:.reloc="CODE)
#pragma comment(linker,"/merge:.idata="CODE)
#pragma comment(linker,"/merge:.data="CODE)
#pragma comment(linker,"/merge:.text="CODE)
#pragma comment(linker,"/section:"CODE",SERW") // Атрибуты: Shared — Execute — Read — Write
И ДЛЛ не понадобится вообще
#4 04/21/02 17:40:38 Цитировать » Править » Удалить
--------------------------------------------------------------------------------
Можно ли пользовать глобальные хуки без выкладывания callback функции в отдельную dll
Можно...
#define CODE "HOOKER"
#pragma code_seg(CODE)
// Выбрать имя секции
#pragma comment(linker,"/section:"CODE",SERW")
// Атрибуты секции: Shared — Execute — Read — Write
#pragma comment(linker,"/merge:.text="CODE)
#pragma comment(linker,"/merge:.rdata="CODE)
#pragma comment(linker,"/merge:.reloc="CODE)
#pragma comment(linker,"/merge:.idata="CODE)
#pragma comment(linker,"/merge:.data="CODE)
// Слить все секции в одну, чтобы расшарено было всё
//#pragma comment(linker,"/merge:.rsrc="CODE)
// Не сливать .RSRC, потому что из неё потом ничего не вытащишь...
// не знаю чё за глюк
#pragma comment(linker,"/BASE:0x87650000")
// Выбрать хороший адрес, где никого никогда не будет...
Здравствуйте Алексей Петров, Вы писали:
АП>Маньяк.
А пользователь этого хочет?
А кто его спрашивает?

Это надо всего на несколько сек, выбрать окно, а потом уже ставить нормальные курсоры!
Nobody is perfect. I am nobody
Здравствуйте ADK, Вы писали:
ADK>Если бы в MSDN было всё описано, то и не спрашивали бы
ADK>#define CODE "MY_CODE"
ADK> .
ADK> .
ADK> .
ADK>// Выбрать хороший адрес, где никого никогда не будет...
10x. А можЁт у тя или кого-нить другого пример есть? Если есть пример, то можете кинуть на SUnteXx@pisem.net
Nobody is perfect. I am nobody
Здравствуйте Аноним, Вы писали:
Sovetchiki, a probovali li vy tak delat' ? chto za adresa vy stavite bolshe chem 0x80000000, neuzheli windows ee v kernel space zagruzit ?