GARANTIR DESCONTO

Fórum Validar programa aberto pelo nome do processo #596798

30/08/2018

0

Boa tarde pessoal, pessoal sou analista de sistemas, mais na área de desenvolvedor estou iniciando agora... preciso de ajuda em Delphi.
Quero validar um programa em aberto no Windows pelo nome do processo, exemplo ''''''''Google Chrome'''''''', ao abrir o Google Chrome ele abre alguns processos com esse
nome "Google Chrome"; quero exibir em uma mensagem se esta ou não aberto e quantos processos tem... eu fiz algo assim:
"function getProcesso(exeFileName: string): Boolean;
var
ContinueLoop : BOOL;
FSnapshotHandle : THandle;
FProcessEntry32 : TProcessEntry32;
begin
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
Result := false;
while Integer(ContinueLoop) <> 0 do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
UpperCase(ExeFileName))) then
begin
Result := True;
end;
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;
function ContarGetProcesso(exeFileName: string): Integer;
var
ContinueLoop : BOOL;
FSnapshotHandle : THandle;
FProcessEntry32 : TProcessEntry32;
numVezes : Integer;
begin
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
numVezes :=0;
while Integer(ContinueLoop) <> 0 do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
UpperCase(ExeFileName))) then
begin
numVezes:=numVezes+1;
end;
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
Result := numVezes;
end;
procedure TForm1.Button1Click(Sender: TObject);
var programa, resultado : String;
begin
programa := ''''''''chrome.exe'''''''';
// programa := ''''''''Google Chrome'''''''';
if getProcesso(programa) then
begin
resultado := IntToStr(ContarGetProcesso(programa));
ShowMessage(''''''''O Processo ''''''''+programa+'''''''' está rodando! , tem '''''''' + resultado +'''''''' processos abertos'''''''');
end else
ShowMessage(''''''''O Processo ''''''''+programa+'''''''' não está rodando! '''''''');
end; "
OBS: Só funciona se eu explicitar o nome do .exe nome do aplicativo, não funciona pelo nome do processo. se alguém ai puder me ajudar. Obrigado.
Carlos Vìêira

Carlos Vìêira

Responder

Posts

03/09/2018

Fabricio Kawata

Fala Carlos. Só pra registrar minha experiência com esse tipo de função, aqui na empresa só conseguimos implementar com sucesso a verificação pelo nome do executável ou pelo nome da janela do programa. Pelo nome do processo, nunca conseguimos implementar algo funcional, tendo como base os exemplos encontrados na web.

Abraço!
Responder

Gostei + 0

08/09/2018

Carlos Vìêira

Boa tarde Fabrício, Obrigado por responder, eu não consegui pegar pelo nome da Janela, já tentei mais sem sucesso, tem alguma dica?
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar