Criando uma aplicação que mostra os processos em execução

Bom amigos, nesse artigo vou mostrar como criar uma aplicação que mostra os processos que estão em execução no Linux utilizando o Kylix. É bem simples!

[ Hits: 9.211 ]

Por: Perfil removido em 08/01/2004


Introdução



Bom amigos, primeiramente vamos criar uma nova aplicação. No form1 vamos inserir um componente listview, em seguida vamos clicar em cima da listview1 com o botão direito do mouse e deveremos selecionar o Columns Editor. Agora vamos adicionar 5 colunas. Veja no exemplo abaixo:

Editing ListView1.Columns

0 - PID
1 - Term
2 - Status
3 - Tempo
4 - Linha

O tamanho das colunas devem ficar dessa forma na caixa de propriedades:

PID                 Width: 50
Term                Width: 50
Status              Width: 50
Tempo               Width: 50
Linha de Comando    Width: 500

Agora vamos criar um botão com caption chamado "Processos". Vamos à programação: clique duas vezes sobre o botão.

Vamos declarar na diretiva uses o libc, se essa não for declarada, sua aplicação não poderá extrair dados do sistema. Veja o código abaixo:

interface

uses
  SysUtils, Types, Classes, QGraphics, QControls, QForms, QDialogs, QStdCtrls, QComCtrls, Libc;

Agora vamos voltar para a procedure do botão:

procedure TForm1.Button1Click(Sender: TObject);
var
  Processos : PIOFile;
  Linha : Array[0..254] of Char;
  LinhaStr : String;
  PosAtu : Integer;
begin
// limpa a Listview
  ListView1.Items.Clear;
// habilita o pipe para leitura para iniciar a  listagem de processos
   Processos := popen('ps axh', 'r');
// processa enquanto puder ler linhas
  while fgets(Linha,255,Processos) <> nil do begin
// converte o PChar para String para facilitar a manipulação dos dados
    LinhaStr := Trim(String(Linha));
    with Listview1.Items.Add do begin
// coloca o inicio da linha em um caption
    PosAtu := Pos(' ',LinhaStr);
    if PosAtu <> 0 then begin
    Caption := Copy(LinhaStr,1,PosAtu-1);
    LinhaStr := Trim(copy(LinhaStr, PosAtu,
    Length(LinhaStr)));
    end
    else begin
    Caption := LinhaStr;
    LinhaStr := '';
    end;
// o restante da linha coloca nos sub-ítens
    while LinhaStr <> '' do begin
    PosAtu := Pos(' ',LinhaStr);
    if PosAtu <> 0 then begin
    SubItems.Add(Copy(LinhaStr,1,PosAtu-1));
    LinhaStr := Trim(copy(LinhaStr, PosAtu,
    Length(LinhaStr)));
    end
    else begin
    SubItems.Add(LinhaStr);
    LinhaStr := '';
    end;
    end;
    end;
  end;
// fecha pipe
  pclose(Processos);
end;

Pronto! Agora é só executar o programa e visualizar os processos.

---------------------------------
Viva a liberdade dos códigos
---------------------------------
Master Foca.

   

Páginas do artigo
   1. Introdução
Outros artigos deste autor

Anthares, um sistema voltado para o usuário final

Instalando o Linux Ubuntu 8.04 Hardy Heron

Lapidando a configuração do mplayer

Um tour pelos visualizadores de imagem para Linux

Sudo 1.8.12 - Parte I - Manual

Leitura recomendada

Aprendendo a modelar forms no Kylix

Cross-compile Lazarus: Gerando executáveis Win32 estando no Linux

Integrando saídas de comandos shell com sua aplicação Kylix

Colocando aplicação Kylix no TrayIcon do KDE

Capturando seu desktop com uma aplicação feita em kylix

  
Comentários
[1] Comentário enviado por lorinho em 08/01/2004 - 21:39h

eu uso o slackware em modo texto, e gostaria de saber como eu faço para listar todos os procesos organizadamente dizendo o nome do login o nome do processo sem listar os processos do linux como o ps -aux =] se souber me informe ficarei mto grato! =] ou mandem um Email RodrigoDCamara@hotmail.com


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts