Аватар для dzug
695 / 236 / 18
Регистрация: 17.01.2011
Сообщений: 583
Записей в блоге: 1

Завершить сторонний процесс

24.06.2012, 13:29. Показов 19147. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Столкнулся со следующей проблемой:
Открыл из VB файл "C:\Documents and Settings\Евгений\Рабочий стол\День.exe"
Как его закрыть из VB ??
Спасибо за ответ..
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.06.2012, 13:29
Ответы с готовыми решениями:

Завершить процесс explorer.exe
Всем привет! Проблема следующая: мне необходимо завершить процесс с именем explorer.exe (зачем? это другой вопрос), с помощью 'Диспетчера...

Как завершить процесс антивируса?
Я делая прогу чат через инет а антивирус ругается на него!!! Люди как с силой завершить процесс антивируса который не завершается и...

Как завершить процесс стороннего приложения
Например есть какойто запущеный процес "pro", путь - "D:\pro.exe". Какой код, чтоб проверить запущен ли процесс "pro" , если...

10
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38203 / 21135 / 4310
Регистрация: 12.02.2012
Сообщений: 34,741
Записей в блоге: 14
24.06.2012, 17:00
Думаю, самое простое - это вызов taskkill


C:\>taskkill /?

TASKKILL [/S <система> [/U <пользователь> [/P [<пароль>]]]]
{ [/FI <фильтр>] [/PID <процесс> | /IM <образ>] } [/T] [/F]

Описание:
Завершает процесс по его ID (PID) или имени образа.

Список параметров:
/S <система> Подключаемый удаленный компьютер.

/U [<домен>\]<пользователь> Пользовательский контекст, в котором
должна выполняться эта команда.

/P <пароль> Пароль для этого пользовательского контекста.
Запрашивает пароль, если он не задан.

/FI <фильтр> Применение фильтра для выбора набора задач.
Разрешение использовать "*". Пример,
imagename eq acme*

/PID <процесс> Идентификатор процесса, который требуется
завершить.
Используйте TaskList, чтобы получить PID.

/IM <образ> Имя образа процесса, который требуется
завершить. Знак подстановки "*" может быть
использован для указания всех заданий или
имен образов.

/T Завершение указанного процесса
и всех его дочерних процессов.

/F Принудительное завершение процесса.

/? Вывод справки по использованию.

Фильтры:
Имя фильтра Допустимые операторы Допустимые значения
----------- --------------- -------------------------
STATUS eq, ne RUNNING |
NOT RESPONDING | UNKNOWN
IMAGENAME eq, ne Имя образа
PID eq, ne, gt, lt, ge, le Значение PID
SESSION eq, ne, gt, lt, ge, le Номер сессии
CPUTIME eq, ne, gt, lt, ge, le Время CPU в формате
hh:mm:ss.
hh - часы,
mm - минуты, ss - секунды
MEMUSAGE eq, ne, gt, lt, ge, le Использование памяти в КБ
USERNAME eq, ne Имя пользователя в формате
[<домен>\]<пользователь>
MODULES eq, ne Имя DLL
SERVICES eq, ne Имя службы
WINDOWTITLE eq, ne Заголовок окна

Примечание
----
1) Символ '*' для параметра /IM применим только совместно с фильтрами.
2) Завершение удаленных процессов всегда будет принудительным (/F).
3) Фильтры "WINDOWTITLE" и "STATUS" не принимаются во внимание, когда
компьютер является удаленным.

Примеры:
TASKKILL /IM notepad.exe
TASKKILL /PID 1230 /PID 1241 /PID 1253 /T
TASKKILL /F /IM cmd.exe /T
TASKKILL /F /FI "PID ge 1000" /FI "WINDOWTITLE ne untitle*"
TASKKILL /F /FI "USERNAME eq NT AUTHORITY\SYSTEM" /IM notepad.exe
TASKKILL /S <система> /U <домен>\<пользователь> /FI "USERNAME ne NT*" /IM *
TASKKILL /S <система> /U <пользователь> /P <пароль> /FI "IMAGENAME eq note*"
1
 Аватар для dzug
695 / 236 / 18
Регистрация: 17.01.2011
Сообщений: 583
Записей в блоге: 1
24.06.2012, 17:03  [ТС]
Лучший ответ Сообщение было отмечено как решение

Решение

Вот на другом форуме ответили. Проверил - работает.
Visual Basic
1
2
3
4
5
6
       Dim Process As Object
        For Each Process In GetObject("winmgmts:").ExecQuery("Select * from Win32_Process")
                If Process.Caption Like "День*" Then
                        Process.Terminate
                End If
        Next
Может кому пригодится..
4
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
25.06.2012, 20:25
Visual Basic
1
2
3
4
5
Sub KillTask()
Dim Proc$
Proc = "Aimp3.exe"
Proc = Shell("cmd /c taskkill /f /t /im " & Proc, vbHide)
End Sub
1
 Аватар для Kogb
367 / 128 / 28
Регистрация: 17.07.2011
Сообщений: 253
Записей в блоге: 1
26.06.2012, 06:18
Все правильно, за исключением маленькой "мелочи". В Windows XP Home нет taskkill!


Добавлено через 5 минут
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Option Explicit
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
 
 
Private Sub Form_Load()
Dim Proc As Long, hProc As Long
Proc = Shell("notepad.exe")
MsgBox "Блокнот запущен!"
hProc = OpenProcess(&H1, False, Proc)
TerminateProcess hProc, 0
CloseHandle hProc
MsgBox "Блокнот закрыт!"
End Sub
3
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
27.06.2012, 00:18
Лучший ответ Сообщение было отмечено как решение

