Stránka 1 z 1

Zástupce pro restart aplikace

Napsal: 04 črc 2020 18:39
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.

Re: Zástupce pro restart aplikace

Napsal: 04 črc 2020 19:07
od ITCrowd
vbs skript.
Nač to potřebuješ?

Re: Zástupce pro restart aplikace

Napsal: 04 črc 2020 21:09
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ě.

Re: Zástupce pro restart aplikace

Napsal: 04 črc 2020 23:28
od ITCrowd
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.

Re: Zástupce pro restart aplikace

Napsal: 07 črc 2020 08:28
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.

Re: Zástupce pro restart aplikace

Napsal: 07 črc 2020 08:39
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?

Re: Zástupce pro restart aplikace

Napsal: 07 črc 2020 08:46
od ITCrowd
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ší.

Re: Zástupce pro restart aplikace  Vyřešeno

Napsal: 07 črc 2020 09:02
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

Re: Zástupce pro restart aplikace

Napsal: 07 črc 2020 16:11
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.