Скрипт на закрытие программы windows

Alright, Not going to lie. I saw this on stackoverflow and thought it was a challenging question. Soooo I just spent the last 2 hours writing some code. And here it is….

After following the steps below, you can type «TaskClose notepad.exe» after hitting «Start» and it will auto save all undocumented notepad files into desktop. It will auto-close chrome.exe and save the restoration settings.

You can add and remove additional settings for other applications under the if conditions. For instance:

If InStr(SINGLECLOSEAPPS, WScript.arguments(0)) Then
    SmartSendKeys strOutput,"bypass","%{F4}"

ElseIf InStr(AUTOCLOSEAPPS, WScript.arguments(0)) Then
    SmartSendKeys strOutput,"","%{F4}|%s|{autoname}.txt|%s"

'Example 1: =============================================
ElseIf InStr(WScript.arguments(0), "outlook") Then
    SmartSendKeys strOutput,"","%{F4}" 'Activate Alt+4
'========================================================

'Example 2: =============================================
ElseIf InStr(WScript.arguments(0), "notepad") Then 'I know, already in my autoapps
    SmartSendKeys strOutput,"","%{F4}|%s|{autosave}.txt" 'Activate Alt+4 + Save File + {AutoSave} = autoincrement filename
'========================================================

Else
    SmartSendKeys strOutput,"bypass","%{F4}"
End If

The vbs and batch files performs the following procedures:

  • Collects the executable.
  • Queries the executable application names off
    of the tasklist.
  • Performs an «Alt+TAB(x)» procedure until it has
    verified the window is open.
  • Then Executes the rolling commands whether it be «Alt+F4» or even in extreme cases
  • Alt+F4
  • Activate Save
  • AutoIncrememnt Filename
  • Exit application.

ReturnAppList.bat : install in «C:\windows\system32\»

for /f "tokens=10 delims=," %%F in ('tasklist /v /fi "imagename eq %1" /fo csv') do @echo %%~F >>result.txt

TaskClose.bat : install in «C:\windows\system32\» AND «C:\Users\YourUserName\»

C:\windows\system32\wscript.exe c:\windows\system32\taskclose.vbs %1

TaskClose.vbs : install in «C:\windows\system32\»

Set WshShell = CreateObject("WScript.Shell")
Const SINGLECLOSEAPPS = "chrome.exe|iexplore.exe|firefox.exe"
Dim DEFAULTSAVELOCATION : DEFAULTSAVELOCATION = wshshell.SpecialFolders("Desktop")
Const AUTOCLOSEAPPS = "notepad.exe"

Const WshFinished = 1
Const WshFailed = 2
strCommand = "returnapplist.bat "
Set WshShellExec = WshShell.Exec(strCommand & WScript.Arguments(0))

WScript.sleep 2000

Select Case WshShellExec.Status
    Case WshFinished
    strOutput = LoadStringFromFile("result.txt")
    Case WshFailed
    strOutput = LoadStringFromFile("result.txt")
End Select


'SmartSendKeys(application_name_array, bypassclause, additionalcommands)
'========================
If InStr(SINGLECLOSEAPPS, WScript.arguments(0)) Then
    SmartSendKeys strOutput,"bypass","%{F4}"
ElseIf InStr(AUTOCLOSEAPPS, WScript.arguments(0)) Then
    SmartSendKeys strOutput,"","%{F4}|%s|{autoname}.txt|%s"
Else
    SmartSendKeys strOutput,"bypass","%{F4}"
End If




'SmartSendKeys(application_name_array, bypassclause, additionalcommands)
'========================
Function SmartSendkeys(fArr, LoopCount, RollCommands) 
    Dim x 
    Dim splt : splt = Split(farr, vbCrLf)
    If loopcount = "bypass" Then 
        x = 0
    Else
        x = UBound(splt)
    End If
    a = 0
    For s=0 To x
        If Len(splt(s)) > 1 Then
            Set objShell = WScript.CreateObject("WScript.Shell")
            c = 1 : tabs = ""
            Success = False
            Do Until Success = True
                Success = objShell.AppActivate(Trim(splt(s)))
                If success <> True Then
                    If c = 1 Then 
                        tabs = "{TAB}"
                    Else
                        tabs = "{TAB " & c & "}"
                    End If
                    'wscript.echo "Activating: " & "%" & tabs
                    WshShell.SendKeys "%" & tabs
                    WScript.Sleep 5000
                    c = c + 1
                    If c = 100 Then 
                        WScript.echo "App not found"
                        Exit Function
                    End If
                End If
            Loop
            Dim cmds : cmds = Split(rollcommands, "|")

            For Each cm In cmds
                If InStr(cm, "{autoname}") Then
                    Dim file_ext : file_ext = Split(cm, ".") 
                    cm = DEFAULTSAVELOCATION & "autosave" & a & "." & file_ext(1)
                    a = a + 1
                End If
                WshShell.SendKeys cm
                WScript.sleep 500

            Next
        End If
    Next
End Function

Function LoadStringFromFile(filename)
    Const fsoForReading = 1
    Const fsoForWriting = 2
    Dim fso, f
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f = fso.OpenTextFile(filename, fsoForReading)
    Dim fulltext : fulltext = f.ReadAll
    LoadStringFromFile = fulltext
    f.Close
    fso.DeleteFile(filename)
End Function

This was alot of fun to write and I’m more happy about finishing it than actually showing the answer. Have a great week!

Every time I turn on my company-owned development machine, I have to kill 10+ processes using the Task Manager or any other process management app just to get decent performance out of my IDE. Yes, these are processes from programs that my company installs on my machine for security and compliance. What I’d like to do is have a .bat file or script of some kind with which I can kill the processes in question.

Does anybody know how to do this?

bubbleking's user avatar

bubbleking

3,3293 gold badges30 silver badges49 bronze badges

asked Aug 29, 2008 at 2:09

codeLes's user avatar

2

You can do this with ‘taskkill‘.
With the /IM parameter, you can specify image names.

Example:

taskkill /im somecorporateprocess.exe

You can also do this to ‘force‘ kill:

Example:

taskkill /f /im somecorporateprocess.exe

Just add one line per process you want to kill, save it as a .bat file, and add in your startup directory. Problem solved!

If this is a legacy system, PsKill will do the same.

Nith's user avatar

answered Aug 29, 2008 at 2:14

Factor Mystic's user avatar

Factor MysticFactor Mystic

26.3k16 gold badges79 silver badges95 bronze badges

2

taskkill /f /im "devenv.exe"

this will forcibly kill the pid with the exe name «devenv.exe»

equivalent to -9 on the nix’y kill command

answered Aug 29, 2008 at 2:13

DevelopingChris's user avatar

DevelopingChrisDevelopingChris

39.9k30 gold badges87 silver badges118 bronze badges

2

As TASKKILL might be unavailable on some Home/basic editions of windows here some alternatives:

TSKILL processName

or

TSKILL PID

Have on mind that processName should not have the .exe suffix and is limited to 18 characters.

Another option is WMIC :

wmic Path win32_process Where "Caption Like 'MyProcess%.exe'" Call Terminate

wmic offer even more flexibility than taskkill with its SQL-like matchers .With wmic Path win32_process get you can see the available fileds you can filter (and % can be used as a wildcard).

answered Feb 2, 2015 at 8:22

npocmaka's user avatar

npocmakanpocmaka

55.6k18 gold badges148 silver badges188 bronze badges

I’m assuming as a developer, you have some degree of administrative control over your machine. If so, from the command line, run msconfig.exe. You can remove many processes from even starting, thereby eliminating the need to kill them with the above mentioned solutions.

answered Aug 29, 2008 at 3:18

Jason Z's user avatar

Jason ZJason Z

13.1k15 gold badges50 silver badges62 bronze badges

Get Autoruns from Mark Russinovich, the Sysinternals guy that discovered the Sony Rootkit… Best software I’ve ever used for cleaning up things that get started automatically.

answered Aug 29, 2008 at 3:45

Brian Stewart's user avatar

Brian StewartBrian Stewart

9,16711 gold badges54 silver badges66 bronze badges

Download PSKill. Write a batch file that calls it for each process you want dead, passing in the name of the process for each.

answered Aug 29, 2008 at 2:12

Shog9's user avatar

Shog9Shog9

157k35 gold badges231 silver badges235 bronze badges

Use Powershell! Built in cmdlets for managing processes. Examples here (hard way), here(built in) and here (more).

answered Aug 29, 2008 at 2:33

slipsec's user avatar

slipsecslipsec

3,0043 gold badges34 silver badges46 bronze badges

Please find the below logic where it works on the condition.

If we simply call taskkill /im applicationname.exe, it will kill only if this process is running. If this process is not running, it will throw an error.

So as to check before takskill is called, a check can be done to make sure execute taskkill will be executed only if the process is running, so that it won’t throw error.

tasklist /fi "imagename eq applicationname.exe" |find ":" > nul

if errorlevel 1 taskkill /f /im "applicationname.exe"

answered Oct 26, 2016 at 12:32

Sarath Subramanian's user avatar

2

Here I wrote an example command that you can paste in your cmd command line prompt and is written for chrome.exe.

FOR /F "tokens=2 delims= " %P IN ('tasklist /FO Table /M "chrome*" /NH') DO (TASKKILL /PID %P)

The for just takes all the PIDs listed on the below tasklist command and executes TASKKILL /PID on every PID

tasklist /FO Table /M "chrome*" /NH

If you use the for in a batch file just use %%P instead of %P

answered Feb 12, 2018 at 21:58

Eduard Florinescu's user avatar

Eduard FlorinescuEduard Florinescu

16.8k28 gold badges113 silver badges179 bronze badges

Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться

1 2013-10-27 17:03:48 (изменено: fam888, 2013-10-27 17:10:00)

  • fam888
  • Участник
  • Неактивен
  • Рейтинг : [0|0]

Тема: AHK: нужна простая команда на закрытие приложения

Предположим есть скрипт:
Run C:\Documents and Settings\Admin\Рабочий стол\1.ahk,

который запускает программу. Мне же нужен скрипт , который эту же программу закроет. Или, так же будет хорошо, если команда на закрытие этой программы будет внутри одного скрипта(при помощи горячей клавиши или другого условия). Подскажите как это сделать. Есть догадка, что необходимо конвертировать программу из ahk в exe и использовать, например, ExitApp, но пробовать не стал, поскольку не понимаю в чем разница.

2 Ответ от Indomito 2013-10-27 18:57:37 (изменено: Indomito, 2013-10-27 19:10:01)

  • Indomito
  • Участник
  • Неактивен

Re: AHK: нужна простая команда на закрытие приложения

Я не очень понял что надо закрывать, то ли твой скрипт, то ли внешнее приложение.
Если свой же скрипт, то вот простой код:

Теперь закрытие внешнего приложения, тут немного сложнее, но не намного.

;==========Закрыть активное окно
CloseActiveWin:
 WinGetActiveTitle, Title
 if (fnWinClose(Title))
         return true
return false

;==========Завершаем процесс с именем Name.exe без активного окна
lEndTask:
DetectHiddenWindows, On
vWin := "Name.exe"
SetTitleMatchMode, 2
IfWinExist, %vWin%
  {
    vTxt := "Завершаем процесс Name.exe"
    GuiControl,, Msg, % vTxt
    Sleep, 1000
    WinClose
    ;Process, Close, %vWin%
    sleep 1500 ; Чуть подождём = 1,5 сек
     return true
  }
return false

;==========Функция закрытие окна приложения, если оно существует
fnWinClose(vWin)
{
SetTitleMatchMode, 2
IfWinExist, %vWin%
  {
    WinClose
    ;WinKill
    return true
  }
return false
}

Компилировать не нужно, т.е. необязательно, хотя разница есть, но не очень заметная… так скажем кое что нельзя выполнить из не компилированной программы/скрипта.

«На каждое действие есть равная ему противодействующая критика.» Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 — November 24, 2019
Click to Download

3 Ответ от fam888 2013-10-27 19:56:26 (изменено: fam888, 2013-10-27 20:05:43)

  • fam888
  • Участник
  • Неактивен
  • Рейтинг : [0|0]

Re: AHK: нужна простая команда на закрытие приложения