Решение

Вот что я сочинил. Мой первый API
Надеюсь не ошибся и никому не принесет вреда:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
Option Explicit
 
Const TH32CS_SNAPHEAPLIST = &H1
Const TH32CS_SNAPPROCESS = &H2
Const TH32CS_SNAPTHREAD = &H4
Const TH32CS_SNAPMODULE = &H8
Const TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST Or TH32CS_SNAPPROCESS Or TH32CS_SNAPTHREAD Or TH32CS_SNAPMODULE)
Const TH32CS_INHERIT = &H80000000
Const MAX_PATH As Integer = 260
 
Private Type PROCESSENTRY32
  dwSize As Long
  cntUsage As Long
  th32ProcessID As Long
  th32DefaultHeapID As Long
  th32ModuleID As Long
  cntThreads As Long
  th32ParentProcessID As Long
  pcPriClassBase As Long
  dwFlags As Long
  szExeFile As String * MAX_PATH
End Type
 
Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
Private Declare Function Process32First Lib "kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function Process32Next Lib "kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Sub CloseHandle Lib "kernel32" (ByVal hPass As Long)
Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
 
Sub Kill_Process_API()
Dim hSnapShot&, uProcess As PROCESSENTRY32, r&, rClose&, hProc&, ProcessName$, ProcessToClose$, ProcessFound As Boolean
'**********************************************************************
ProcessToClose = "notepad.exe" 'Задаем имя закрываемого процесса здесь.
hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0&)
uProcess.dwSize = Len(uProcess)
r = Process32First(hSnapShot, uProcess)
 
Do While r
  ProcessName = Left$(uProcess.szExeFile, IIf(InStr(uProcess.szExeFile, Chr$(0)) > 0, InStr(uProcess.szExeFile, Chr$(0)) - 1, 0))
  Debug.Print ProcessName
  If StrComp(ProcessName, ProcessToClose, vbTextCompare) = 0 Then
    ProcessFound = True
    hProc = OpenProcess(&H1, False, uProcess.th32ProcessID)
    TerminateProcess hProc, 0&
    rClose = Err.LastDllError
    Exit Do
  End If
  r = Process32Next(hSnapShot, uProcess)
Loop
 
CloseHandle hSnapShot
If ProcessFound Then
    CloseHandle hProc
    If rClose = 0 Then
        MsgBox "Процесс " & ProcessToClose & " успешно завершен."
      Else
        MsgBox "Ошибка " & rClose & " при завершении процесса " & ProcessToClose
    End If
  Else
    MsgBox "Процесс " & ProcessToClose & " не найден!"
End If
End Sub
Большую часть кода взял отсюда: CreateToolhelp32Snapshot и у Kogb.

Там идет последовательное чтение снимка процессов, текстовой поиск заданного, передача его PID в функцию из поста Kogb, а затем msgbox пояснение, что произошло с возвратом кода ошибки VB-шной функцией Err.
5
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38203 / 21135 / 4310
Регистрация: 12.02.2012
Сообщений: 34,741
Записей в блоге: 14
27.06.2012, 08:40
Есть хорошая книга C.Роман "Программирование win32-API в VB". Ну, и "Библию" Д.Эпплмана никто не отменял. Там много примеров.
2
 Аватар для blackeangel
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
28.11.2019, 18:53
Всем доброго времени суток.
Не подскажете, как убить все экземпляры одного процесса, кроме одного?
Перебором через for не интересует - сейчас так реализовано. Так же как через taskkill тоже вариант не интересует. Интересует вариант из поста #3 текущей темы.
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
28.11.2019, 20:36
Цитата Сообщение от blackeangel Посмотреть сообщение
Перебором через for не интересует - сейчас так реализовано. Так же как через taskkill тоже вариант не интересует. Интересует вариант из поста #3 текущей темы.
Почему не интересует? В 3 как раз через for реализовано.
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
28.11.2019, 21:57
SELECT * FROM Win32_Process WHERE Caption = 'calc.exe' AND NOT ProcessId = 1234
Если нужно оставить жить один любой, то просто пропускайте первый из убиваемых, добавив какую-нибудь переменную-флаг.
0
 Аватар для Directorosea
2 / 2 / 0
Регистрация: 19.12.2019
Сообщений: 39
19.12.2019, 23:54
shell "taskkill /f /im день.exe"

вот и все
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.12.2019, 23:54
Помогаю со студенческими работами здесь

Как показать занимаемую память процессов, завершить процесс
как можно остановить процессы? как показать занимаемую память процессов? Option Explicit Private Type PROCESSENTRY32 dwSize As...

Завершить сторонний процесс
Возможно ли, что бы программа выключала(убивала) процессы текущих приложений?

Найти и завершить сторонний процесс
Здравствуйте! Мне известно имя *.exe файла (имя из диспетчера задач), который запущен. Как мне его закрыть из моей программы? Понимаю, что...

Закрыть сторонний процесс
Добрый день, требуется сделать так, чтоб при определённых обстоятельствах ексель закрывал определённый процесс Set WshShell =...

Сторонний процесс Excel
Доброе время суток! Возникла такая задача. Левая программа (не важно какая) запускает Excel с уже сгенерированной информацией. Не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru