Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.98/92: Рейтинг темы: голосов - 92, средняя оценка - 4.98
 Аватар для dzug
695 / 236 / 18
Регистрация: 17.01.2011
Сообщений: 583
Записей в блоге: 1

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

24.06.2012, 13:29. Показов 18988. Ответов 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
38167 / 21102 / 4307
Регистрация: 12.02.2012
Сообщений: 34,690
Записей в блоге: 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
18030 / 7733 / 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
18030 / 7733 / 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
38167 / 21102 / 4307
Регистрация: 12.02.2012
Сообщений: 34,690
Записей в блоге: 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
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
28.11.2019, 20:36
Цитата Сообщение от blackeangel Посмотреть сообщение
Перебором через for не интересует - сейчас так реализовано. Так же как через taskkill тоже вариант не интересует. Интересует вариант из поста #3 текущей темы.
Почему не интересует? В 3 как раз через for реализовано.
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 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
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru