[SOLUCIONADO] System("")

  • 3 Respuestas
  • 281 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado victorio95

  • *
  • Underc0der
  • Mensajes: 2
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email

[SOLUCIONADO] System("")

  • en: Octubre 28, 2019, 11:20:41 am
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
« Última modificación: Octubre 29, 2019, 04:15:00 pm por Gabriela »

Conectado DtxdF

  • *
  • Moderator
  • Mensajes: 744
  • Actividad:
    100%
  • Reputación 16
  • Eres un auto y tienes dos opciones: Parar o Seguir
    • Ver Perfil
    • Mi repositorio de Github donde encontraras herramientas para tu trabajo.
    • Email

Re:system("")

  • en: Octubre 28, 2019, 12:15:24 pm
¿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:

Código: Bash
  1. echo 1 | 2jpeg -src rutaInput -dst rutaOutput -jpeg mode:quality:100

Lo único que tienes que hacer es adaptarlo ...

- DtxdF
« Última modificación: Octubre 29, 2019, 03:13:38 pm por blackdrake »
Los seres humanos son robots, cuyo combustible es el afanado dinero.

Desconectado victorio95

  • *
  • Underc0der
  • Mensajes: 2
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email

Re:system("")

  • en: Octubre 29, 2019, 06:26:39 am
buenas,

si me escribe el 1 que necesito pero sigue esperando a que le de al Intro  :'( :'(

Desconectado Solid Water

  • *
  • Underc0der
  • Mensajes: 145
  • Actividad:
    10%
  • Reputación 6
  • (:{
    • Ver Perfil

Re:system("")

  • en: Octubre 29, 2019, 04:03:34 pm
Esta es la solución clara:
Te la muestro con un ejemplo, tenemos el siguiente programa C#:
Código: C#
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace ConsoleApplication1
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.            
  13.             string a, b, c;
  14.             System.Console.WriteLine("ingrese a: \n");
  15.             a = System.Console.ReadLine();
  16.             System.Console.WriteLine("ingrese b: \n");
  17.             b = System.Console.ReadLine();
  18.             System.Console.WriteLine("ingrese c: \n");
  19.             c = System.Console.ReadLine();
  20.            
  21.             System.Console.WriteLine("a:" + a + " b:" + b + " c:" + c);
  22.  
  23.             Console.ReadKey();
  24.         }
  25.     }
  26. }
  27.  
Un simple programa que pide que le ingreses 3 valores..
Le enviamos el siguiente comando cmd para ingresar los 3 valores automaticamente:

Código: Text
  1. (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.
Código: C
  1. #include <windows.h>
  2.  
  3. // ENTER key down
  4. keybd_event(VK_RETURN, 0x9C, 0, 0);
  5.  
  6. // ENTER key up
  7. keybd_event(VK_RETURN, 0x9C, KEYEVENTF_KEYUP, 0);

Si  quieres hacerlo mejor primero dale el foco a esa ventana o que se lo envie..

Código: C
  1. HWND TuVentana = FindWindow(_T("TuVentana"), NULL);
  2.  
  3. SendMessage(TuVentana, WM_KEYDOWN, VK_RETURN, 0);

Prueba también:
Código: C
  1. PostMessage(TuVentana, WM_KEYDOWN, VK_RETURN, 0);

Saludos,
« Última modificación: Octubre 29, 2019, 04:29:38 pm por Solid Water »



 

[SOLUCIONADO] ¿Kali Linux o Kali Linux Ligth ?

Iniciado por worq

Respuestas: 2
Vistas: 26790
Último mensaje Noviembre 21, 2017, 12:28:54 pm
por Codig0Bit
[SOLUCIONADO] Multiuploader de imagenes con mysql, hosting de imagenes con mysql

Iniciado por graphixx

Respuestas: 4
Vistas: 14197
Último mensaje Marzo 26, 2013, 05:42:58 pm
por Xt3mP
[SOLUCIONADO] ¿Como publicar un software como software libre?

Iniciado por FuriosoJack

Respuestas: 2
Vistas: 11952
Último mensaje Mayo 23, 2017, 07:24:22 am
por HATI
[SOLUCIONADO] Linux Mint, errores, errores y mas errores...

Iniciado por n1sendev

Respuestas: 12
Vistas: 18220
Último mensaje Noviembre 22, 2017, 06:50:55 am
por RuidosoBSD
[SOLUCIONADO] Qué se puede y no se puede hacer

Iniciado por phineas13

Respuestas: 14
Vistas: 7148
Último mensaje Diciembre 11, 2013, 10:46:33 am
por CrazyKade