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
}
}
El error estaba en definir un puntero a un puntero char* P[]. Cuando lo que quería definir es un puntero a una cadena, es decir o simplemente char* P ó char P[].
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.