Работа с процессами

Тема в разделе "WASM.WIN32", создана пользователем Satana, 4 май 2005.

  1. Satana

    Satana New Member

    Публикаций:
    0
    Регистрация:
    4 май 2005
    Сообщения:
    7
    Адрес:
    Voronezh
    Необходимо уничтожить процесс, зная при этом только его имя.Каким образом это можно сделать?
     
  2. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    Код (Text):
    1. { Получение Id процесса по его имени }
    2. function GetProcessId(pName: PChar): dword;
    3. var
    4.  Snap: dword;
    5.  Process: TPROCESSENTRY32;
    6. begin
    7.   Result := 0;
    8.   Snap := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    9.   if Snap <> INVALID_HANDLE_VALUE then
    10.      begin
    11.       Process.dwSize := SizeOf(TPROCESSENTRY32);
    12.       if Process32First(Snap, Process) then
    13.          repeat
    14.           if lstrcmpi(Process.szExeFile, pName) = 0 then
    15.              begin
    16.               Result := Process.th32ProcessID;
    17.               CloseHandle(Snap);
    18.               Exit;
    19.              end;
    20.          until not Process32Next(Snap, Process);
    21.       Result := 0;
    22.       CloseHandle(Snap);
    23.      end;
    24. end;




    По ProcessId я думаю ты умееш процессы прибивать.

    Прикольно будет, если есть несколько процессов с одинаковым именем...
     
  3. NoName

    NoName New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2004
    Сообщения:
    1.229
    Они собрались группой и издеваются.



    Satana

    это уже не раз обсуждалось.

    Поиск актуален в наш век! Есть такая программа на асме, находится в нашем замечательном форуме.



    Ms Rem



    svchost.exe не является ли примером? Убийство процесса происходит посредством pid (Process.th32ProcessID), получаемому из списка по первому встретившемуся (lstrcmpi) заданному имени.





    А ты умеешь?
     
  4. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    NoName

    Издеваешся чтоли?
    Код (Text):
    1. TerminateProcess(OpenProcess(PROCESS_TERMINATE, false, ProcessId), 0);
    2.  
     
  5. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    [^^^ потёрто, ибо флейм]
     
  6. NoName

    NoName New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2004
    Сообщения:
    1.229
    IceStudent

    Ты неправ. Я хотел этим показать что здесь(в форуме) больше уместен асм чем высокоуровневые конструкции делфи.
     
  7. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    NoName

    It depends. Иногда проще и нагляднее привести последовательность вызовов WinAPI на ЯВУ, чем тянуть асм-листинг на пол-экрана.



    IMHO, в WASM.WIN32 должна быть свобода в примерах кода.

    Другое дело, что если речь идёт о низкоуровневых алгоритмах или приёмах.



    Но в целом я согласен, что код на ассеблере предпочтительнее.
     
  8. NoName

    NoName New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2004
    Сообщения:
    1.229
    IceStudent

    Спасибо за разъяснение. Я поддерживаю эту идею.