Comunidad Gambas-es
[SOLUCIONADO] ¿Cómo enviar «Control+C » a un TerminalView? - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forum-3.html)
+--- Foro: General (https://gambas-es.org/forum-4.html)
+--- Tema: [SOLUCIONADO] ¿Cómo enviar «Control+C » a un TerminalView? (/thread-1874.html)



¿Cómo enviar «Control+C » a un TerminalView? - Grandamakulo - 24-02-2025

Pues eso, compañeros, la pregunta del asunto: ¿Cómo detener un proceso del terminal con «Control+C»?
Muchas gracias de antemano.


RE: ¿Cómo enviar «Control+C » a un TerminalView? - alberto-moyano - 24-02-2025

Hola, yo uso el código que pongo a continuación dentro de un módulo (junto con otras funciones) para asegurarme que en la salida del programa no queden residuos, puedes asignar estas ordenes a un botón o a un menú con un acceso rápido.

Saludos

Código:
  ' Intenta detener el proceso de Bash
  Try FMain.$Bash.Kill
  ' Espera un breve período para permitir que el proceso termine
  Wait 0.1
  ' Verifica si el proceso aún está activo
  If FMain.$Bash.State = Process.Running Then
    ' Si el proceso sigue en ejecución, fuerza su terminación
    Try FMain.$Bash.Terminate
    Wait 0.1
  Endif
  ' Si el proceso aún no ha terminado, muestra un mensaje de advertencia
  If FMain.$Bash.State = Process.Running Then
    Message.Warning("El proceso no pudo ser detenido.")
  Endif



RE: ¿Cómo enviar «Control+C » a un TerminalView? - Shordi - 25-02-2025

Pues igual que le envías un comando con el método input. Construye la cadena con algo así como key["Ctrl"]+key["C"] (Estoy escribiendo con el móvil y de memoria, o sea que seguro que no es así la cadena dichosa) pero eso debería funcionar.

Saludos


RE: ¿Cómo enviar «Control+C » a un TerminalView? - Grandamakulo - 25-02-2025

Hola:
@alberto-moyano: me va perfecto para terminar bien y cerrar el programa, pero no para continuar usando el terminal.
@Shordi: una vez que tengo montado el código de tecla, ¿cómo lo asigno a una cadena válida para el Terminal.Input()?
Gracias a ambos.

---

Vale, lo encontré. La cadena a enviar a .Input  es String.Chr(3). Así de simple, jajaja.