FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#21
|
|||
|
|||
No me parece mucho más complicado de lo que acabamos de hacer, si eres capaz de hacerlo todo sólo mediante teclado.
Lo más inmediato que se me ocurre es contar el nº de veces que pulsas "tab" para llegar a los edits que quieres completar y "escribir" lo que quieras. Lo mismo para llegar a los botones y "escribir" un "enter". Lo difícil será presionar la imagen esa de "Communication Settings" si no puedes llegar a ella con acceso rápido o con tabulaciones. Tal vez una solución más "elegante" (no la he probado,sólo teórica) sería usar la función GetWindow con parámetros GW_CHILD y GW_HWNDNEXT e ir probando hasta que dieses con el Edit en cuestión (NOTA: los edit se tratan como ventanas hijas de la ventana principal). He llegado a esta conclusión haciendo pruebas con ele Notepad y viendo que la ventana padre (FindWindow (NULL,"Unbenannt - Editor") tiene dos hijos (doy por sentado, sin probarlo, que serían el menú y el edit) y que por eso esta función te permitía escribir en la "ventana Edit" FindWindowEx(wnd,0,"Edit",NULL); , que realmente es un Edit y no un Window. NO ESTOY SEGURO DE ESTO ÚLTIMO. La solución de las tabulaciones seguro que es infinitamente más sencilla que la otra.... Un saludo, LoPiTaL |
#22
|
|||
|
|||
Ya me acordé que ese programa que leía los Handles de otros programas lo tenía grabado en mi Flash. Aqui les adjunto.
Saludos. Abel |
#23
|
|||
|
|||
Cita:
Me olvidaba, si haces correr el WinCtrl, en la parte de abajo al medio, hay un cuadrito que tienes que marcarlo, sinó no puedes hacer nada. Eso solo te indica que lo que vayas a hacer es tu responsabilidad (está todo en alemán). Tambien tengo el código de este programa, pero muchas cosas no lo entendí. Como te darás cuenta, con este puedes manipular otras aplicaciones. Saludos. Abel. |
#24
|
|||
|
|||
Es interesante el programa este, no soy capaz de hacer gran cosa con él, pero demuestra que se puede acceder a todas las "ventanas" de una aplicación, como ya te había comentado, tanto a los edits como a los forms, etc... y de hecho si utilizas el botón ese de "Send Command" a cualquiera de ellos lo que hace es cambiarle el texto, ya sea el Caption en los labels, forms, etc... o el Text en los Edits... Lo malo es que no todas las "ventanas" tienen nombre (o al menos no aparece), entonces no sabes realmente a cuál de ellas le estás mandando cosas si no vas probando... y claro, tal y como te avisa la aplicación, "es tu responsabilidad"
Un saludo, LoPiTaL |
#25
|
|||
|
|||
estuve haciendo experimentos y no logro meter la ruta en la ventana "Abrir". Esto es lo que hice:
char s[200]="O:\\NU\\Projects\\FuA\\CC_EL\\Centerdaten\\ECU_Test\\Projects\\DQ200_G2\\Tools\\EcuFlashTool\\Flas hMonitorEOL\\DQ200G2_Flash_Monitor_EOL.ini"; wnd = FindWindow (NULL,"ECU Flash Tool"); BringWindowToTop(wnd); keybd_event(VK_CONTROL, 0, 0, 0); keybd_event(0x4F, 0, 0, 0); keybd_event(0x4F, 0, KEYEVENTF_KEYUP, 0); keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0); wnd = FindWindow (NULL,"Open File"); BringWindowToTop(wnd); for( i= 0;i<= strlen(s);i++) { keybd_event((int)s[i], 0, 0, 0); keybd_event((int)s[i], 0, KEYEVENTF_KEYUP, 0); } el problema es que los signos ":" y "\" no los quiere escribir. Tienes alguna idea de cómo añado estos signos? Saludos. Abel. |
#26
|
|||
|
|||
Hola a todos,podría por favor alguien traducirme esto a C, yo me hice un rollo y no me resulta.
Gracias de antemano. Abel. procedure Keyb_Event(C: CHAR); var S: WORD; begin S:= VkKeyScan(C); if(S and $0100) <> 0 then keybd_event(VK_SHIFT,0,0,0); if(S and $0200) <> 0 then keybd_event(VK_LCONTROL,0,0,0); if(S and $0400) <> 0 then keybd_event(VK_LMENU,0,0,0); keybd_event(S,0,0,0); keybd_event(S,0,KEYEVENTF_KEYUP,0); if(S and $0100) <> 0 then keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0); i f(S and $0200) <> 0 then keybd_event(VK_LCONTROL,0,KEYEVENTF_KEYUP,0); if(S and $0200) <> 0 then keybd_event(VK_LMENU,0,KEYEVENTF_KEYUP,0); end; |
#27
|
|||
|
|||
Cita:
A mí me ha funcionado a la perfección. Un saludo, LoPiTaL |
#28
|
||||
|
||||
Esa función la escribí yo para resolver la duda que ahora presentas y ya la traduje aquí. El problema es que con keybd_event no se pueden simular caracteres conseguidos con teclas modificadoras como AltGr (Ctl+Alt). Por ese motivo escribí una nueva versión que ahora te vuelvo a presentar:
Código:
// El parámetro C es el carácter que queremos escribir. Keyb_Event(char C) { WORD S = VkKeyScan(C); if(S & 0x0100) keybd_event(VK_SHIFT,0,0,0); if(S & 0x0200) keybd_event(VK_LCONTROL,0,0,0); if(S & 0x0400) keybd_event(VK_LMENU,0,0,0); keybd_event(S,0,0,0); keybd_event(S,0,KEYEVENTF_KEYUP,0); if(S & 0x0100) keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0); if(S & 0x0200) keybd_event(VK_LCONTROL,0,KEYEVENTF_KEYUP,0); if(S & 0x0400) keybd_event(VK_LMENU,0,KEYEVENTF_KEYUP,0); } Última edición por escafandra fecha: 26-05-2010 a las 15:36:37. |
#29
|
|||
|
|||
Cita:
Justamente a mi no me resultaban esos Caracteres: ":", especialmente el "\", pero ahora implementé tu código a mi programa y .... por fin. Muchas gracias por vuestro tiempo y las respuestas. Esta tarde seguiré implementando mi programa, mi siguiente desafío es hacer que de alguna forma tengo que simular que presiono con el ratón en el "Communication Settings" (pueden ver el PDF que adjunté antes). La idea que me dió LoPiTal sobre usar el TAB varias veces hasta encontrar este ícono, en este caso no resulta ; solo se puede acceder a esa ventana usando el ratón. Talvez ustedes tienen otra idea, les agradecería. Saludos Abel. |
#31
|
|||
|
|||
Hola Escafandra,
lo acabo de probar y funciona, gracias por ese aporte. Ahora realizaré lo demas que ya no es problema. Saludos desde Berlin. Abel |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Acceder a una aplicación externa | FDB | Varios | 3 | 22-01-2008 13:45:02 |
Aplicacion externa a c++ | alloger | C++ Builder | 1 | 28-10-2006 00:37:09 |
Manipular una aplicacion externa | lookmydoom | API de Windows | 2 | 09-08-2006 22:22:52 |
Ejecutar comandos en aplicación externa | José Craviotto | Varios | 1 | 03-02-2006 13:21:28 |
Ejecutar aplicación externa | taita | API de Windows | 4 | 06-08-2005 23:45:57 |
|