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: 10.175 ]

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

Backup automático em Shell Script

Aventuras do Mint Linux 10 em um computador antigo

Dynamic libraries com libtool

Site Survey Plan

Transparência de janelas no KDE

Leitura recomendada

Criando aplicação para detectar informações do sistema em Kylix

TCollection e Generics no Free Pascal - Uma breve visão sobre lista de objetos com o Lazarus

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

Colocando aplicação Kylix no TrayIcon do KDE

Integrando saídas de comandos shell com sua aplicação 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

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts