![]() |
![]() |
| Paypal | 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 |
|
|
|
#1
|
||||
|
||||
|
Para enviar el mensaje de presionar una tecla (F5):
Código:
PostMessage(H, WM_KEYDOWN, VK_F5, 1); // Presionar PostMessage(H, WM_KEYUP, VK_F5, 1); // Soltar |
|
#2
|
||||
|
||||
|
entonces mi ocdigo terminaria asi:
char* Nombre_de_la_clase[] = "TApplication"; // o Nulo // esto no se cambia char* Nombre_de_ventana[] = "Nombre"; // Caption de la ventana a buscar // ¿aqui puedo poner el ombre de la ventana si ya la conozoco?... es decir, la ventana que deseo actualizar es donde esta el ejecutable. //¿Pero pongo el nombre de la carpeta o la ruta a la carpeta? //...continua el codigo HWND H = FindWindow(Nombre_de_la_clase, Nombre_de_ventana); // Handle de la ventana buscada //y luego le mando el mensage tal y como está? osea: PostMessage(H, WM_KEYDOWN, VK_F5, 1); // Presionar PostMessage(H, WM_KEYUP, VK_F5, 1); // Soltar una ultima pregunta... ¿que bibliotecas tengo que declarar? muchas gracias. |
|
#3
|
||||
|
||||
|
Código:
char* Nombre_de_ventana[] = "Nombre"; // Caption de la ventana a buscar Así que no tienes que poner ningún nombre de ruta.... Si tu código, donde usas esa API, esta definido en el archivo de un formulario, donde se definen los archivos.h para el uso de las VCL, entonces no tienes que incluir nada más, por defecto ya esta incluido. Si no es así: Código:
#include <winuser.h> |
|
#4
|
||||
|
||||
|
Cita:
mira, lo probe de la sigt manera: Código:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
char* Nombre_de_la_clase[] = "TApplication"; // o Nulo
char* Nombre_de_ventana[] = "Nombre"; // Caption de la ventana a buscar
HWND H = FindWindow(Nombre_de_la_clase, Nombre_de_ventana); // Handle de la ventana buscada.
PostMessage(K, WM_KEYDOWN, VK_F5, 1); // Presionar
PostMessage(K, WM_KEYUP, VK_F5, 1); // Soltar
}
y en la otra donde llamo FindWindow, me salia "no se puede convertir *char en **char" pero luego lo puse asi: Código:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString s = Application->ExeName;
AnsiString ExePath = ExtractFilePath(s);
char Nombre_de_la_clase[] = "TApplication"; // o Nulo//quito el *
HWND K = FindWindow( Nombre_de_la_clase, ExePath.c_str() );// Handle de la ventana buscada
PostMessage(K, WM_KEYDOWN, VK_F5, 1); // Presionar
PostMessage(K, WM_KEYUP, VK_F5, 1); // Soltar
}
Aclaro que las modificaciones que hize no son basadas en experiencia, solo estaba probando .Gracias por su ayuda. ![]() saludos. ![]() |
|
#5
|
||||
|
||||
|
Tienes razón en una cosa, equivoqué una parte del código. Debe ser así:
Código:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
char Nombre_de_la_clase[] = "TApplication"; // o Nulo
char Nombre_de_ventana[] = "Nombre"; // Caption de la ventana a buscar
HWND H = FindWindow(Nombre_de_la_clase, Nombre_de_ventana);// Handle de la ventana buscada.
//Si falla (H == NULL), por lo que no tiene sentido seguir...
if(H){
::SendMessage(H, WM_KEYDOWN, VK_F5, 1); // Presionar
::SendMessage(H, WM_KEYUP, VK_F5, 1); // Soltar
}
}
Sigues cometiendo el error de confundir el caption de la ventana con la ruta Path o el nombre del ejecutable. Haz lo siguiente: Abre una ventana del explorador, abre una carpeta (el caption puede variar al cambiar la carpeta visualizada) mira el caption y colocalo en tu código. FindWindow te devuelve un HANDLE a esa ventana, si es nulo quiere decir que no la ha localizado, en caso contrario te vale, de forma que la simulación de presionar un botón esta condicionada a que el HANDLE no sea nulo. |
|
#6
|
||||
|
||||
|
hola, gracias por tu respuesta, mi pregunta es esta:
¿la caption de la ventana es el nombre de la carpeta? si es asi: ¿no se supone que en la ruta esta el nombre de la carpeta? ¿y si saco solo el nombre de la carpteta de la ruta?¿funcionaria? de todas manreas voy a prbar algunas cosas, dependiendo lo que pase lo posteo, muchas rgacias por ayudarme, no saben cuanto he aprendido con esta discusion, muchas gracias. saludos desde Colombia. |
|
#7
|
||||
|
||||
|
Pues es posible que en el explorador el Caption sea el nombre de la carpeta, el problema es que no puedes estar seguro de esto no va a cambiar de una maquina a otra o de un Sistema Operativo a otro (versiones nuevas de Windows), o con una opción de configuración nueva... Pero si estás seguro de que siempre va a corresponder el Caption del explorador con el nombre de la carpeta, pues adelante.
Otra cosa, no pongas Nombre_de_Clase "TApplication", eso es para aplicaiones delphi o builder, coloca en su lugar NULL: Código:
HWND H = FindWindow(0, Nombre_de_ventana); Puedes experimentar también con otra API: WindowFromPoint. Te permite localizar la ventana que contiene un punto, que puede ser por ejemplo el cursor del ratón... Código:
TPoint Point; ::GetCursorPos(&Point); HWND h = WindowFromPoint(Point); Última edición por escafandra fecha: 04-04-2008 a las 19:40:35. Razón: Aclaración |
|
#8
|
||||
|
||||
|
Pues la verdad, hacerlo como pretende es escabroso, pero yo creo que ya es una cuestión de curiosidad, a ver si le sale, más que por una cuestión práctica, y como él dice:Negriz, prueba ese último código, puede funcionar, aunque no "al pié de la letra" según lo has citado. Experimenta. En una ocasión yo hice un programa para hacer una broma a un compañero de trabajo. Consistía en localizar cuando estaba jugando, para lo que utilizaba FindWindow y WindowFromPoint. Localizada la ventana del juego y conociendo que estaba en primer plano y con actividad (movimiento de ratón), esperaba 10 segundos y le minimizaba la ventana.....Fue divertido y aprendí mucho.
|
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Tab en el Explorador de Windows | vtdeleon | Noticias | 2 | 16-05-2007 00:14:09 |
| FlashMemory no se ve en Explorador | Deiv | Windows | 5 | 16-02-2007 00:28:58 |
| Ejecutar un PHP sin explorador | majaco | Internet | 1 | 24-04-2006 17:24:34 |
| Problemas con el Explorador con las PC en Red | santi33a | Windows | 0 | 20-12-2005 17:16:46 |
| Explorador de directorios. | zugazua2001 | Varios | 1 | 08-06-2005 17:48:54 |
|