Fórum Serviço do CTrl+ALt+Del #2009
20/01/2009
0
Cia Papel
Curtir tópico
+ 0Posts
20/01/2009
Ricardo Boaro
Vamos la, eu tenho uma função que traz todos os processos que estão rodando, dessa forma fica fácil de encontrar um específico.
A pergunta inicial de deixar um processo oculto do gerenciador, realmente é complicado, pois testei várias funçoes sem sucesso.
Crie uma nova aplicação WIn32, adicione um button e um listbox, segue o código abaixo:
procedure TForm1.Button1Click(Sender: TObject);
var
handler: THandle;
data: TProcessEntry32;
function GetName: string;
var i:byte;
begin
Result := ;
i := 0;
while data.szExeFile[i] <> do
begin
Result := Result + data.szExeFile[i];
Inc(i);
end;
end;
begin
handler := CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0);
if Process32First(handler, data) then
begin
listbox1.Items.Add(GetName());
while Process32Next(handler, data) do
listbox1.Items.Add(GetName());
end
else
ShowMessage(Error);
end;
Com esse código o ListBox é preenchido com todos os processos.
Aguardo seu retorno,
Abraço
Gostei + 0
21/01/2009
Cia Papel
Gostei + 0
22/01/2009
Rodrigo Mourão
O que você deseja não é simples, no Windows 98 existia uma função no Kernel chamada TRegisterServiceProcess. Com esta função você conseguia ocultar um processo. A partir do Win NT a microsoft tirou esta função devida a facilitação que isto dava para os virus se esconderem.
Pesquisando aqui na net encontrei um virus chamdado Hack defender que foi escrito em pascal e que usa assembly para poder se ocultar do GT. Ainda não achei os fontes, estou verificando em torrent, porém o caminho mais plausível neste contexto seria a segunda opção.
Porém fica aqui a pergunta pois não custa. O fato de ocultar é para que usuario não finalizem o seu processo correto ??? É possível no seu contexto desabilitar o GT ???
Abs !!!!!
Gostei + 0
26/01/2009
Cia Papel
Gostei + 0
26/01/2009
Rodrigo Mourão
Em Win32 isso é muito complicado, ja pesquisei bastante e não consegui nada até agora. Porém em .Net temos um assembly que nos permite mapear. Se seu delphi for 2006 ou superior é possivél fazer isso. Se quiser posso criar um exe e lhe mandar os fontes para que você possa ver como é feito.
Fico no seu agauardo !!!
Gostei + 0
26/01/2009
Cia Papel
Gostei + 0
26/01/2009
Rodrigo Mourão
Uses
System, System.Management, System.Management.Instrumentation;
No clique do Botão
var
ListaServico: ManagementObjectSearcher;
Servico: ManagementObject;
begin
ListaServico := ManagementObjectSearcher.Create('select * from Win32_Service');
for Servico in ListaServico do
begin
if Servico.GetPropertyValue('Name') = 'SeuServico' then
begin
ShowMessage('Serviço Rodando');
Exit;
end;
end;
ShowMessage('Servico Parado !!!!');
end;
Bem alexandre não consigo testar aqui pois so tenho Delphi7 onde eu estou mas se não estou enferrujado e por ai. Repare no código e Delphi puro a unica diferença são nas classes que não temos em win32.
Se quiser testar ai Vá no Delphi 2006. Menu File->New->Vcl .Net Aplication. Vai abrir um form como win32. Você tem os mesmos componentes que win32 com a vantagem de utilizar o .Net.
Coloque um botão, e no Eveto OnClick do mesmo faça o código acima. Não esqueça do uses acima. O .Net não o bicho de set cabeças que parece só precisamos saber qual uses dar. rsrsrrsrsrs Esse é todo o problema pois temos milhares.
Fico no aguardo !!!
Gostei + 0
26/01/2009
Rodrigo Mourão
O Código acima não esta completo. Cheguei em casa e fui compilar e não é exatamente o que você quer pois você precisa startar o serviço caso ele esteja parado.
Sendo assim segue abaixo um exemplo que encontri em C# e "traduzi" para delphi. Os fontes estão no link que estou enviando junto e como eu falei de .Net só tem mesmo os assemblies pois o codigo é 100% delphi. Veja o clique do botão start por exemplo:
if ltwServiceList.ItemIndex > -1 then
begin
Idx := ltwServiceList.ItemFocused.Index;
Services[Idx].Start;
BtnStart.Enabled := False;
BtnStop.Enabled := True;
ltwServiceList.ItemFocused.SubItems[1] := 'Running';
end
else
MessageBox(Handle,'Please,choose a service that you want to stop','Information', 64);
http://video.devmedia.com.br/RodrigoCarreiro/Consultoria/ChamadoListaServWin.zip
Fico no aguardo. Dúvidas estaremos a diposição !!!
abs !!!!
Gostei + 0
27/01/2009
Cia Papel
Gostei + 0
27/01/2009
Rodrigo Mourão
Estarei fechando o chamado mas continuamos a disposição !!!
abs !!!!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)