|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
import javafx.application.Application import javafx.scene.Scene import javafx.scene.control.Button import javafx.scene.control.TextArea import javafx.scene.layout.VBox import javafx.stage.Stage import kotlin.streams.toList class ProcessListApp : Application() { override fun start(primaryStage: Stage) { primaryStage.title = "Lista de Procesos en Ejecución" val layout = VBox(10.0) val processListTextArea = TextArea() val refreshButton = Button("Actualizar Lista de Procesos") refreshButton.setOnAction { val processList = getAllProcesses() processListTextArea.text = processList } layout.children.addAll(refreshButton, processListTextArea) val scene = Scene(layout, 500.0, 400.0) primaryStage.scene = scene primaryStage.show() } private fun getAllProcesses(): String { val processHandle = ProcessHandle.allProcesses().toList() val processList = processHandle.joinToString("\n") { "ID del Proceso: ${it.pid()}\n" + "Nombre del Proceso: ${getProcessName(it)}\n" + "Comando Ejecutado: ${getProcessCommand(it)}\n" + "-------------------------------------" } return processList } private fun getProcessName(process: ProcessHandle): String { return process.info().command().orElse("Desconocido") } private fun getProcessCommand(process: ProcessHandle): String { return process.info().commandLine().orElse("Desconocido") } } fun main() { Application.launch(ProcessListApp::class.java) } |
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.

