Блог за уеб технологии, маркетинг и SEO, мотивация и продуктивност
Как да използваш PowerShell скриптове за принудително затваряне на замръзнали програми
Как да затвориш блокирано приложение в Windows с PowerShell/taskkill скриптове
Понякога програмите в Windows спират да работят, екранът замръзва и дори класическият Task Manager (Диспечер на задачите) не може да помогне веднага. В такива моменти можеш да използваш PowerShell скрипт за затваряне по принудителен начин на блокирани програми. Това е бърз и надежден начин да възвърнеш контрола над компютъра си, без да се налага да го рестартираш.

Съдържание на тази страница:
Основната команда: Stop-Process
В основата на всеки скрипт за спиране на програми стои една главна команда – Stop-Process. Тя казва на Windows незабавно да прекрати работата на дадено приложение. Използването ѝ е много по-директно от цъкането с мишката.
PowerShell скрипт за затваряне на замръзнали програми – видове
Затваряне на програма по нейното име
В PowerShell използвай Stop-Process -Name име -Force (без .exe). Можеш да комбинираш с Get-Process, за да провериш дали процесът съществува, преди да го затвориш.
Основна команда:
PowerShell
Stop-Process -Name notepad -Force
Добавянето на параметъра -Force накрая е ключово. То гарантира, че програмата ще бъде затворена принудително и веднага, дори ако се опитва да изкара прозорец с въпрос дали искаш да запазиш промените си.
Спиране чрез уникален номер (PID)
Всяка отворена програма получава свой уникален номер от системата, наречен PID (Process ID). Това е изключително полезно, ако имаш отворени пет прозореца на една и съща програма (например текстов редактор), но искаш да затвориш само един конкретен, който е блокирал.
Първо трябва да намериш номера на програмата:
PowerShell
Get-Process -Name "notepad"
Списъкът ще ти покаже всички отворени прозорци и техните номера в колонката Id. След като видиш номера (например 1234), можеш да го затвориш директно:
PowerShell
Stop-Process -Id 1234 -Force
Затваряне на няколко приложения наведнъж:
"notepad", "mspaint", "CalculatorApp" | ForEach-Object {
Get-Process -Name $_ -ErrorAction SilentlyContinue | Stop-Process -Force
}По-кратък вариант (без цикъл)
Командата Get-Process приема списък от имена директно, така че можеш да напишеш същото и на един ред.
Get-Process -Name "notepad", "mspaint", "calc", "CalculatorApp" -ErrorAction SilentlyContinue | Stop-Process -ForceАвтоматизиран скрипт за неотговарящи програми
Ако искаш готово решение, което автоматично намира всички забили програми и ги затваря наведнъж, можеш да използваш този кратък скрипт.
Забележка: В Windows има системни и фонови процеси без графичен интерфейс. Понякога свойството им Responding се отчита като $false по подразбиране, въпреки че те работят нормално и не са забили.
Филтриране само по програми с прозорец: Препоръчително е да добавиш проверка за наличието на заглавие на прозореца (MainWindowTitle). Така скриптът ще затваря само видими програми, които наистина са забили, и няма да докосва фонови процеси.
PowerShell:
# Намира само видими програми с прозорец, които не отговарят
$notResponding = Get-Process | Where-Object { $_.MainWindowTitle -ne "" -and $_.Responding -eq $false }
# Затваря ги принудително, ако има такива
if ($notResponding) {
$notResponding | Stop-Process -Force
Write-Host "Всички забили програми са затворени успешно."
} else {
Write-Host "Няма блокирали програми в момента."
}
Този код е много удобен, защото премахва нуждата да търсиш ръчно кое точно приложение създава проблем. Системата сама проверява кое работи и кое е замръзнало.
Най-лесно е да запазиш скрипта като .ps1 файл (скрипт за Windows PowerShell) и да му направиш пряк път (Shortcut) на работния плот. Така ще го пускаш с двоен клик без да отваряш конзолата ръчно всеки път.
Стъпка 1: Запазване на скрипта като файл
- Отвори Notepad: Натисни бутона Start, напиши
Notepadи го отвори. - Постави кода: Копирай безопасния код по-горе и го постави в текстовия файл. Както виждаш накрая е добавено
Start-Sleep -Seconds 3, за да имаш време да прочетеш съобщението, преди прозорецът да се затвори.
$notResponding = Get-Process | Where-Object { $_.MainWindowTitle -ne "" -and $_.Responding -eq $false }
if ($notResponding) {
$notResponding | Stop-Process -Force
Write-Host "Всички забили програми са затворени успешно."
} else {
Write-Host "Няма блокирали програми в момента."
}
Start-Sleep -Seconds 3- Запиши файла: Натисни
Ctrl + Sи избери лесно място, например папкаC:\Scripts. - Задай правилното разширение: В полето File name напиши
KillFrozen.ps1. В падащото меню Save as type задължително избериAll Files (*.*)и натисни Save.

