Escribir Texto en word sin teclado

26/02/2009 - 23:21 por Fernando Alonso | Informe spam
hola a todos.

Hay alguna manera de escribir texto en word desde un programa hecho
en visual c# 2003, como si se estuviera utlizando el teclado?.

Gracias...

Preguntas similare

Leer las respuestas

#6 RFOG
06/03/2009 - 09:51 | Informe spam
Quizás también tenga un problema de foco dentro de la aplicación. Un
programa son muchas ventanas, y quizás la activa sea el menú que no acepta
F1 (por poner un mero ejemplo)... Quizás una vez localizado el programa
debería recorrer las ventanas hijas (EnumChildWindows - Por la página de El
Guille explico algo similar en relación a otra cosa con MFC en mi sección de
MFC en las páginas de El Guille)... y obtener ese handle antes de poder
enviarle las teclas adecuadas...

Lo más idóneo es que instale el SPY++ que viene con los SDK de Windows y
mire el nombre exacto de la ventana que quiere localizar...

De todos modos, yo todo esto lo veo más cercano al lado oscuro... Alberto,
si no hubieras dicho varias veces que el SendKeys se salta la barrera
interprocesos y que como así parece que hace... no sé, ahí veo un potencial
gigantesco fallo de seguridad local... En teoría un proceso no puede obtener
los handles de otro proceso bajo ningún concepto, ni tampoco acceder a su
bucle de mensajes para poder inyectarle mensajes (imagina enviar un WM_QUIT
a un antivirus, o una secuencia de mensajes para desactivar el escaneo...).
Justamente antes se decía que para hacer eso había que inyectar una DLL
maliciosa en el espacio del otro proceso y que esa DLL debería abrir un
camino a través del IPC (por ejemplo, archivos mapeados en memoria, un
socket, etc)... Si ahora es posible hacerlo a través de SendKeys... Lo más
seguro es que esté yo equivocado, pero no veo dónde...

"Alberto Poblacion" wrote
in message news:
"Fernando Alonso" wrote in
message news:
Gracias alberto , pero no funciono, para ser mas exactos te dire que
le
estoy enviando pulsaciones de teclado a un programa que no es un editor
de
texto, sino que al enviarle por ejemplo, AVPAG, realiza una funcion, no
es
problema del foco , ya que si recibe numeros , letras y la tecla enter,
pero
las demas teclas funcion como F1, F2, INICIO, AVPAG, etc. el programa no
las
toma en cuenta, probe con el ON Screen Keyboard y con ese programa si
funciona, me imagino que el OSK utiliza otras funciones para enviar las
pulsaciones del teclado, la pregunta aqui es conoces otro metodo para
enviar pulsaciones , asi como lo hace el OSK?



Me imagino que el OSK debe de hacerlo llamando directamente a las APIs
de Windows. Probablemente realiza una serie de llamadas a SendMessage (o
PostMessage) en User32.dll, enviando mensajes tales como WM_KEYDOWN y
WM_KEYUP.
http://msdn.microsoft.com/en-us/library/ms644950(VS.85).aspx

Respuesta Responder a este mensaje
#7 Alberto Poblacion
06/03/2009 - 10:07 | Informe spam
"RFOG" wrote in message
news:
[...] En teoría un proceso no puede obtener los handles de otro proceso
bajo ningún concepto, ni tampoco acceder a su bucle de mensajes para poder
inyectarle mensajes (imagina enviar un WM_QUIT a un antivirus, o una
secuencia de mensajes para desactivar el escaneo...).



