Localizando processo aberto

Veja neste artigo como podemos saber se um processo ou aplicativo processo esta aberto ou não.

Olá galera, vamos a esta este artigo, que tem a função de mostra se um determinado aplicativo esta aberto, esta função é bem legal, e pode ser aproveitada para evitar que seu software seja aberto mais de uma vez, vamos a implementação da mesma.
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
Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados