Aplicación gráfica sencilla en Kotlin con JavaFX para ver todos los procesos que se están ejecutando en el sistema
[crayon-6a6196a8a75f1637533575/]
import javafx.application.Application: Importa la claseApplicationde JavaFX, que se utiliza para crear aplicaciones con interfaces gráficas.import javafx.scene.Scene: Importa la claseScenede JavaFX, que representa el contenido visual de una ventana.import javafx.scene.control.Button: Importa la claseButtonde JavaFX, que representa un botón en la interfaz gráfica.import javafx.scene.control.TextArea: Importa la claseTextAreade JavaFX, que se utiliza para mostrar y editar texto en la interfaz.import javafx.scene.layout.VBox: Importa la claseVBoxde JavaFX, que es un contenedor vertical para organizar elementos en la interfaz.import javafx.stage.Stage: Importa la claseStagede JavaFX, que representa la ventana principal de la aplicación.class ProcessListApp : Application() {: Comienza la definición de la claseProcessListApp, que extiendeApplication, lo que la convierte en una aplicación JavaFX.override fun start(primaryStage: Stage) {: Inicia la implementación del métodostart, que es el punto de entrada de la aplicación JavaFX. Recibe un objetoStagecomo argumento, que representa la ventana principal.primaryStage.title = "Lista de Procesos en Ejecución": Establece el título de la ventana principal de la aplicación.val layout = VBox(10.0): Crea un objetoVBoxllamadolayoutcon un espaciado vertical de 10 píxeles para organizar elementos en la interfaz.val processListTextArea = TextArea(): Crea un objetoTextAreallamadoprocessListTextAreapara mostrar texto.val refreshButton = Button("Actualizar Lista de Procesos"): Crea un botón con el texto «Actualizar Lista de Procesos».refreshButton.setOnAction { ... }: Asigna un manejador de eventos al botón. Cuando se hace clic en el botón, se ejecutará el código dentro de las llaves.layout.children.addAll(refreshButton, processListTextArea): Agrega el botón y el área de texto al contenedorlayout.val scene = Scene(layout, 500.0, 400.0): Crea un objetoScenecon el contenedorlayouty dimensiones de 500×400 píxeles.primaryStage.scene = scene: Establece la escena en la ventana principal.primaryStage.show(): Muestra la ventana principal.private fun getAllProcesses(): String {: Inicia la definición de la funcióngetAllProcesses, que obtendrá la lista de procesos en ejecución.val processHandle = ProcessHandle.allProcesses().toList(): Obtiene una lista de objetosProcessHandlerepresentando los procesos en ejecución y la convierte en una lista.val processList = processHandle.joinToString("\n") { ... }: Convierte la lista deProcessHandleen una cadena de texto, aplicando la función lambda a cada elemento de la lista."ID del Proceso: ${it.pid()}\n": Agrega el ID del proceso a la cadena de texto."Nombre del Proceso: ${getProcessName(it)}\n": Agrega el nombre del proceso (basado en el comando ejecutado) a la cadena de texto."Comando Ejecutado: ${getProcessCommand(it)}\n": Agrega el comando ejecutado por el proceso a la cadena de texto."-------------------------------------": Agrega una línea divisoria.return processList: Retorna la cadena de texto que representa la lista de procesos.private fun getProcessName(process: ProcessHandle): String { ... }: Define la funcióngetProcessNameque recibe un objetoProcessHandley devuelve el nombre del proceso.return process.info().command().orElse("Desconocido"): Utiliza el métodoinfo().command()para obtener el nombre del proceso o «Desconocido» si no está disponible.private fun getProcessCommand(process: ProcessHandle): String { ... }: Define la funcióngetProcessCommandque recibe un objetoProcessHandley devuelve el comando ejecutado por el proceso.return process.info().commandLine().orElse("Desconocido"): Utiliza el métodoinfo().commandLine()para obtener el comando ejecutado o «Desconocido» si no está disponible.fun main() { ... }: Define la funciónmain, que inicia la aplicación JavaFX llamando aApplication.launchy pasando la claseProcessListAppcomo argumento.