Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
[R] Empecher l'ouverture d'un programme si il
Auteur Message
Répondre en citant
Message [R] Empecher l'ouverture d'un programme si il 
Salut !
Je n'avais pas assez de place pour écrire le titre xD

Désolé de vous embêter, mais il me faudrait un bout de code afin de vérifier si le programme batch que je lance ne se lance pas si il déjà lancé.
(j'ai du mal à m'exprimer je suis désolé Sad )

Plus clairement:

1er cas de figure:
1) je lance mon programme
2) le programme n'est pas déjà en cours d’exécution
3) donc c'est bon, le programme se lance normalement.

2eme cas (le plus intéressant)
1) je lance le programme
2) il est déjà en cous d’exécution ailleurs
3) c'est pas bon, je ferme le programme que j'essaye de lancer actuellement.

J'avais donc penser de passer par un fichier .txt avec un code random créer et à rechecker à chaque ouverture et modifier/supprimer à chaque fois. Pour ça, c'est nickel franchement c'est simple...
LE PROBLÈME c'est que si l'utilisateur ferme mal le programme (avec la pitite flèche rouge) et ben sa pourra pas supprimer le .txt et donc le programme pourra pas se lancer. Et si c'est un utilisateur ultra-lambda, il ne saura pas quoi faire. De plus, tout doit être automatique.

Donc voilà, vous n'aurez pas un petit trick à me donner pour résoudre se problème ? Encore désolé, je sais qu'il y a plus clair comme explication Rolling Eyes


Petite chose, j'ai chercher un peu, et les solutions comme celle si ne m'instéresse pas car il se peut qu'il y est un autre cmd en cours d'éxecution à côté
Code:

@echo off
tasklist | find "[programme].exe" /C /i > nul
rem : s'il trouve qqch, alors il n'y a pas d'erreur. ERRORLEVEL = 0 et donc nous passons à la suite
if ERRORLEVEL 0 goto suite
exit
:suite


Merci d'avance !
Timothé.




EDIT:

Skywalker m'a gentiment donné la solution ! la voici:
Code:

@echo off
set $titre=LETITRE
title %$titre%

for /f "tokens=2 delims=," %%a in ('tasklist /v /fo csv ^| findstr /i "%$titre%"') do (
  set "$PID=%%a"
  echo %%a >> check.txt
)

set /p $PIDcheck=<check.txt
del check.txt

echo LE PID DE CE PROCESSUS EST : %$PID%
echo LE PID CHECK EST           : %$PIDcheck%
echo.
if %$PID%==%$PIDcheck% (echo Une instance ouverte :D) else (echo PLUSIEURS instances sont ouvertes fermeture dans 5 secondes !!! &ping localhost -n 6 >nul &exit)
echo.
echo Suite du code ici :)
echo blablablalllalaalllallllllaaa
pause
exit




Dernière édition par timothe_2000 le Dim 21 Juin 2015 - 14:11; édité 3 fois

______________________________________________________
Do what you want cause a pirate is free: you are a pirate !
Skype
Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message [R] Empecher l'ouverture d'un programme si il 
Citation:
LE PROBLÈME c'est que si l'utilisateur ferme mal le programme (avec la pitite flèche rouge) et ben sa pourra pas supprimer le .txt et donc le programme pourra pas se lancer.

Si j'ai bien compris c'est la croix rouge en haut à droite ? Si oui on peut la rendre inutilisable avec ma commande preventclosure Wink
http://skywalker.alwaysdata.net/telechargement/PreventClosure.exe Wink

Si ça ne répond pas a ce que tu veux faire, dis le moi, j'ai eu du mal a comprendre ^^




______________________________________________________
Visiter le site web du posteur
Répondre en citant
Message [R] Empecher l'ouverture d'un programme si il 
Dans ton cas tu dois travailler sur le PID de ton programme en lui donnant un titre :

Code:

:::Par SachaDee
:::Connaître PID CMD en cours

