2010-07-15 23 views

Respuesta

4

SetWindowsHookEx es más como el viejo InputManager corte, en el sentido de que se cambia el código de una aplicación desde el interior de una librería compartida/un plugin cargado a la misma.

Vea SIMBL para un inyector de código ya hecho para otro proceso. Para las clases Objective-C, necesita usar method swizzling. No he intentado reemplazar las funciones C/clases C++, pero seguramente se puede hacer usando mach_override. Vea también this blog post.

Pero, por lo general, si desea modificar una aplicación de interfaz gráfica de usuario, basta con acceder a las clases de Objective-C.

0

Las tomas de eventos de cuarzo pueden monitorear y modificar eventos de bajo nivel, como pulsaciones de teclas y clics del mouse, sujeto a algunas restricciones. ¿Puedes decir más sobre lo que quieres hacer?

+0

Digamos que quería enganchar la función que carga asdf.dylib. La idea es obligar a una aplicación a cargar mi propia versión personalizada de asdf.dylib, sin utilizar el truco DYLD_INSERT_LIBRARIES. – karlphillip

0

¿Qué intentas lograr, específicamente? ¿Puedes explicar por qué quieres el equivalente de Mac OS X de SetWindowsHookEx()? (Respuesta breve: no hay una. Respuesta mediana: casi todo lo que puede hacer con SetWindowsHookEx() en Windows se puede hacer en Mac OS X de alguna otra manera, más OO.)

+0

En Windows 'SetWindowsHookEx' puede ayudarle a recibir eventos de ** otros ** procesos. Tales como el cierre de la ventana, maximizar la ventana ... etc. ¿Estás seguro de que esto podría hacerse en Mac OS X? –

+0

Esta es una respuesta muy antigua a una pregunta muy antigua. :) Estaba diciendo que, si supiéramos el problema que el desarrollador original estaba tratando de resolver, podríamos recomendar enfoques alternativos. –