Стъпка 2: Създаване на бутон за стартиране с един клик
Windows по подразбиране отваря .ps1 файловете за редактиране, вместо да ги изпълнява. Затова трябва да създадеш специален пряк път.
- Създай пряк път: Кликни с десен бутон на празно място на работния плот (Desktop), избери New и после Shortcut.
- Въведи командата: В полето за местоположение постави следния ред (ако си запазил файла на друго място, смени пътя в кавичките).
powershell.exe -ExecutionPolicy Bypass -File "C:\Scripts\KillFrozen.ps1"- Завърши настройката: Натисни Next, дай име на прекия път (например
Затвори забили програми) и натисни Finish.

Важна бележка за администраторски права:
Някои програми се стартират като администратор и обикновен скрипт не може да ги затвори.
- Настройка за администратор: Кликни с десен бутон върху новия пряк път на десктопа и избери Properties.
- Активиране: Натисни бутона Advanced…, сложи отметка на Run as administrator и потвърди с OK.
Настройване на клавишна комбинация
Можеш да настроиш и клавишната комбинация, и иконката директно от настройките на прекия път. Така ще имаш бърз достъп от клавиатурата и лесно разпознаваем бутон на работния плот.
Стъпка 1: Отваряне на настройките
- Отвори свойствата: Кликни с десен бутон върху новия пряк път на работния плот и избери Properties (Свойства). Увери се, че си в раздел Shortcut (Пряк път).
Стъпка 2: Задаване на клавишна комбинация
- Избери полето: Кликни в полето Shortcut key (Клавиш за бърз достъп), където в момента пише None.
- Натисни клавиш: Натисни желаната буква или цифра на клавиатурата, например K. Windows автоматично ще добави
Ctrl + Alt + K. - Важно условие: Клавишната комбинация работи само ако прекият път остане на работния плот (Desktop) или в менюто Start.
Стъпка 3: Смяна на иконката
- Отвори списъка с икони: В същия прозорец натисни бутона Change Icon… (Смяна на икона) в долната част. Ако се появи предупреждение, просто натисни OK.
- Избери визия: Ще видиш списък със стандартни икони на Windows (например червен кръст за спиране или светкавица). Избери тази, която ти харесва най-много, и натисни OK.
- Запази промените: Натисни Apply и след това OK, за да затвориш прозореца.

Съвет при използване
Когато натиснеш Ctrl + Alt + K и си активирал администраторски права, на екрана ще се появи стандартният прозорец на Windows за потвърждение (UAC – Контрол на потребителските акаунти), след което скриптът ще се изпълни веднага.
Готов .bat скрипт за бързо затваряне на замръзнали приложения
Запази следния код като .bat файл. С двойно кликване той принудително затваря всички процеси, които Windows отчита като „Not Responding“.
Създай текстов файл с име CloseFrozen.bat и постави вътре:
Bat
@echo off
chcp 65001 > nul
echo Затваряне на всички блокирани приложения...
taskkill /F /FI "STATUS eq NOT RESPONDING"
echo Готово.
pauseМожеш да си направиш и по-специфичен скрипт, например само за конкретно приложение:
Bat
@echo off
chcp 65001 > nul
taskkill /IM "Shotcut.exe" /F /T
echo Shotcut е затворен.
pauseЗапази файла в Notepad с кодировка UTF-8.
Завършен PowerShell скрипт (KillFrozen.ps1)
Копирай целия код по-долу и го постави в твоя файл C:\Scripts\KillFrozen.ps1.
# Настройка на кодировката, за да се вижда кирилицата правилно
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
Write-Host "Проверка за блокирали програми..." -ForegroundColor Cyan
# 1. Намира само видими програми с прозорец, които не отговарят
$notResponding = Get-Process | Where-Object { $_.MainWindowTitle -ne "" -and $_.Responding -eq $false }
if ($notResponding) {
foreach ($proc in $notResponding) {
Write-Host "Затваряне на забила програма: $($proc.ProcessName) ($($proc.MainWindowTitle))" -ForegroundColor Yellow
$proc | Stop-Process -Force -ErrorAction SilentlyContinue
}
Write-Host "Всички забили програми са затворени успешно." -ForegroundColor Green
} else {
Write-Host "Няма блокирали програми в момента." -ForegroundColor Green
}
# 2. (По желание) Списък с конкретни програми за принудително затваряне всеки път
# Ако не искаш да затваряш конкретни програми, остави скобите празни: @()
$specificApps = @() # Пример: @("notepad", "mspaint", "CalculatorApp")
if ($specificApps.Count -gt 0) {
Write-Host "`nПроверка на зададения списък с програми..." -ForegroundColor Cyan
foreach ($app in $specificApps) {
$running = Get-Process -Name $app -ErrorAction SilentlyContinue
if ($running) {
$running | Stop-Process -Force -ErrorAction SilentlyContinue
Write-Host "Затворена програма от списъка: $app" -ForegroundColor Yellow
}
}
}
Write-Host "`nГотово! Прозорецът ще се затвори след 4 секунди..." -ForegroundColor Gray
Start-Sleep -Seconds 4Какво прави този подобрен скрипт?
Този вариант е по-умен и информативен от базовия, защото ти дава пълен контрол и обратна връзка:
- Показва коя програма е забила: Вместо просто да затвори прозорците, скриптът изписва с жълт текст точното име на блокиралата програма, преди да я спре.
- Чист български текст: Първият ред гарантира, че съобщенията на кирилица ще се четат нормално, без странни символи (увери се само, че при запазване в Notepad настройката Encoding долу вдясно е на UTF-8).
- Бонус функция – списък за бързо затваряне (
$specificApps): Ако има програми или игри, които често ти правят проблеми или искаш да затваряш наведнъж с един клик, можеш да ги добавиш в скобите на ред 21.
Пример: Ако напишеш $specificApps = @("chrome", "discord"), скриптът ще затваря тези две програми всеки път, когато го стартираш, дори и да не са забили. Ако оставиш скобите празни @(), тази функция няма да се използва.
Сравнение на методите за затваряне на замръзнали програми
taskkill е най-универсален и работи навсякъде. PowerShell е по-удобен за скриптове и автоматизация. И двата са принудителни и могат да доведат до загуба на незапазени данни.
| Метод | Команда | Кога е най-удобен | Изисква ли админ права? |
|---|---|---|---|
| taskkill по име | taskkill /IM app.exe /F | Бързо ръчно затваряне | Често не |
| taskkill по PID | taskkill /PID 1234 /F | Когато има много инстанции | Често не |
| Всички Not Responding | taskkill /F /FI "STATUS eq NOT RESPONDING" | Масово чистене | Препоръчително |
| PowerShell | Stop-Process -Name app -Force | Скриптове и автоматизация | Понякога |
| .bat файл | Двойно кликване | Повтарящи се ситуации | Зависи |
Виж още: Как да затвориш блокирано приложение в Windows 11 с едно кликване (без Диспечер на задачите)
Важни правила за безопасност
Когато работиш с подобни команди, е добре да имаш предвид няколко основни неща:
- Внимавай какво затваряш: Избягвай да спираш важни системни процеси (като
explorer,svchostилиwinlogon), защото това може да направи компютъра ти нестабилен. - Запазвай работата си редовно: Принудителното затваряне не дава шанс на програмата да запази последните промени. Всичко незапазено до този момент ще бъде безвъзвратно загубено.
- Осигури си права: За да затвориш някои по-упорити програми, които изискват специален достъп, трябва да отвориш самия PowerShell като администратор (десен клик върху иконата му и избор на „Run as Administrator“).
Използването на PowerShell за управление на твоите приложения ти дава много повече контрол от стандартните менюта. С тези няколко кратки команди можеш лесно да се справяш със замръзнали екрани и да поддържаш системата си бърза и отзивчива.
Често задавани въпроси (FAQ)
Как да намеря точното име на процеса?
Отвори Command Prompt и напиши tasklist или в PowerShell Get-Process. Търси името с .exe.
Мога ли да затворя приложение по заглавие на прозореца?
Директно не. По-добре намери процеса чрез tasklist /V и използвай PID или име.
Кое е по-безопасно – taskkill или Stop-Process?
И двете са принудителни. PowerShell дава повече възможности за проверка преди затваряне, затова е малко по-удобен за скриптове.
Работи ли това, ако Диспечерът на задачите също е блокиран?
Да. Command Prompt или PowerShell често се отварят дори когато графичният интерфейс е силно засегнат.



