J'utilise actuellement un script batch.bat qui ouvre un programme, exécute un écran de veille et se met en pause.
Si je bouge la souris, l'écran de veille est fermé.
Mais existe-t'il une commande "Bougez la souris pour continuer..." que je pourrais utiliser pour fermer le programme que j'ai ouvert ? (Une "pause" qui attend un mouvement de souris pour continuer.) S'il-vous-plaît ?
while(1){
$curseur = [Windows.Forms.cursor]::Position
$positionX1 = $curseur.X
$positionY1 = $curseur.Y
sleep(300) #attends 5 minutes
$curseur = [Windows.Forms.cursor]::Position
$positionX2 = $curseur.X
$positionY2 = $curseur.Y
if(($positionX1 -eq $positionX2) -and ($positionY1 -eq $positionY2)){
#suite d'action a effectuer dût a l'inactivité de la souris (donc de l'utilisateur).
}
}
From le forum de devellopez.net
A adapter pour ta demande. Ici, contrôler que la position a vien changé. Réduire le sleep et boucler tant que la position 2 est égale à la position 1
- Edité par Spidergost il y a environ 1 heure
Merci de ta réponse, Spidergost.
J'avais bien vu ce code en cherchant sur l'Internet mais m'étais arrêté au fait que ça ne correspondait pas à ce que je cherchais, sans voir donc, que c'était adaptable...
Je vais essayer de faire ça, si j'ai bien compris le principe de ce code et ce qu'il faut faire pour l'adapter.
Je posterai un nouveau message pour te tenir au courant (ou l'éditerai, mais il n'y-a que peu de chance que je fasse ça aujourd'hui).
Merci beaucoup quoi qu'il en soit.
EDIT :
Bon... j'ai fait le code suivant, mais "[Windows.Forms.cursor]::Position" ne marche pas.
@echo off
Set CursorPosition1=[Windows.Forms.cursor]::Position
echo %CursorPosition1%
pause
:While
timeout /t 1
cls
Set CursorPosition2=[Windows.Forms.cursor]::Position
if "%CurseurPosition1%"=="%CurseurPosition2%" goto :While
echo The cursor has been moved.
pause
Spidergost ta donner un code en powershell, ce n'est pas du batch.
Si tu souhaites vraiment détecter un mouvement de souris en batch, il faut passer par une commande externe (je n'en connais pas mais ça doit bien exister ; à voir avec les moteurs de recherches).
Sinon, pourquoi ne pas faire une boucle tant que la veille est actif ? :
:ma_boucle
if la veille est actif(goto: ma_boucle)
echo je quitte mon programme.
exit
Il me semble bien que tu as de quoi vérifier si la veille est actif ?
Spidergost ta donner un code en powershell, ce n'est pas du batch.
Si tu souhaites vraiment détecter un mouvement de souris en batch, il faut passer par une commande externe (je n'en connais pas mais ça doit bien exister ; à voir avec les moteurs de recherches).
Sinon, pourquoi ne pas faire une boucle tant que la veille est actif ? :
:ma_boucle
if la veille est actif(goto: ma_boucle)
echo je quitte mon programme.
exit
Il me semble bien que tu as de quoi vérifier si la veille est actif ?
- Edité par Zaibai il y a environ 1 heure
Merci pour ta réponse, Zaibai.
C'est bien ce qu'il me semblait pour le PowerShell, j'ai donc adapté son code pour du batch, sauf la commande pour obtenir les coordonnées de la souris...
Le résultat de mes recherches donne toujours sur du PowerShell ou autres langages ; pas du batch dans un .bat.
Ta proposition de faire une boucle tant que l'écran de veille est actif est très bonne et ça marche parfaitement ; merci Beaucoup, Zaibai !
Oui sorry j'ai un peu fais vite ^^".
J'avoue que je batch plus trop et que je me limite maintenant au powershell, bine plus puissant. Absolument désolé x)
(Nota : Je suppose que "703" est variable en fonction de la durée précédent le moment ou je bouge la souris.)
Et effectivement, le programme que j'ai ouvert ne se ferme pas si j'attends trop longtemps avant de bouger la souris.
Je repose donc la question :
Existe-t'il une commande "Bougez la souris pour continuer..." que je pourrais utiliser pour fermer le programme que j'ai ouvert ? (Une "pause" qui attend un mouvement de souris pour continuer.) S'il-vous-plaît ?
Ou y-aurait-t'il une "bidouille" à faire pour garder cette méthode, en faisant en sorte que quelque-chose se passe entre deux cycles d'utilisation de la pile par exemple ? (Mais là c'est trop pointu pour moi, je ne connais pas assez le batch pour faire ça...)
S'il-vous-plaît.
EDIT :
Bon ben j'ai trouvé une bidouille !
Avant :
@echo off
:While
timeout /t 1
cls
tasklist /FO csv | findstr /R /C:".scr">%TEMP%\ScreensaverStarted.txt
call :TestScreensaver %TEMP%\ScreensaverStarted.txt
:TestScreensaver
if %~z1 GTR 0 goto :While
Set processus="Program_Name.exe"
for /f "tokens=1" %%i in ('tasklist /NH /FI "imagename eq %processus%"') do Set ff=%%i
if /i "%ff%"==%processus% (taskkill /f /im %processus%)
taskkill /f /im "cmd.exe"
Après :
@echo off
:Start
Set seconds=0
:While
timeout /t 1
cls
tasklist /FO csv | findstr /R /C:".scr">%TEMP%\ScreensaverStarted.txt
call :TestScreensaver %TEMP%\ScreensaverStarted.txt
:TestScreensaver
Set seconds=%seconds%+1
if %seconds% lss 60 (if %~z1 GTR 0 (goto :While) else (goto :End)) else (goto :Start)
:End
Set processus="Program_Name.exe"
for /f "tokens=1" %%i in ('tasklist /NH /FI "imagename eq %processus%"') do Set ff=%%i
if /i "%ff%"==%processus% (taskkill /f /im %processus%)
taskkill /f /im "cmd.exe"
Bon en fait, j'ai encore eu une erreur avec la "pile"...
J'ai donc cherché à nouveau sur Internet et ai trouvé un truc "tout simple" !
J'ai donc modifié mon script batch.bat comme suit :
@echo off
:: J'exécute le programme ;
Set program="Program_Name.exe"
explorer "URL_du_programme\%program%"
:: et ensuite l'écran de veille.
start /wait "Nom de l'écran de veille" "URL_de_l'écran_de_veille\Screensaver_Name.exe" /s
:: Pour pouvoir continuer à s'exécuter, le script a besoin que l'écran de veille exécuté avec les commandes "/wait" et "/s" s'arrête !
::Lorsque c'est enfin le cas, le script continue finalement à s'exécuter et peut donc arrêter le programme exécuté précédemment.
taskkill /f /im %program%
Voilà !
- Edité par TheScar.fr 30 janvier 2020 à 2:02:46
Windows 7 Professionnel SP1 x64
.
[Batch] Bougez la souris pour continuer...
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Windows 7 Professionnel SP1 x64
.
Windows 7 Professionnel SP1 x64
.
Windows 7 Professionnel SP1 x64
.
Windows 7 Professionnel SP1 x64
.
Windows 7 Professionnel SP1 x64
.
Windows 7 Professionnel SP1 x64
.
Windows 7 Professionnel SP1 x64
.