Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.01.2012, 21:59   #1
nikityan
Заблокирован
 
Регистрация: 07.10.2011
Сообщений: 48
По умолчанию Процесс listbox1

добрый день, целый день искал и непонял...
как убрать процесс который я выделяю в listbox??? это программа типа диспечера задач.
nikityan вне форума Ответить с цитированием
Старый 30.01.2012, 22:07   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А что у тебя известно программе по процессу кроме его имени?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.01.2012, 22:19   #3
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

вот исходник подобия диспетчера задач
Кольша вне форума Ответить с цитированием
Старый 31.01.2012, 19:27   #4
nikityan
Заблокирован
 
Регистрация: 07.10.2011
Сообщений: 48
По умолчанию

Ничего, ведь нужно найти его ID. только как это сделать?
nikityan вне форума Ответить с цитированием
Старый 31.01.2012, 20:16   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

EnumProcess библитека PSAPI, MSDN => гооголе
Человек_Борща вне форума Ответить с цитированием
Старый 31.01.2012, 20:21   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ну начнем с того что раз вы имеете имена процессов то вы должны были получить и их PID.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 17.02.2012, 09:37   #7
nikityan
Заблокирован
 
Регистрация: 07.10.2011
Сообщений: 48
По умолчанию

Код:
procedure TForm1.FormCreate(Sender: TObject);
var p:PROCESSENTRY32;ct:cardinal;th:Cardinal; mp:array[0..255] of char;
 mm:pchar;ts:TSearchRec; sst:STARTUPINFO;  ss,s:string;

begin
ct:=CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
 Process32First(ct,p);
 while Process32Next(ct,p) do begin
  begin
  if ExtractFileName(Application.ExeName)=string(p.szExeFile) then
   form1.Tag:=form1.Tag+1;
    OpenProcessToken(p.th32ProcessID,TOKEN_READ,th);
   ListBox1.Items.Append(string(p.szExeFile));

  end;
 end;  {}



end;
так получаю список процессов

Последний раз редактировалось Stilet; 17.02.2012 в 11:21.
nikityan вне форума Ответить с цитированием
Старый 17.02.2012, 09:55   #8
deathNC
Пользователь
 
Аватар для deathNC
 
Регистрация: 10.01.2010
Сообщений: 44
По умолчанию

nikityan, ну так из указателя p и получайте там же PID
deathNC вне форума Ответить с цитированием
Старый 17.02.2012, 10:17   #9
nikityan
Заблокирован
 
Регистрация: 07.10.2011
Сообщений: 48
По умолчанию

procedure TForm1.Button1Click(Sender: TObject);
var PID:Cardinal;
hProc:Cardinal;
begin
GetWindowThreadProcessId(,PID);
hProc:=OpenProcess(PROCESS_TERMINAT E,true,PID);
TerminateProcess(hProc,0);
end;

вот так пытаюсь завершить, но не получаеться. Можно примерчик испраленного кода пожалуйста?
nikityan вне форума Ответить с цитированием
Старый 17.02.2012, 10:23   #10
deathNC
Пользователь
 
Аватар для deathNC
 
Регистрация: 10.01.2010
Сообщений: 44
По умолчанию

Код:
function ncProcessTerminate(ProcessID: Cardinal): Boolean;
var
  hToken:THandle;
  SeDebugNameValue:Int64;
  tkp:TOKEN_PRIVILEGES;
  ReturnLength:Cardinal;
  hProcess:THandle;
begin
  Result:=false;
  If not OpenProcessToken(GetCurrentProcess, Token_Adjust_Privileges
                          or Token_Query, hToken) then
    exit;
  If not LookupPrivilegeValue(nil, 'SeDebugPrivilege', SeDebugNameValue) then
    begin
      CloseHandle(hToken);
      exit;
    end;
  tkp.PrivilegeCount:= 1;
  tkp.Privileges[0].Luid := SeDebugNameValue;
  tkp.Privileges[0].Attributes := SE_Privilege_Enabled;
  AdjustTokenPrivileges(hToken, False, tkp, SizeOf(tkp), tkp, ReturnLength);
  If GetLastError <> Error_Success then
    exit;
  hProcess := OpenProcess(Process_Terminate, False, ProcessID);
  If hProcess = 0  then
    exit;
  If not TerminateProcess(hProcess, DWORD(-1)) then
    exit;
  CloseHandle( hProcess );
  tkp.Privileges[0].Attributes := 0;
  AdjustTokenPrivileges(hToken, FALSE, tkp, SizeOf(tkp), tkp, ReturnLength);
  If GetLastError <>  ERROR_SUCCESS then
    exit;
  Result:=true;
end;
Я так завершал. Вроде работало.
deathNC вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблемы с ListBox1 не работает ответ KWN, lnc Общие вопросы Delphi 20 26.02.2011 21:24
Выбор айтема в Listbox1 по имени Mihanches Общие вопросы Delphi 1 12.10.2010 13:18
ScrollWidth в ListBox1 krikaved Общие вопросы Delphi 3 07.04.2010 21:35
сортировка в ListBox1 Virus191288 Общие вопросы Delphi 4 29.06.2009 21:47
ListBox1 Rahim1993 Общие вопросы Delphi 1 02.01.2008 17:56