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 claseApplication
de JavaFX, que se utiliza para crear aplicaciones con interfaces gráficas.import javafx.scene.Scene
: Importa la claseScene
de JavaFX, que representa el contenido visual de una ventana.import javafx.scene.control.Button
: Importa la claseButton
de JavaFX, que representa un botón en la interfaz gráfica.import javafx.scene.control.TextArea
: Importa la claseTextArea
de JavaFX, que se utiliza para mostrar y editar texto en la interfaz.import javafx.scene.layout.VBox
: Importa la claseVBox
de JavaFX, que es un contenedor vertical para organizar elementos en la interfaz.import javafx.stage.Stage
: Importa la claseStage
de 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 objetoStage
como 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 objetoVBox
llamadolayout
con un espaciado vertical de 10 píxeles para organizar elementos en la interfaz.val processListTextArea = TextArea()
: Crea un objetoTextArea
llamadoprocessListTextArea
para 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 objetoScene
con el contenedorlayout
y 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 objetosProcessHandle
representando los procesos en ejecución y la convierte en una lista.val processList = processHandle.joinToString("\n") { ... }
: Convierte la lista deProcessHandle
en 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óngetProcessName
que recibe un objetoProcessHandle
y 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óngetProcessCommand
que recibe un objetoProcessHandle
y 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.launch
y pasando la claseProcessListApp
como argumento.