Bueno, primer post. Sed amables jajaja.
Al lío,
estoy haciendo un programa en C++ el cual llama a un programa externo mediante la función system(ruta). Pero dicho programa tiene una especie de "switch". Ésto hace que no pueda completarse la llamada y se queda en espera hasta que, en este caso, le de al 1.
el programa al que llamo es 2jpeg.exe:
Código:
system("2jpeg -src rutaInput -dst rutaOutput -jpeg mode:quality:100");
al ejecutar esto en el cmd es cuando me sale el "switch":
Before you start converting process,
please note that free version of 2Jpeg
adds one demo label to the output file
1- Continue, 2- Order FULL version, 3- Exit
entonces... ¿Es posible decirle desde C++ pasarle el 1 para que continúe con el proceso?
Gracias de antemano
¿Intentaste con tuberias?; Porque me parece que el programa te pide que ingreses la entrada de un dato (Estilo un «raw_input» en python2.x o «input» en python3).
En tu caso yo usaria:
echo 1 | 2jpeg -src rutaInput -dst rutaOutput -jpeg mode:quality:100
Lo único que tienes que hacer es adaptarlo ...
- DtxdF
buenas,
si me escribe el 1 que necesito pero sigue esperando a que le de al Intro :'( :'(
Esta es la solución clara:
Te la muestro con un ejemplo, tenemos el siguiente programa C#:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string a, b, c;
System.Console.WriteLine("ingrese a: \n");
a = System.Console.ReadLine();
System.Console.WriteLine("ingrese b: \n");
b = System.Console.ReadLine();
System.Console.WriteLine("ingrese c: \n");
c = System.Console.ReadLine();
System.Console.WriteLine("a:" + a + " b:" + b + " c:" + c);
Console.ReadKey();
}
}
}
Un simple programa que pide que le ingreses 3 valores..
Le enviamos el siguiente comando cmd para ingresar los 3 valores automaticamente:
(echo "valor para a" && echo "valor para b" && echo "valor para c")|ConsoleApplication1.exe
IMPRIME EN PANTALLA:
a:"valor para a" b:"valor para b" c:"valor para c"
-----------------------------------------------------------------------------------------
Por si quieres aprender algo más y una solución más sucia pero muy útil de aprender:
Puede simular keystrokes desde c++:
Aunque en este caso tendras que usar threads o crear un programa externo ya que el anterior estara bussy con lo que ejecutaste de cmd.
#include <windows.h>
// ENTER key down
keybd_event(VK_RETURN, 0x9C, 0, 0);
// ENTER key up
keybd_event(VK_RETURN, 0x9C, KEYEVENTF_KEYUP, 0);
Si quieres hacerlo mejor primero dale el foco a esa ventana o que se lo envie..
HWND TuVentana = FindWindow(_T("TuVentana"), NULL);
SendMessage(TuVentana, WM_KEYDOWN, VK_RETURN, 0);
Prueba también:
PostMessage(TuVentana, WM_KEYDOWN, VK_RETURN, 0);
Saludos,