@echo off
title=Montitre
for /f "tokens=2 delims=," %%a in ('tasklist /v /fo csv ^| findstr /i "Montitre"') do (set $PID_ID=%%a)
echo LE PID DE CE PROCESSUS EST : %$PID_ID:~1,-1%


il te suffit ensuite de faire le test IF sur le PID retourné




______________________________________________________
AffPng.exe , StringBetween.exe , Hex2Png.exe
Répondre en citant
Message [R] Empecher l'ouverture d'un programme si il 
Ah ^^ j'avais donc pas compris, ça m'arrive pas souvent pourtant Mr. Green
Oui dans ce cas là faut utilliser le PID du processus de ta fenêtre Wink c'est parfais sacha ça marche j'avais envie de tester
Ah moi aussi j'ai la manie de foutre des $ a cause du php et de l'autoit Laughing

PS : à éviter sacha title=Montitre car sur win7-32bits ça affiche le = je sais pas pourquoi ça fais un rendu différend sur cette version Wink
donc Title Montitre à préviligier Okay




______________________________________________________
Visiter le site web du posteur
Répondre en citant
Message [R] Empecher l'ouverture d'un programme si il 
Sachadee c'est parfaitement ce genre de solution que je souhaitait Mr. Green
En revanche, sa ne marche pas.

-Ouverture de la fenetre (la 1ere), sa s'ouvre, c'est nickel
-Ouverture qui est censé etre bloqué de la même fenêtre: sa s'ouvre aussi...

Je pense donc que le problème viendrait de mon système de récupération et comparaison des pids...
Je suis un boulet xDD

J'ai utilisé ceci:

Code:
echo X > pid.txt
for /f "tokens=2 delims=," %%a in ('tasklist /v /fo csv ^| findstr /i "Ami"') do (set $PID_ID=%%a)
echo LE PID DE CE PROCESSUS EST : %$PID_ID:~1,-1%
set /p pidtest= < pid.txt
if %$PID_ID:~1,-1%==%pidtest% goto exit
echo %$PID_ID:~1,-1% > pid.txt
goto ok

:exit
echo erreur
pause
exit

:ok
echo c'est bon
pause
:::::::::::::::SUITE


Merci encore ^^"




______________________________________________________
Do what you want cause a pirate is free: you are a pirate !
Skype
Répondre en citant
Message [R] Empecher l'ouverture d'un programme si il 
On peux faire ça sinon, ça marche mieux que ta soluce sacha, désolé Laughing

Code:
@echo off
set $titre=skywalkertest
title %$titre%

for /f "tokens=2 delims=," %%a in ('tasklist /v /fo csv ^| findstr /i "%$titre%"') do (
  set "$PID=%%a"
  echo %%a >> check.txt
)

set /p $PIDcheck=<check.txt
del check.txt

echo LE PID DE CE PROCESSUS EST : %$PID%
echo LE PID CHECK EST           : %$PIDcheck%
echo.
if %$PID%==%$PIDcheck% (echo Une instance ouverte :D) else (echo PLUSIEURS instances sont ouvertes fermeture dans 5 secondes !!! &ping localhost -n 6 >nul &exit)
echo.
echo Suite du code ici :)
echo blablablalllalaalllallllllaaa
pause
exit


Enjoy Wink chez moi ça marche niquel Mr. Green Après on peut l'améliorer pour ne pas passer par un fichier temporaire Okay




______________________________________________________
Visiter le site web du posteur
Répondre en citant
Message [R] Empecher l'ouverture d'un programme si il 
Sa marche nickel !
Merci beaucoup !

Je met le topic en résolu ^^




______________________________________________________
Do what you want cause a pirate is free: you are a pirate !
Skype
Répondre en citant
Message [R] Empecher l'ouverture d'un programme si il 
De rien Timothé Wink




______________________________________________________
Visiter le site web du posteur
Message [R] Empecher l'ouverture d'un programme si il 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch