Criamos uma aplicação e nela incluímos um TButton, apenas para testar a função.
Vamos agora precisar dar uses em Tlhelp32. Em seguida vamos declarar a function.
type
TForm1 = class(TForm)
Button1: TButton;
private
function ValidarSoftwareAberto(ExeFileName: String): Boolean;
{ Private declarations }
public
{ Public declarations }
end;
Agora vamos usar o famoso CTRL + SHIF + C, em cima da function para poder implementar seu código deverá ficar assim
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Tlhelp32;
type
TForm1 = class(TForm)
Button1: TButton;
private
function ValidarSoftwareAberto(ExeFileName: String): Boolean;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function TForm1.ValidarSoftwareAberto(ExeFileName: String): Boolean;
begin
end;
end.
Agora vamos a implementação da Function ValidarSoftwareAberto. Observe que a mesma retorna um Boolean, ou seja, se ela retornar TRUE é por que o software esta aberto, caso contrário o mesmo não esta aberto. Veja sua implementação.
function TForm1.ValidarSoftwareAberto(ExeFileName: String): Boolean;
const
PROCESS_TERMINATE = $0001;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
Result := False;
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := sizeof(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
while Integer(ContinueLoop) <> 0 do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpperCase
(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) = UpperCase
(ExeFileName))) then
begin
Result := True;
Exit;
end;
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;
Agora para testar a mesma precisamos usar o evento onClick do TButton, e implementar o seguinte código.
procedure TForm1.Button1Click(Sender: TObject);
Var
xExeFileName: String;
begin
xExeFileName := 'chrome.exe';
if ValidarSoftwareAberto(xExeFileName) then
begin
ShowMessage(xExeFileName + ' esta Aberto !!!');
end
else
begin
ShowMessage(xExeFileName + ' não esta Aberto !!!');
end;
end;
Desta maneira caso o xExeFileName não esteja aberto você verá a mensagem ‘chrome.exe não esta Aberto !!!’ e para ver a outra mensagem basta abrir algum programa e olhar no gerenciador de tarefas o seu nome na lista de processos.
Fico por aqui e até o próximo artigo
Um abraço
Wesley Y
www.lithic.com.br