Código:
void simulacion(char file[30])
{
char archivo_simulacion[150] = "L:\\Programas\\Medidas\\Simulaciones\\";
FILE *terminado = fopen("C:\\Program Files\\PPP\\medios\\auxi.red","r");
int i;
strcat(archivo_simulacion,file);
if (terminado != NULL)
{
fclose(terminado);
remove("C:\\Program Files\\PPP\\medios\\auxi.red");
}
ShellExecute(NULL, TEXT("open"), TEXT("C:\\Program Files\\PPP\\ing.exe"), TEXT(archivo_simulacion), NULL, SW_SHOWNORMAL);
Sleep(6500);
SetCursorPos(500, 35);
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, GetMessageExtraInfo());
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, GetMessageExtraInfo());
terminado = fopen("C:/Program Files/PPP/medios/auxi.red","r");
while (terminado == NULL)
{
/*Sleep(1000);*/
terminado = fopen("C:/Program Files/PPP/medios/auxi.red","r");
}
fclose(terminado);
}
Ésta es la parte del código que corre una simulación con un programa externo; la simulación ha acabado cuando aparece el archivo auxi.red.
Pegándolo veo una cosa de la que no me había dado cuenta. En algunas partes tengo \\ y en otras /; no las había corregido todas. El caso es que ShellExecute me daba error sino era con \\, pero el resto de órdenes parece que van bien con / (en principio quise usar / porque leí que funcionarían en Windows y Linux). ¿Dependiendo de la función a la que llame admiten las \\ o /?
Una curiosidad ya que estamos; ¿es un poco exagerado el WHILE comprobando continuamente? ¿es mejor poner ese retardo en cada iteracción?
Saludos.
Editado: el código anterior funciona a pesar de \\ y /.