Ensamblador - Abrir un archivo

 
Vista:

Abrir un archivo

Publicado por DamyMr (2 intervenciones) el 20/07/2003 01:39:54
Estoy programando una pequeña aplicación que responda a determinadas combinaciones de teclas, bajo windows. Para ello utilizo un gancho (HOOK) en el teclado y busco hasta que una combinación sea reconocida y efectuar alguna función como iniciar el reproductor de windows o similares. Aun no está muy avanzada, sin embargo me he encontrado con un problema que no soy capaz de resolver, quiero guardar en un fichero log las operaciones realizadas. El problema es que dentro del procedimiento de que controla el teclado no consigo abrir el archivo, escribir en él y cerrarlo; o tampoco abrirlo al iniciar la dll y cerrarlo al finalizar, escribiendo en el mencionado procedimiento la información. Consigo que funcione si la ventana que llama a los procedimientos es la ventana activa, pero si no está activa (que es lo que interesa) me da error.
Lo curioso es que si en vez de llamar a WriteFile hago un simple MessageBox es llamado siempre aunque la ventana no sea la activa en ese momento. Agradeceria cualquier tipo de ayuda al respecto.
DamyMr
PD: Utilizo MASM y windows XP
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Abrir un archivo

Publicado por maCo (25 intervenciones) el 22/07/2003 20:42:25
no he creado un hook de teclado en masm32, pero si uno de tipo CBT en masm32.

supongo que estas creando un hook global (system wide), recuerda que tienes que compartir unos valores entre las instancias de la DLL, ya que sera cargada una instancia de la DLL en cada proceso activo en la PC.

puedes crear un segmento nuevo y poner unas variables que compartiras, o como hago yo es compartir el segmento no inicializado (data?) que es su nombre para el compilador es .BSS.
puedes ponerlo como shared en el linker o en el def.

para manejar archivos puedes usar CreateFile(), WriteFile(), y CloseHandle()

Sabes creo que se puede hacer un hook al teclado sin necesidad de una dll, solo funciona en nt\2000\xp y el tipo de hook es el WH_KEYBOARD_LL
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Abrir un archivo

Publicado por DamyMr (2 intervenciones) el 26/07/2003 19:14:33
Gracias por tu ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar