PDA

View Full Version : [BAT] Avviare app in background tramite un .bat


fdm91hu
05-11-2011, 11:56
Ciao ragazzi, sto smanettando su google da stamani e non ce la faccio più, ho bisogno di un "supporto" da parte vostra :D
In breve, ho una app che ho bisogno di eseguire ad ogni avvio di Windows, solo che è abbastanza fastidiosa da tenere aperta sullo schermo perché è in primo piano di default e quindi ho creato un file .bat che la facesse partire minimizzata tramite "Start /min C:\Program Files\ecc ecc..."
Però siccome sono una persona pulita :ciapet: di solito tendo a chiudere sempre tutte le app ridotte ad icona che non utilizzo, e puntualmente finisco per chiudere anche questa.
Dunque mi chiedevo :read:

Esiste un dannato modo per avviare da batch una applicazione in background? Cioè voglio che il batch faccia partire l'applicazione nascosta proprio, che l'unico modo per chiuderla sia di andare in Task Manager e chiuderla... se po' fà? :Prrr:
Grazie a tutti per il supporto :rolleyes:

webking
05-11-2011, 19:06
Ciao,
su Unix ti direi
<comando> &

Su windows io userei un piccolo script in VB che ti permetta di fare tutto ciò:
http://gallery.technet.microsoft.com/ScriptCenter/8bbed56f-a7aa-491f-a296-687dd96098a3/

Ovviamente cambia i nomi delle variabili riguardanti i programmi da avviare!

Spero di essere stato utile,

Alberto.

fdm91hu
06-11-2011, 20:03
Ciao,
su Unix ti direi
<comando> &

Su windows io userei un piccolo script in VB che ti permetta di fare tutto ciò:
http://gallery.technet.microsoft.com/ScriptCenter/8bbed56f-a7aa-491f-a296-687dd96098a3/

Ovviamente cambia i nomi delle variabili riguardanti i programmi da avviare!

Spero di essere stato utile,

Alberto.

ciao Alberto e innanzitutto grazie mille per la risposta :) perdonami se sono un gran rompiscatole, ma purtroppo in visual basic non ho una gran conoscenza, quindi qualora volessi avviare un programma posto in una directory differente da System32, come accade per il Notepad, dove devo inserire il percorso? E soprattutto, devo inserirlo così com'è scritto? (cioè C:\Program Files\Prova\Prova.exe)
Perchè nel programma in vb che mi hai dato non c'è niente che si trova in C:\Windows\System32\Notepad.exe, ma semplicemente "Notepad.exe"

Grazie mille per la risposta :D e perdona la mia estrema ignoranza :Prrr:

marco.r
06-11-2011, 20:43
Esiste un dannato modo per avviare da batch una applicazione in background? Cioè voglio che il batch faccia partire l'applicazione nascosta proprio, che l'unico modo per chiuderla sia di andare in Task Manager e chiuderla... se po' fà? :Prrr:
Grazie a tutti per il supporto :rolleyes:

Immagino che parli di una applicazione non scritta da te o di cui comunque non hai il sorgente per modificarla...
Se non ricordo male se fai partire l'applicazione come altro utente, non ti appare nella schermata dell'utente corrente. Oppure la fai partire come servizio, ci sono dei tool per far partire dei programmi normali come servizi (ma ci puo' essere qualche complicazione).

fdm91hu
06-11-2011, 20:54
Immagino che parli di una applicazione non scritta da te o di cui comunque non hai il sorgente per modificarla...
Se non ricordo male se fai partire l'applicazione come altro utente, non ti appare nella schermata dell'utente corrente. Oppure la fai partire come servizio, ci sono dei tool per far partire dei programmi normali come servizi (ma ci puo' essere qualche complicazione).

beh alla fine è un comunissimo task manager che setta automaticamente l'affinita del processore ad un solo core (battlefield 3 per la precisione, perchè con tutti e due i core mi lagga l'audio e l'unica soluzione per ora è questa, solo che mi rompo di ripetere l'operazione ogni volta che ci gioco dal Task Manager di Windows che quando chiudo la app dimentica l'impostazione, così con questo sistema, avendo il "mono-core" sempre attivo dovrei far solo partire il gioco... :Prrr: )

webking
07-11-2011, 09:41
Ciao,

dopo aver fatto un pò di prove con BF2 penso di aver risolto il tuo problema. Seguimi passo passo.

1) Apri un file vuoto di testo con Notepad, ed incolla il seguente codice


Const HIDDEN_WINDOW = 12

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objStartup = objWMIService.Get("Win32_ProcessStartup")

Set objConfig = objStartup.SpawnInstance_
objConfig.ShowWindow = HIDDEN_WINDOW
Set objSh = CreateObject("Shell.Application")
objSh.ShellExecute "C:\Program Files (x86)\EA GAMES\Battlefield 2\BF2.exe", "" , "C:\Program Files (x86)\EA GAMES\Battlefield 2", "runas", 1



2) Sostituisci i percorsi che vedi nello script: nel primo dovrai mettere il percorso all'eseguibile di BF3, nel secondo il percorso alla Working Directory di BF3, cioè "taglia" la parte finale dal path precedente.

3) Salva il documento con nome, chiamalo StartBF3.vbs . Fai attenzione a scegliere, durante il salvataggio, il tipo di file come "Tutti i file" e non come file .txt. In questo modo dovresti avere un file con un'icona stile pergamena BLUE.

4) Doppio click sul file creato e buon divertimento!

Fammi sapere se funziona, sono curioso!

EDIT: se devi lanciare il tuo .bat per impostare l'affinità di processore e cose varie, sostituisci il percorso a quello del file bat, inclusa anche la working directory. Al limite, se dovesse interessarti, posso cercare come impostare le affinità di processore per farti eseguire il tutto dallo script vbs, senza impazzire con 10 eseguibili che fanno 10 cose diverse :).