Zástupce pro restart aplikace

Operační systémy Windows z dílny Microsoft a vše kolem nich

Moderátoři: Pic, Mods_senior

Zamčeno
Scientific
Level 3
Level 3
Příspěvky: 499
Registrován: 23 črc 2013 17:37

Zástupce pro restart aplikace

Příspěvek od Scientific »

Ahoj, jak si prosím ve windows vytvořím na plochu zástupce, který zabije aplikaci a hned ji zase spustí? Třeba s několkavteřinovým waitem/sleepem?

Součástí otázky jsou i souvislosti kolem, např, jak zjistím, nějaký statický identifikátor aplikace, jelikož předpokládám, že PID se mění.

Děkuji za pomoc.
Uziv00

Re: Zástupce pro restart aplikace

Příspěvek od Uziv00 »

vbs skript.
Nač to potřebuješ?
Scientific
Level 3
Level 3
Příspěvky: 499
Registrován: 23 črc 2013 17:37

Re: Zástupce pro restart aplikace

Příspěvek od Scientific »

Jeden pofidérní program občas přestane dělat co má, ale přesto běží. Ale nedělá nic, tak ho potřebuji vypnout a zapnout.

Byl by někdo tak hodný a ten vbs skript mi mohl napsat? Hádám, že to budeou tři commandy na 10 vteřin práce, pokud to umíte. Dalších 30 vteřin mi vysvětlit, jak ten skript spouštět zástupcem z plochy. Případně 15 vteřin ještě vygooglit, jaký přepínače mají být za pro zabití podle nějakého statického identifikátoru namísto zřejme defaultního PID.

Kód: Vybrat vše

kill -nejak neco
sllep/wait 5
run /path/to/neco.exe
V pro CLI linuxu bych to měl z hlavy, něco jako:

Kód: Vybrat vše

PID=$(ps ax | grep "neco")
kill $PID
sleep 5
cd /path/to/app && ./app
Potřebuji to jen přepsat do Windows řeči.
Prosím pěkně.
Uziv00

Re: Zástupce pro restart aplikace

Příspěvek od Uziv00 »

Nástřel by mohl vypadat nějak takhle:

Kód: Vybrat vše

Option Explicit
Dim oWMI, colProcess, Process, WshShell, prikaz, ProgramID

Set oWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colProcess = oWMI.ExecQuery ("SELECT * FROM Win32_Process WHERE Name LIKE 'Program%'")

If colProcess.count > 0 Then
  For Each Process In colProcess      
    ProgramID = Process.ProcessID
    Set WshShell = WScript.CreateObject("WScript.Shell")
    prikaz = "cmd.exe /C  taskkill /PID " & ProgramID    
    WshShell.Run prikaz, 1, True
    WScript.Sleep 5000
    prikaz = "c:\adresar\program.exe"
    WshShell.Run prikaz, 1, True
End If

Set oWMI = Nothing
Set colProcess = Nothing
Set WshShell = Nothing
Pokud budeš mít zájem, klidně to napíšu a odladím třeba na notepad, který si pak nahradíš svým programem.
Scientific
Level 3
Level 3
Příspěvky: 499
Registrován: 23 črc 2013 17:37

Re: Zástupce pro restart aplikace

Příspěvek od Scientific »

S tímhle sem si hrál na vejšce v excelu. :-D

1. Děkuji ti moc, nečekal sem, že to bude takhle hustě udělaný. :-)
2. Pokud chápu, mám ve vyhledávacím dotazu upravit LIKE klauzuli + upravit cestu v proměnné "prikaz". Nic víc?
3. Tohle je nejaky.vbs skript a stačí zástupci na ploše přidat cestu něco jako spouštění programu wscript s nějakými parametry jako třeba cesta k tomu skriptu? Nebo jak to namontovat pro spouštění zástupce z plochy.
mirekol
Level 2
Level 2
Příspěvky: 188
Registrován: 01 dub 2019 14:11

Re: Zástupce pro restart aplikace

Příspěvek od mirekol »

Jeden pofidérní program občas přestane dělat co má, ale přesto běží. Ale nedělá nic, tak ho potřebuji vypnout a zapnout.
A nebylo by efektnější/lepší, odstranit příčinu, než řešit následek?
Uziv00

Re: Zástupce pro restart aplikace

Příspěvek od Uziv00 »

scientific:
Chápeš to dobře.
Jinak stačí napsat to v notepadu, uložit s příponou .vbs. Pokud chceš tvořit zástupce, pak si ten script někam ulož a vytvoř k němu zástupce. Jinak stačí jen ho zkopírovat na plochu. Reaguje na dvojité poklikání, nic dalšího netřeba.
mirekol:
ne každá aplikace je správně napsána. Navíc může být i starší a programátoři už vyhynuli. Takže restart aplikace bývá často jediným a nejjednodušším řešením. Což v podstatě platí i pro hnusná wokna, kdy se leccos restartem vyřeší.
Uživatelský avatar
TheSalon112
Level 3
Level 3
Příspěvky: 456
Registrován: 04 čer 2014 17:38
Bydliště: localhost

Re: Zástupce pro restart aplikace

Příspěvek od TheSalon112 »

Myslím si, že cez cmd to bude omnoho jednoduhšie, ako cez VB script

Kód: Vybrat vše

taskkill /f /t /im proces.exe
timeout 5 /NOBREAK >NUL //počet sekúnd - 5
start "" "cesta_k_procesu"  //Prvé uvodzovky ostávajú prázdne, do druhých sa píše cesta

Príklad v praxi:

Kód: Vybrat vše

taskkill /f /t /im chrome.exe
timeout 5 /NOBREAK >NUL                           
start "" "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"

Uložíš ako .bat napr na plochu, a dvojitým poklepaním sa spustí, čo sa požaduje :)

Ak nevieš, ako vytvoriť bat súbor, návod napr tu: https://sk.ateasyday.com/articles/windo ... ndows.html
MOJE ŽELEZO:
CPU: Intel core I7 870 2,93 GHz
CPU Cooler: SilentiumPC Fera 2 HE 1224
GPU: ASUS GTX1050 TI 4GB
HDD: WDC Black 1TB
SSD: Samsung 850EVO 120GB
MotherBoard: Asus P7P55D-E
RAM: 4X Kingston DDR3 2GB Value RAM
PSU: Seasonic S12ii-520
Bedňa: Corsair SPEC-03 Red LED
Blue-Ray Mechanika: LG BH10LS30
Scientific
Level 3
Level 3
Příspěvky: 499
Registrován: 23 črc 2013 17:37

Re: Zástupce pro restart aplikace

Příspěvek od Scientific »

Děkuji moc Vám oběma, přesně tohle jsem chtěl, díky moc.

Řešení od ITCrowd je bez pochyby mnohem propracovanější a elegantnější, nicméně, mě stačí ta jednodušší primitivnější cesta, u které rozumím každému primitivnímu řádku.

Řešení od TheSalon112 jsem ověřil a funguje, ale nepochybuji o tom, že funguje i to propracovanější.

Díky moc.
Zamčeno
  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek

Zpět na „Windows 11, 10, 8...“