Скорее закрыть нужно скрипт, но дело в том, что в моем скрипте присутствует цикл, в который необходимо как то внедрить горячую клавишу на закрытие всего скрипта, выглядит он так:

~XButton1::
#MaxThreadsPerHotkey
Process, Priority, , High
loop
{
PixelSearch, Px, Py, 1198, 946, 1199, 947, 0x80ff00, 0, fast
if ErrorLevel 
sendinput {}
Else
sendinput {WheelDown}
}

кстати спасибо за другие варианты, они мне очень пригодятся тоже.

4 Ответ от Indomito 2013-10-27 20:31:31 (изменено: Indomito, 2013-10-27 20:40:39)

  • Indomito
  • Участник
  • Неактивен

Re: AHK: нужна простая команда на закрытие приложения

Самое простое это добавить таймер с проверкой нужной клавиши, ну например такой.

SetTimer, lTimerKeyCloseApp, 120
return

lTimerKeyCloseApp:
  iTmp:=7
  while (!(GetKeyState("F1", "P")) && iTmp)
    {
       sleep 5
       iTmp--
    }
  if (iTmp)   
     {    
       SetTimer, lTimerKeyCloseApp, Off
       ExitApp
     }
return

вроде как то так.

«На каждое действие есть равная ему противодействующая критика.» Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 — November 24, 2019
Click to Download

5 Ответ от fam888 2013-10-27 20:48:59

  • fam888
  • Участник
  • Неактивен
  • Рейтинг : [0|0]

Re: AHK: нужна простая команда на закрытие приложения

Большое спасибо, попробую.

6 Ответ от Indomito 2013-10-27 20:56:39

  • Indomito
  • Участник
  • Неактивен

Re: AHK: нужна простая команда на закрытие приложения

Можно чуть сделать короче, но не уверен что будет работать корректно:

SetTimer, lTimerKeyCloseApp, 120
return

lTimerKeyCloseApp:
  iTmp:=7
  while (!(GetKeyState("F1", "P")) && (--iTmp))
       sleep 5
  if (iTmp)   
     {    
       SetTimer, lTimerKeyCloseApp, Off ; это не обязательно
       ExitApp
     }
return

«На каждое действие есть равная ему противодействующая критика.» Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 — November 24, 2019
Click to Download

7 Ответ от serzh82saratov 2013-10-27 21:07:54

  • serzh82saratov
  • Разработчик
  • Неактивен

Re: AHK: нужна простая команда на закрытие приложения

fam888
Если разговор про то чтобы после нажатия кнопки для закрытия скрипта, сначала закончилась итеррация цикла, то:


loop  
{
    MsgBox,,, Начало итерации, 1
    MsgBox,,, Конец итерации, 1
} Until Exit
MsgBox,,, The End, 0.7 
ExitApp

2:: Exit := 1

Если надо закрывать по кнопке только во время цикла, то:


Label:
    loop = 1
    
    loop  10 
    {
        MsgBox,, % 10 - A_Index, Нажимай, 0.3 
    }  
    
    loop = 0
    MsgBox Не успел. Попробуй ещё.
    GoTo, Label

#If loop
2:: ExitApp
#If

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

8 Ответ от borro 2016-12-14 16:03:17

  • borro
  • Участник
  • Неактивен
  • Рейтинг : [0|0]

Re: AHK: нужна простая команда на закрытие приложения

Здравствуйте!
Написал и откпомпилировал по примеру выше такой скрипт, чтобы закрыть скайп на моем Win 8.1


; Shutting down the process with the name Skype.exe which is not having active window
lEndTask:
DetectHiddenWindows, On
vWin := "Skype.exe"
SetTitleMatchMode, 2
IfWinExist, %vWin%
  {
    vTxt := "Shutting down Skype.exe"
    GuiControl,, Msg, % vTxt
    Sleep, 1000
    WinClose
    ;Process, Close, %vWin%
    Sleep 4000
    return true
  }
return false

; Shutting down the application window if it exists

fnWinClose(vWin)
{
SetTitleMatchMode, 2
IfWinExist, %vWin%
  {
    WinClose
    ;WinKill
    return true
  }
return false
}

почему-то после запуска скайп не закрывается. Скажите, пожалуйста, почему

9 Ответ от teadrinker 2016-12-14 20:29:03

  • teadrinker
  • Администратор
  • Неактивен

Re: AHK: нужна простая команда на закрытие приложения

Может, потому что точки в конце предложений забываете ставить?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться

Если вы тот, кто работает над определенным набором приложений каждый раз, когда вы сидите перед своим компьютер, вы можете открыть их вместе одним щелчком мыши при входе в систему на своем компьютере. ежедневно. У нас уже есть статья, в которой подробно рассказывается, как можно сэкономить время, открывая все приложения вместе с помощью простого пакетного сценария..

Точно так же, как вы можете пакетно открывать приложения, вы также можете пакетно закрывать приложения. Для этого нам нужно написать простой пакетный скрипт, который не требует знаний программирования. Читайте дальше, чтобы узнать, как легко закрыть несколько программ за один раз.

Читайте также: Как мгновенно закрыть все окна и вкладки Google Chrome за один раз

Оглавление

Раздел 1: Как создать и выполнить пакетный скрипт для одновременного закрытия нескольких программ

Шаг 1: Перейти к Рабочий стол мгновенно, нажав кнопку ВЫИГРЫШ + Д ключи вместе.

Оказавшись на рабочем столе, щелкните правой кнопкой мыши на пустое место, нажмите на Новый а затем нажмите на Текстовый документ.

1 Новый оптимизированный текст

Шаг 2: Теперь Двойной клик на только что созданном текстовом документе, чтобы открыть его.

2 новых текста мин.

Шаг 3: Как и далее, в текстовом документе скопировать и вставить следующую команду.

тасккилл /F /IM  /T > ноль

Обратите внимание, что вы должны заменить с Имя изображения приложения, которое вы хотите закрыть. Вы можете обратиться к Раздел 3: Как найти имя образа процесса/приложения, которое нужно закрыть, если вы не знаете Имя изображения процесса, который вы хотите убить.

Параметры команды поясняются ниже:

РЕКЛАМА

тасккилл – Убить процесс или приложение.

– Для принудительного завершения запущенного процесса.

/IM — Обозначает имя изображения. /IM следует за процессом Имя изображения. Если вы не знаете Имя изображения процесса, который вы хотите убить, см. Раздел 3: Как найти имя образа процесса/приложения, которое нужно закрыть.

– Завершить все дочерние процессы.

ноль – Чтобы подавить ошибки и сообщения.

Вы можете добавить столько строк, сколько хотите. Каждая строка будет соответствовать одному приложению или программе.

Наконец, в конце напишите @Пауза. Это для вас, чтобы увидеть результаты выполнения вашей команды. Например, если программу не удалось закрыть, вы сможете увидеть причину, по которой ее не удалось закрыть, на экране CMD. В противном случае экран CMD мгновенно закроется.

Ниже показан пример сценария, в котором мы закрываем программы Блокнот, Калькулятор и WPS-офис с помощью нашего пакетного сценария.

taskkill /F /IM Notepad.exe /T > ноль. taskkill /F /IM CalculatorApp.exe /T > ноль. taskkill /F /IM wps.exe /T > nul @pause

1 Добавить все программы Мин.

Когда все будет готово, не забудьте одновременно нажать клавиши CTRL + S, чтобы сохранить файл.

Шаг 4: Теперь вернитесь на рабочий стол, нажмите на файл и нажмите F2 ключ к переименовать файл.

4переименовать Мин.

Шаг 5: Вы можете дать любое имя к вашему файлу, мы назвали его как Закрыть несколько программ. Какое бы имя вы ни дали, убедитесь, что вы дали расширение файла как летучая мышь после . (точка). Это самая важная часть.

2 Переименовать Мин.

Шаг 6: после того, как вы ввели имя, щелкните где-нибудь еще на экране. Теперь вы получите следующее Переименовать окно подтверждения. нажмите Да кнопку для подтверждения.

6 Подтвердите переименование мин.

Шаг 7: Вот и все. Теперь ваш пакетный файл сценария готов. Двойной клик на нем, чтобы выполнить его.

