![]() |
![]() |
| 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
|
||||
|
||||
|
Cita:
Para el uso de la API, necesitas el nombre de la clase en una cadena de caracteres, es decir "TApplication" que es un char* Código:
char* Nombre_de_la_clase[] = "TApplication"; Saludos. |
|
#2
|
||||
|
||||
|
Osea que:
HWND H = FindWindow(Nombre_de_la_clase, Nombre_de_ventana); // Handle de la ventana buscada me almacena en la variavle HWND H la ventana que queria actualizar y ahora solo tengo que usar PostMessage... el problema es: BOOL PostMessage( HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam); lo que conozco es: HWND hwnd, es la H en donde se guardo lo de FindWindow. UINT Msg, es el mensage que quiero mostrar mos o msenos mi idea. pero la verdad no tengo conocimiento de los datos que siguien... Gracias por su ayuda, pido discupas por las molestias, pero una cosa mas... que son esos datos de postmensage. Gracias. Saludos. |
|
#3
|
||||
|
||||
|
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 |
|
#4
|
||||
|
||||
|
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. |
|
#5
|
||||
|
||||
|
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> |
|
#6
|
||||
|
||||
|
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. ![]() |
|
#7
|
||||
|
||||
|
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. |
![]() |
| 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 |
|