Jaki jest właściwy sposób zamykania / zamykania programów z wiersza poleceń, podobny do naciskania przycisku zamykania „X” w rogu okna?
Próbuję zamknąć Chrome pod 3 różnymi wersjami systemu Windows: Win7 Ultimate, Win7 Home, WinXP
W Ultimate i XP: TSKILL chrome
Under Home TASKKILL /IM chrome.exe
TSKILL chrome
::
(Zamyka chrome, brak błędów cmd,
ale przywrócenie błędu chrome po ponownym uruchomieniu)
TASKKILL /IM chrome.exe
:
(Zamyka Chrome, nie ma błędów Chrome przy ponownym uruchomieniu,
ale błędy w cmd: „nie można zakończyć procesów potomnych (około 4-5), tylko siłą za pomocą /F
”)
Czy powinienem zignorować błędy potomne cmd, jeśli przy ponownym uruchomieniu chrome nie pokazuje żadnych błędów ?
windows
command-line
neoDev
źródło
źródło
Odpowiedzi:
Właściwy sposób zamknięcia / wyjścia z programu ostatecznie zależy od oprogramowania. Jednak ogólnie najlepszą praktyką jest zamykanie programów Windows za każdym razem, gdy otrzymują komunikat WM_CLOSE. Prawidłowe zwalnianie pamięci i zamykanie uchwytów. Istnieją inne komunikaty, które mogą sygnalizować zamknięcie aplikacji, ale to od autora oprogramowania zależy, jak każda wiadomość będzie obsługiwana.
taskkill wysyła komunikat WM_CLOSE, a następnie to od aplikacji zależy, czy poprawnie się zamknie. Możesz także użyć tej
/T
opcji, aby zasygnalizować procesy potomne./F
Opcji należy używać tylko, jeśli chcesz wymusić zakończenie procesu.Inne opcje obejmują wysyłanie klawiszy Alt + F4, przy użyciu programu PowerShell lub aplikacji innych firm.
Zaktualizuj zaktualizowane pytanie
Zignoruj błędy. Chrome generuje wiele procesów. Błędy powstają, gdy proces nie potwierdzi komunikatu WM_CLOSE, który wysyła TASKKILL. Tylko procesy z pętlą komunikatów będą mogły odbierać komunikat, dlatego procesy, które nie mają pętli komunikatów, wygenerują ten błąd. Najprawdopodobniej procesami tymi są rozszerzenia i wtyczki chrome.
Aby ukryć błędy, przechwyć dane wyjściowe
Podsumowanie: TASKKILL to właściwy sposób, za pomocą wiersza poleceń, do zamykania aplikacji zgodnie z implementacją WM_CLOSE i Microsoft KB, które połączyłem .
źródło
>
jest operatorem przekierowującym cmd.exe inul
jest pustką przestrzeni, w której nigdy więcej nie można usłyszeć.Wypróbuj NirCmd (Pobierz: x86 x64 )
Posiada komendę „closeprocess”, która została zaprojektowana tak, aby z wdziękiem zamykać procesy. Zgodnie z dokumentem nie zamyka aplikacji, ale wysyła
WM_CLOSE
do wszystkich okien najwyższego poziomu procesu docelowego.przykład użycia:
Jeśli to nie zadziała, założę się, że twoja aplikacja ma nietypową procedurę czyszczenia. Chciałbym zobaczyć, co dzieje się w środku, więc daj mi znać, jaka jest twoja aplikacja docelowa.
źródło
Odpowiedź na to pytanie można znaleźć
here
( link Microsoft ).Możesz wysyłać
WM_CLOSE
wiadomości do dowolnego okna, które chcesz zamknąć. Wiele okien obsługujeWM_CLOSE
monit o zapisanie dokumentów przez użytkownika.Narzędziem, które robi to poprawnie, jest
@Kill
. Zobacz także SendMsg .Nie wiem jak to zrobić wsadowo, ale możesz do tego użyć vbscript. Symulowanie klawiszy Alt+ F4(równoznaczne z sygnałem
WM_CLOSE
).Uruchom i spójrz na zachowanie tego skryptu poniżej.
Here
to nazwy kluczy listy dla SendKeys.Po uruchomieniu skryptu notatnik jest otwarty, niektóre słowa są zapisywane, a następnie dostarczany jest sygnał do zamknięcia programu, patrz rysunek poniżej.
Dodatkowe pytania
Czy mogę uruchomić program zminimalizowany lub tło z vbscript?
Tak. Użyj następującego kodu:
Aby uzyskać więcej informacji, sprawdź
Run Method
.Czy chrome może przejść do jakiegoś adresu URL w vbscript?
Jeśli chrom jest domyślny, użyj:
Source
Czy istnieje sposób na skoncentrowanie się na konkretnej aplikacji ( chrome.exe )?
Here
w przykładzie.Chcę wysłać alt + f4 TYLKO do chrome, niezależnie od tego, co robię z innymi oknami.
Poniższy kod działa w systemie Windows 8 .
źródło
Istnieją narzędzia wiersza polecenia, które mogą wysłać odpowiedni
WM_SYSCOMMAND
komunikat (zSC_CLOSE
poleceniem) do okna najwyższego poziomu programu. Jestem pewien, że co najmniej jeden zostanie wymieniony wkrótce. (Wtedy ktoś wspomni AutoIt. Wtedy pojawi się odpowiedź pokazująca, jak to zrobić za pomocą PowerShell iCloseMainWindow()
.)Nazywa się narzędzie wiersza polecenia, które jest wbudowanym poleceniem w TCC JP Software , interpretera poleceń i procesora skryptów poleceń dla systemu Windows
TASKEND
.źródło
W porządku, nie zamierzam kłamać. Widziałem to podczas stackoverflow i pomyślałem, że to trudne pytanie. Soooo Spędziłem ostatnie 2 godziny pisząc kod. A oto jest ...
Po wykonaniu poniższych kroków możesz wpisać „TaskClose notepad.exe” po naciśnięciu przycisku „Start”, co spowoduje automatyczne zapisanie wszystkich nieudokumentowanych plików notatnika na pulpicie. Automatycznie zamknie chrome.exe i zapisze ustawienia przywracania.
Możesz dodawać i usuwać dodatkowe ustawienia dla innych aplikacji pod warunkiem if. Na przykład:
Pliki vbs i wsadowe wykonują następujące procedury:
ReturnAppList.bat: zainstaluj w „C: \ windows \ system32 \”
TaskClose.bat: zainstaluj w „C: \ windows \ system32 \” ORAZ „C: \ Users \ YourUserName \”
TaskClose.vbs: zainstaluj w „C: \ windows \ system32 \”
Pisanie było świetną zabawą i cieszę się, że go ukończyłem, niż pokazałem odpowiedź. Miłego tygodnia!
źródło