En Windows Vista y posterior, el envío de mensajes está sujeto al User
Interface Privilege Isolation (UIPI), de forma que el hilo de un proceso
sólo puede enviar mensajes a las colas de mensajes de otros hilos con nivel
de integridad menor o igual que el remitente. Esto afecta al SendKeys, que
(por ejemplo) no permite enviar mensajes desde un programa abierto por un
usuario "normal" a otra ventana en el mismo escritorio que haya sido abierta
por un administrador (usando el "Ejecutar como...").
Fuera de eso, efectivamente puede ocurrir lo que tú dices: si tu
hipotético antivirus tuviera en pantalla una ventanita abierta por el
usuario con un botón que diga "parar el escaneo", entonces sería posible que
desde otro programa abierto por el usuario se le enviase al antivirus la
orden de pararse a base de usar SendKeys para oprimir el botón.
Respuesta Responder a este mensaje
#8 RFOG
06/03/2009 - 12:37 | Informe spam
"Alberto Poblacion" wrote
in message news:
"RFOG" wrote in message
news:
[...] En teoría un proceso no puede obtener los handles de otro proceso
bajo ningún concepto, ni tampoco acceder a su bucle de mensajes para
poder inyectarle mensajes (imagina enviar un WM_QUIT a un antivirus, o
una secuencia de mensajes para desactivar el escaneo...).



En Windows Vista y posterior, el envío de mensajes está sujeto al User
Interface Privilege Isolation (UIPI), de forma que el hilo de un proceso
sólo puede enviar mensajes a las colas de mensajes de otros hilos con
nivel de integridad menor o igual que el remitente. Esto afecta al
SendKeys, que (por ejemplo) no permite enviar mensajes desde un programa
abierto por un usuario "normal" a otra ventana en el mismo escritorio que
haya sido abierta por un administrador (usando el "Ejecutar como...").




Ahhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh

Eso no lo sabía. Voy a buscar info sobre el UIPI...

Al final tenía yo razón: era algo que se me había escapado, je je.

Microsoft Visual C++ MVP
==Mi blog sobre programación: http://geeks.ms/blogs/rfog
Momentos Leves: http://momentosleves.blogspot.com/
Cosas mías: http://rfog.blogsome.com/
Libros, ciencia ficción y desarrollo
Cuando alguien te lame las suelas de los zapatos, colócale el pie encima
antes de que comience a morderte.
Respuesta Responder a este mensaje
#9 RFOG
06/03/2009 - 13:20 | Informe spam
Vaya, está muy bien pensado el tema del UIPI. Con él ya no es posible la
escalada de privilegios a través del bucle de mensajes, y encima las
aplicaciones pueden "desconectar" mensajes mediante
ChangeWindowMessageFilter()... Ya no es posible inyectar código ni insertar
una DLL maliciosa... Ciertamente solo por eso vale la pena deshacerse de
todos los XP y anteriores...

Parece ser que ni siquiera es posible inyectar
mensajes/teclas/mensajes-del-ratón a través de un hook global si no tienes
prioridad superior a quien se lo vas a hacer... je je, malos tiempos para
los piratones hacedores de virus...
Microsoft Visual C++ MVP
==Mi blog sobre programación: http://geeks.ms/blogs/rfog
Momentos Leves: http://momentosleves.blogspot.com/
Cosas mías: http://rfog.blogsome.com/
Libros, ciencia ficción y desarrollo
Cuando alguien te lame las suelas de los zapatos, colócale el pie encima
antes de que comience a morderte.


"Alberto Poblacion" wrote
in message news:
"RFOG" wrote in message
news:
[...] En teoría un proceso no puede obtener los handles de otro proceso
bajo ningún concepto, ni tampoco acceder a su bucle de mensajes para
poder inyectarle mensajes (imagina enviar un WM_QUIT a un antivirus, o
una secuencia de mensajes para desactivar el escaneo...).



En Windows Vista y posterior, el envío de mensajes está sujeto al User
Interface Privilege Isolation (UIPI), de forma que el hilo de un proceso
sólo puede enviar mensajes a las colas de mensajes de otros hilos con
nivel de integridad menor o igual que el remitente. Esto afecta al
SendKeys, que (por ejemplo) no permite enviar mensajes desde un programa
abierto por un usuario "normal" a otra ventana en el mismo escritorio que
haya sido abierta por un administrador (usando el "Ejecutar como...").
Fuera de eso, efectivamente puede ocurrir lo que tú dices: si tu
hipotético antivirus tuviera en pantalla una ventanita abierta por el
usuario con un botón que diga "parar el escaneo", entonces sería posible
que desde otro programa abierto por el usuario se le enviase al antivirus
la orden de pararse a base de usar SendKeys para oprimir el botón.



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida