IPB

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> Script à executer en tâche de fond, pour laisser le mac dispo
Options
Phil J. Fry
posté 24 Sep 2004, 15:04
Message #1


The Original Martian & DBCM
*****

Groupe : Modérateurs
Messages : 6 554
Inscrit : 25 May 2004
Lieu : sɹɐɯ ⅋ ʞɹoʎ ʍǝu ʍǝu ⅋ ǝssᴉns
Membre no 19 190



Bonjour, j'ai ce petit script :
CODE

on do_menu(app_name, menu_name, menu_item, n_times)
try
 tell application app_name
  activate
 end tell
 repeat n_times times
  tell application "System Events"
   tell process app_name
    tell menu bar 1
     tell menu bar item menu_name
      tell menu menu_name
       click menu item menu_item
      end tell
     end tell
    end tell
   end tell
  end tell
 end repeat
 return true
on error error_message
 return false
end try
end do_menu
do_menu("Mon Jeu", "Jeu", "Tour Suivant", 1000)

qui fonctionne smile.gif mais seulement quand l'application reste en premier plan... sad.gif
Le problème est que la durée d'execution du script est d'environ 1 heure (à quelques secondes par tour...) et j'aimerais qu'il s'execute en tache de fond et laissant mon Mac disponible smile.gif
Merci




--------------------
MBP 16" Sonoma 14.4.1 MBA 13" Sonoma 14.4.1 MacBook Air 11" 10.9.5 MacBook 2Ghz 1Go X.6.4 blanc Mac Mini 1.25Ghz 1Go X.4.10 Spatule de 10,5 cm iPod shuffle 512 iPod mini 4GB iPod Nano 16GB
DBCM III Disciple du MSV Team BOINC Macbidouille
But I'm a creep, I'm a weirdo - What the hell am I doin here? - I don't belong here Radiohead
Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes - S'il n'y a pas de solution, c'est qu'il n'y a pas de problème - Devises Shadok
La connaissance, c'est savoir que la tomate est un fruit. La sagesse, c'est savoir qu'il ne faut pas la mettre dans une salade de fruit. B O'D
Go to the top of the page
 
+Quote Post
__toto__maison
posté 24 Sep 2004, 19:44
Message #2


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 1 915
Inscrit : 9 Mar 2004
Membre no 16 011



Malheureusement, je crois que c'est impossible, comme system event simule un clic de souris.

Il y a cependant (peut etre) une solution : lancer ton script chez un deuxième utilisateur dont tu ouvres une session avant de basculer sur la tienne. Mais, je ne sais pas si ca marche.

Sans indiscrétion, n'est-il pas possible de faire ce que tu cherches a faire sans utiliser system event?

Ce message a été modifié par __toto__maison - 24 Sep 2004, 19:45.


--------------------
Venez tester votre mac avec bench It! et comparez les résultats
Go to the top of the page
 
+Quote Post
Phil J. Fry
posté 25 Sep 2004, 01:42
Message #3


The Original Martian & DBCM
*****

Groupe : Modérateurs
Messages : 6 554
Inscrit : 25 May 2004
Lieu : sɹɐɯ ⅋ ʞɹoʎ ʍǝu ʍǝu ⅋ ǝssᴉns
Membre no 19 190



L'application n'étant pas scriptable directement, l'utilisation de system events était la seule solution. Une alternative aurait été de remplacer "click menu item ..." par l'envoi d'un keystroke Pomme-"T" mais je ne suis sur que ça change grand chose.

J'ai essayé le truc du 2e utilisateur, je connaitrais le résultat demain matin .

* * * * * *

Ça marche ... mais c'est sportif de changer l'utilisateur pendant que le script tourne , il veut vraiment garder le contrôle dry.gif
[to do] insérer un delay entre activate et repeat [/to do]

Merci smile.gif

Ce message a été modifié par philjfry - 25 Sep 2004, 08:33.


--------------------
MBP 16" Sonoma 14.4.1 MBA 13" Sonoma 14.4.1 MacBook Air 11" 10.9.5 MacBook 2Ghz 1Go X.6.4 blanc Mac Mini 1.25Ghz 1Go X.4.10 Spatule de 10,5 cm iPod shuffle 512 iPod mini 4GB iPod Nano 16GB
DBCM III Disciple du MSV Team BOINC Macbidouille
But I'm a creep, I'm a weirdo - What the hell am I doin here? - I don't belong here Radiohead
Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes - S'il n'y a pas de solution, c'est qu'il n'y a pas de problème - Devises Shadok
La connaissance, c'est savoir que la tomate est un fruit. La sagesse, c'est savoir qu'il ne faut pas la mettre dans une salade de fruit. B O'D
Go to the top of the page
 
+Quote Post
ddrix
posté 25 Sep 2004, 11:38
Message #4


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 094
Inscrit : 24 Jul 2003
Lieu : Berlin
Membre no 8 749



Je crois que ça se scripte le changement d'utilisateur...

Sinon tu peux faire un delay() au tout début de ton script pour te laisser le temps de basculer.
Go to the top of the page
 
+Quote Post
Phil J. Fry
posté 25 Sep 2004, 19:55
Message #5


The Original Martian & DBCM
*****

Groupe : Modérateurs
Messages : 6 554
Inscrit : 25 May 2004
Lieu : sɹɐɯ ⅋ ʞɹoʎ ʍǝu ʍǝu ⅋ ǝssᴉns
Membre no 19 190



C'est ce que j'ai fait .. et ajouté une petite fonction pour surveiller ce qui se passe de loin en loin

CODE

-- source : http://www.apple.com/applescript/guidebook/sbrt/pgs/sbrt.11.htm
on write_to_file(this_data, target_file, append_data)
try
 set the target_file to the target_file as text
 set the open_target_file to ¬
  open for access file target_file with write permission
 if append_data is false then ¬
  set eof of the open_target_file to 0
 write this_data to the open_target_file starting at eof
 close access the open_target_file
 return true
on error
 try
  close access file target_file
 end try
 return false
end try
end write_to_file
-- end of source

on printlog(num)
copy num & (the name of front window) to mystr
set fichier to (((path to public folder) as text) & "Scriptlog:Lelog")
write_to_file(mystr, fichier, true)
end printlog


on do_menu(app_name, menu_name, menu_item, n_times, ecart)
try
 tell application app_name
  activate
 end tell
 delay 10
 copy 0 to n
 copy 0 to i
 printlog(i)
 repeat n_times times
  copy n + 1 to n
  if n = ecart then
   -- c'est ici qu'on regrette i++;
   copy i + 1 to i
   printlog(i)
   copy 0 to n
  end if
  tell application "System Events"
   tell process app_name
    tell menu bar 1
     tell menu bar item menu_name
      tell menu menu_name
       click menu item menu_item
      end tell
     end tell
    end tell
   end tell
  end tell
 end repeat
 return true
on error error_message
 return false
end try
printlog("Fin")
end do_menu
do_menu("Le_Jeu", "Jeu", "Tour suivant", 20000, 150)

Merci
cool.gif


--------------------
MBP 16" Sonoma 14.4.1 MBA 13" Sonoma 14.4.1 MacBook Air 11" 10.9.5 MacBook 2Ghz 1Go X.6.4 blanc Mac Mini 1.25Ghz 1Go X.4.10 Spatule de 10,5 cm iPod shuffle 512 iPod mini 4GB iPod Nano 16GB
DBCM III Disciple du MSV Team BOINC Macbidouille
But I'm a creep, I'm a weirdo - What the hell am I doin here? - I don't belong here Radiohead
Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes - S'il n'y a pas de solution, c'est qu'il n'y a pas de problème - Devises Shadok
La connaissance, c'est savoir que la tomate est un fruit. La sagesse, c'est savoir qu'il ne faut pas la mettre dans une salade de fruit. B O'D
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 27th April 2024 - 16:04