У меня была такая же проблема.Очень долго искал ответ и, наконец, нашел его.
Когда вы хотите завершить другую программу, вам нужен дескриптор.Дескриптору нужны разрешения для работы с другим процессом.Для завершения процесса необходимы специальные разрешения, которые называются PROCESS_TERMINATE
.Используйте это при открытии ручки для завершения, и это, вероятно, будет работать.Это для меня, на Windows 7.
Подводя итог, здесь код, который вам нужно правильно использовать TerminateProcess
.Обращаться с осторожностью;)
Declare Function OpenProcess Lib "kernel32" ( _
ByVal dwDesiredAccess As Long, _
ByVal bInheritHandle As Long, _
ByVal dwProcessID As Long) As Long
Declare Function TerminateProcess Lib "kernel32.dll" ( _
ByVal ApphProcess As Long, _
ByVal uExitCode As Long) As Long
Const PROCESS_TERMINATE = &H1
Private Sub KillProcess(ByVal ProcessID As Long)
Dim pHandle As Long
pHandle = OpenProcess(PROCESS_TERMINATE, 0, ProcessID)
Call TerminateProcess(pHandle, 0)
End Sub