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

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

24.06.2012, 13:29. Показов 19093. Ответов 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
38180 / 21115 / 4307
Регистрация: 12.02.2012
Сообщений: 34,724
Записей в блоге: 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
38180 / 21115 / 4307
Регистрация: 12.02.2012
Сообщений: 34,724
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru