View Full Version : [AIUTO]Aprire un file se un particolare programma è aperto
matthew131
29-08-2013, 20:45
Buonasera,
Mi spiego meglio:
Vorrei uno script che verifichi costantemente e che controlli all'infinito, se, ad esempio, "firefox.exe" è avviato e, se lo è, apra un file "file.bat" nel percorso: "C:\Utenti\Matthew\Desktop".
In altre parole dovrei mettere questo script all'avvio e se in qualsiasi momento dovessi aprire firefox vorrei si aprisse automaticamente il file bat.
Grazie mille, io ho provato a fare qualcosa ma senza successo.
LINGUAGGIO: BATCH
Con quale linguaggio?
Usando C# puoi usare la classe Process e fare un polling ogni tot secondi:
http://msdn.microsoft.com/it-it/library/x8b2hzk8.aspx
einstein1969
30-08-2013, 01:23
Buonasera,
Mi spiego meglio:
Vorrei uno script che verifichi costantemente e che controlli all'infinito, se, ad esempio, "firefox.exe" è avviato e, se lo è, apra un file "file.bat" nel percorso: "C:\Utenti\Matthew\Desktop".
In altre parole dovrei mettere questo script all'avvio e se in qualsiasi momento dovessi aprire firefox vorrei si aprisse automaticamente il file bat.
Grazie mille, io ho provato a fare qualcosa ma senza successo.
un batch?
un abbozzo (da finire):
for /L %%i in (1,0,3) do @(ping 127.0.0.1 > nul & tasklist | find "firefox.exe" >nul && echo è in esecuzione || echo non è in esecuzione)
matthew131
30-08-2013, 09:10
un batch?
un abbozzo (da finire):
for /L %%i in (1,0,3) do @(ping 127.0.0.1 > nul & tasklist | find "firefox.exe" >nul && echo è in esecuzione || echo non è in esecuzione)
Sì, il linguaggio batch.. mi sono scordato di scriverlo, ora aggiungo.
Per questo codice invece mi sembra che vada bene anche se è da finire...
è possibile non fare uscire "è in esecuzione" e "non è in esecuzione"? io ho messo @echo off ma nasconde solo la prima parte essendoci un echo prima di ognuna delle due voci.
Grazie mille intanto per aver risposto. :)
einstein1969
30-08-2013, 09:56
Sì, il linguaggio batch.. mi sono scordato di scriverlo, ora aggiungo.
Per questo codice invece mi sembra che vada bene anche se è da finire...
è possibile non fare uscire "è in esecuzione" e "non è in esecuzione"? io ho messo @echo off ma nasconde solo la prima parte essendoci un echo prima di ognuna delle due voci.
Grazie mille intanto per aver risposto. :)
Ora il risultato e' su file.
for /L %%i in (1,0,3) do @(ping 127.0.0.1 > nul & tasklist | find "firefox.exe" >nul && echo è in esecuzione>firefox.run.txt || echo non è in esecuzione>firefox.run.txt )
matthew131
30-08-2013, 10:00
ok, mentre per aprire il file.bat se firefox.exe è in esecuzione? :)
einstein1969
30-08-2013, 14:05
ok, mentre per aprire il file.bat se firefox.exe è in esecuzione? :)
sostituisci dove c'e' opera.exe con firefox.exe e se serve aggiungi il percorso completo di file.bat
@echo off & setlocal EnableDelayedExpansion & set /a st=3 & for /L %%i in (1,0,1) do ( ping ::1 >nul 2>nul & tasklist | find "opera.exe" >nul && set /a "st=(st*2+1)&3" || set /a "st=(st*2)&3" & if !st! equ 1 call file.bat )
matthew131
30-08-2013, 15:49
Ho cambiato opera con firefox e messo il percorso di "file" ma non succede niente :/ PS: firefox è attivato
@echo off & setlocal EnableDelayedExpansion & set /a st=3 & for /L %%i in (1,0,1) do ( ping ::1 >nul 2>nul & tasklist | find "firefox.exe" >nul && set /a "st=(st*2+1)&3" || set /a "st=(st*2)&3" & if !st! equ 1 call C:\file.bat )
forse non è giusta la sintassi del percorso? o sbaglio qualcos'altro?
einstein1969
30-08-2013, 16:17
Ho cambiato opera con firefox e messo il percorso di "file" ma non succede niente :/ PS: firefox è attivato
@echo off & setlocal EnableDelayedExpansion & set /a st=3 & for /L %%i in (1,0,1) do ( ping ::1 >nul 2>nul & tasklist | find "firefox.exe" >nul && set /a "st=(st*2+1)&3" || set /a "st=(st*2)&3" & if !st! equ 1 call C:\file.bat )
forse non è giusta la sintassi del percorso? o sbaglio qualcos'altro?
Il file.bat e' in c:\ ?
Intanto vediamo se funziona:
@echo off & setlocal EnableDelayedExpansion & set /a st=3 & for /L %%i in (1,0,1) do ( ping ::1 >nul 2>nul & tasklist | find "firefox.exe" >nul && set /a "st=(st*2+1)&3" || set /a "st=(st*2)&3" & if !st! equ 1 dir C:\file.bat )
prova a chiudere e riaprire firefox piu' volte e vedi se esegue il dir e trova il file, posta il risultato qui se esegue il dir.
PS: Se firefox e' attivo quando lanci il programma devi chiuderlo e riavviarlo. Così avevi chiesto...
matthew131
30-08-2013, 18:13
Ah, mi aspettavo si aprisse anche se avevo firefox aperto giaà da prima, in effetti però è quello che ho chiesto ed è perfetto così perchè lo metto all'avvio di windows.
Sei stato davvero bravo. Grazie mille :))
alla fine il codice giusto era con call:
@echo off & setlocal EnableDelayedExpansion & set /a st=3 & for /L %%i in (1,0,1) do ( ping ::1 >nul 2>nul & tasklist | find "firefox.exe" >nul && set /a "st=(st*2+1)&3" || set /a "st=(st*2)&3" & if !st! equ 1 call C:\file.bat )
Sì può chiudere grazie
einstein1969
30-08-2013, 20:27
Ah, mi aspettavo si aprisse anche se avevo firefox aperto giaà da prima, in effetti però è quello che ho chiesto ed è perfetto così perchè lo metto all'avvio di windows.
Sei stato davvero bravo. Grazie mille :))
alla fine il codice giusto era con call:
@echo off & setlocal EnableDelayedExpansion & set /a st=3 & for /L %%i in (1,0,1) do ( ping ::1 >nul 2>nul & tasklist | find "firefox.exe" >nul && set /a "st=(st*2+1)&3" || set /a "st=(st*2)&3" & if !st! equ 1 call C:\file.bat )
Sì può chiudere grazie
Si il codice giusto e' con call, il dir serve per fare il debug
Comunque se vuoi che si avvii anche quando firefox e' gia' attivo non devi fare altro che
modificare il "set /a st=3" in "set /a st=0"
Provalo e scegli il comportamento che più ti piace.
matthew131
30-08-2013, 21:07
Scusa un'altra cosa, ti avevo inviato un pm ma non so se l'hai visto... se l'hai visto scusa, non volevo metterti fretta xD comunque:
E' possibile nascondere la finestra del batch? ho cercato su google però non vorrei utilizzare un vbscript per avviarlo nascosto.. altrimenti sarebbero tre file e la cosa è complicata.
A convertirlo in exe da un errore e non parte. Hai una soluzione?
einstein1969
30-08-2013, 22:42
Scusa un'altra cosa, ti avevo inviato un pm ma non so se l'hai visto... se l'hai visto scusa, non volevo metterti fretta xD comunque:
E' possibile nascondere la finestra del batch? ho cercato su google però non vorrei utilizzare un vbscript per avviarlo nascosto.. altrimenti sarebbero tre file e la cosa è complicata.
A convertirlo in exe da un errore e non parte. Hai una soluzione?
Su seven puoi crearti una attività pianificata. E se setti l'avvio indipendentemente dalla connessione degli utenti la finestra dos non dovrebbe comparire. Forse si puo' fare anche su xp...
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.