La aplicación de destino está escrita en Delphi (win32 no .NET) y es de código cerrado.¿Cómo elegir programáticamente un elemento del menú contextual en otra aplicación?
La acción que deseo invocar se llama Copiar, pero no hay un atajo de teclado obvio. (Ctrl + Insert hace las cosas mal y Ctrl + C no hace nada)
puedo encontrar mi objetivo HWND
y persuadir a él para abrir el menú contextual (que responde a WM_RBUTTONDOWN/UP
no WM_CONTEXTMENU
). Desde el menú HWND
puedo incluso obtener el control del menú a través del MN_GETHMENU
y encontrar la opción del menú que quiero. Simplemente no sé los detalles de cómo "elegir" el artículo. No ayuda que el menú sea "no modal", es decir. es HWND
no es propiedad, por lo que no sé cuál de las muchas ventanas ocultas TPUtilWindow
es el verdadero propietario; de lo contrario, probablemente podría enviar un WM_COMMAND
y ni siquiera abrir el menú, lo que sería preferible.
Aunque estoy seguro de que facilita todo tipo de ataques, preferiría no insertar código en el proceso de destino.
Respuestas aceptadas en cualquier idioma.
Siento que habría algunas implicaciones de seguridad si algo así fuera posible, ya que eso significaría que uno puede engañar a las aplicaciones haciéndoles creer que están recibiendo información del teclado/mouse cuando están dentro ¡hecho viene de otra aplicación! No puedo pensar en ningún ejemplo concreto en este momento ... – Paggas
Si está ejecutando aplicaciones que no son de confianza ya las ha perdido. Pero eso plantea un punto: esto funciona en XP ... ¿Me pregunto si funcionaría en Vista/7? –