Минимальная партия 3 запусков

Шаг 8: теперь ваш пакетный скрипт закрыть все программы указано в нем.

Кроме того, вы сможете увидеть, какие программы были закрыты на Командная строка экран. Это потому что ты поставил @Пауза в конце вашего скрипта. Это приостанавливает экран и ждет нажатия клавиши, прежде чем закрыть экран командной строки.

4 успеха мин.

Раздел 2: Как добавить дополнительные программы в существующий пакетный сценарий

Если вы хотите добавить больше программ в список программ, которые вы хотите закрыть в пакетном файле, вы вполне можете это сделать.

Шаг 1: Щелкните правой кнопкой мыши на командный файл вы создали и нажмите на Показать больше вариантов.

5 Показать больше параметров Мин.

Шаг 2: В раскрывающемся меню щелкните значок Редактировать вариант.

9 Редактировать Оптимизировано

Шаг 3: теперь пакетный скрипт будет открываться в Блокнот, где вы можете вносить изменения, как обычно.

В приведенном ниже примере мы добавили еще одну строку в наш скрипт. На этот раз мы стремимся убить MS Paint также.

6 Добавить новые программы Мин.

Раздел 3: Как найти имя образа процесса/приложения, которое нужно закрыть

Этот раздел больше похож на приложение, которое поможет вам найти Имя изображения приложения или процесса.

Чтобы убить приложение, вам нужно либо его Имя изображения или его идентификатор процесса. Для некоторых приложений Имя изображения может быть простым, но для некоторых других приложений об этом нельзя сразу догадаться. В таких случаях вы можете выполнить следующие шаги, чтобы легко узнать Имя изображения процесса, который вы хотите убить.

Шаг 1: На панели задач, расположенной в нижней строке экрана Windows, щелкните значок объектив икона.

Минимум 20 значков поиска

Шаг 2: на панели поиска поиск командной строки и нажмите на Запустить от имени администратора возможность открыть командную строку в повышенном режиме.

10 Cmd Запуск от имени администратора, оптимизированный мин.

Шаг 3: Когда открывается командная строка, скопировать и вставить или тип в следующей команде, чтобы вывести список всех запущенных процессов на вашем компьютере.

список заданий

Когда у вас есть список, под столбцом Имя изображения, вы можете прокрутить и узнать имя процесса/приложения, которое вы хотите убить. И вы можете использовать это Имя изображения в тасккилл команда.

7 задач Мин.

Вот и все. Надеюсь, теперь вы сэкономите много времени, используя этот крутой трюк.

Пожалуйста, сообщите нам в разделе комментариев, нашли ли вы статью полезной. Кроме того, если вы застряли на каком-либо из шагов, сообщите нам, мы будем рады помочь.

Вы также можете загрузить этот инструмент для ремонта ПК, чтобы найти и устранить любую проблему с ПК:
Шаг 1 — Скачайте Restoro PC Repair Tool отсюда
Шаг 2. Нажмите «Начать сканирование», чтобы автоматически найти и устранить любую проблему с ПК.

Перейти к содержанию

На чтение 1 мин Просмотров 2.9к. Опубликовано
Обновлено

Очень раздражает, что выйти из скайпа сейчас в венде невозможно.. Закрываешь его, закрываешь, а он просто сворачивается!

Единственный способ завершить процесс.

Делать это через диспеччер задач каждый раз не удобно, поэтому решил создать батник.

За сим:

Чтобы завершить приложение при помощи bat файла, необходимо выполнить такую команду в нем:

taskkill /im процесс.exe

В моём случае так:

taskkill /im Skype.exe

Создал файл с расширением bat на рабочем столе и убиваю любимую-испорченную мелкомягкими программу.

Похожий код:

Фото аватара

Программист, разработчик с 5 летним опытом работы. Учусь на разработчика игр на Unity и разработчика VR&AR реальности (виртуальной реальности). Основные языки программирования: C#, C++.

  • Скрипт для запуска службы windows
  • Скрипт для отключения windows defender
  • Скрипт для остановки службы windows
  • Скрипт для настройки windows 10
  • Скрипт для запуска программы в windows