Timers gourmands.

2»

Réponses

  • muqaddarmuqaddar Administrateur
    23:40 modifié #32
    Merci de votre aide.

    J'ai interverti launch et addobserver, enlever le release et ma méthode chez moi s'appelle bien getData...

    Toujours pareil. :(
  • cbrandtcbrandt Membre
    23:40 modifié #33
    t'aurais pas oublié [fromTask readInBackgroundAndNotify] par hasard ?  ;)
  • fouffouf Membre
    23:40 modifié #34
    dans 1109714112:

    t'aurais pas oublié [fromTask readInBackgroundAndNotify] par hasard ?  ;)

    C'est aussi une possibilité à  ne pas oublier.
  • muqaddarmuqaddar Administrateur
    23:40 modifié #35
    dans 1109750363:

    dans 1109714112:

    t'aurais pas oublié [fromTask readInBackgroundAndNotify] par hasard ?  ;)

    C'est aussi une possibilité à  ne pas oublier.


    Non, non bien sûr, ça y est...
  • ClicCoolClicCool Membre
    23:40 modifié #36
    Salut Oxitan,

    On en reviens à  ce que nous disions plus haut: Problèmes d'autorisations.

    J'ai pas encore pris le temps d'aller y voir de plus près mais j'ai fait l'essai suivant:
    Lancer par NSTask une appliAppleScript bidon avec seulement "return "Coucou" comme code:
    1°) si l'appli est dans le Buddle des ressources elle n'est pas appelée et un beep retenti
    2°) si l'appli est alleurs comme le dossier appli, elle est exécutée.

    Ceci dit ça ne résout qu'à  moitié le pb car:
    1°) Le résultat est laid car même compilée pour rester en tache de fond et sans interface l'icone du "script-appli" apparait sur le doc.
    Si dans ton appli tu la lance toutes les 5 sec. et qu'on a cette icone bondissante toutes les 5 sec. c'est pa jojo :(

    2°)  je ne suis pas parvenu à  récupérer le "coucou" qu'elle m'envoie ?
    Je m'y remettrait + tard si besoin
  • muqaddarmuqaddar Administrateur
    23:40 modifié #37
    Merci ClicCool.

    Ah oui, donc même si ça marche, la solution ne sera pas élégante... :(
    J'ai essayé de changer les droits de l'AS ds le bundle et ça change rien chez moi.

    Si le script se lance toutes les 15 secondes, tu crois que c ça qui prend des ressources, je parle de la compilation de l'AS ?
  • fouffouf Membre
    23:40 modifié #38
    Tu pourrais envoyer le code STP , ca serait plus facile pour nous.  ::)
  • ClicCoolClicCool Membre
    23:40 modifié #39
    dans 1109754260:
    Si le script se lance toutes les 15 secondes, tu crois que c ça qui prend des ressources, je parle de la compilation de l'AS ?


    Je ne connais pas trop AS ni la classe NSAppleScript, mais tu peux pas créer ta NSAS une seule fois, la compiler une seule fois avec: compileAndReturnError: puis l'exécuter toutes les 15 sec. ?
  • muqaddarmuqaddar Administrateur
    23:40 modifié #40
    dans 1109754482:

    Tu pourrais envoyer le code STP , ca serait plus facile pour nous.  ::)


    <br />- (void)checkApp:(NSTimer*)timer<br />{<br />&nbsp; &nbsp; NSFileHandle *fromTask;<br />	NSTask *task;<br />	NSString* path = [[NSBundle mainBundle] pathForResource:@&quot;myScript&quot; ofType:@&quot;app&quot;];<br />	NSPipe* fromPipe;<br />	<br />	fromPipe = [[NSPipe alloc] init];<br />	fromTask = [fromPipe fileHandleForReading];<br />		<br />	task = [[NSTask alloc] init];<br />	<br />	[task setLaunchPath:path];	<br />	[task setStandardOutput:fromPipe];<br /><br />	[task launch];		<br />	[[NSNotificationCenter defaultCenter] addObserver:self<br />											 selector:@selector(getData:)<br />												 name:NSFileHandleReadCompletionNotification<br />											&nbsp;  object:fromTask];<br />	[[[task standardOutput] fileHandleForReading] readInBackgroundAndNotify];<br /><br />	[task release];<br />}<br /><br />- (void)getData:(NSNotification *)aNotification<br />{<br />&nbsp; &nbsp; NSData *data = [[aNotification userInfo] objectForKey:NSFileHandleNotificationDataItem];<br />	NSString* str;<br />	if ([data length])<br />&nbsp; &nbsp; {<br />&nbsp; &nbsp; &nbsp; &nbsp; str = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease];<br />&nbsp; &nbsp; }<br />	 <br />&nbsp; &nbsp; [[aNotification object] readInBackgroundAndNotify];&nbsp; 		<br />}<br />
    
  • fouffouf Membre
    23:40 modifié #41
    Bon je suis pas specialiste d'AS mais je sais lire les feuilles d'enregistrement  :o : quand on sauve un AS pour la 1ere fois, on a le choix entre les formats "script", "application", "lot de script", "lot d'applications" et "texte". Il faut choisir "Application".

    Ensuite, il faut cocher l'option "Rester en arrière plan" et la, c'est bon. En tout cas, chez moi, ca marche.
  • muqaddarmuqaddar Administrateur
    23:40 modifié #42
    dans 1109754703:

    dans 1109754260:
    Si le script se lance toutes les 15 secondes, tu crois que c ça qui prend des ressources, je parle de la compilation de l'AS ?


    Je ne connais pas trop AS ni la classe NSAppleScript, mais tu peux pas créer ta NSAS une seule fois, la compiler une seule fois avec: compileAndReturnError: puis l'exécuter toutes les 15 sec. ?



    Je teste et te tiens au jus.
  • ClicCoolClicCool Membre
    23:40 modifié #43
    dans 1109755157:

    Bon je suis pas specialiste d'AS mais je sais lire les feuilles d'enregistrement  :o : quand on sauve un AS pour la 1ere fois, on a le choix entre les formats "script", "application", "lot de script", "lot d'applications" et "texte". Il faut choisir "Application".

    Ensuite, il faut cocher l'option "Rester en arrière plan" et la, c'est bon. En tout cas, chez moi, ca marche.


    Oui mais même si tu coches rester en arrière plan t'as l'iconne qui polue le dock  :(
  • fouffouf Membre
    23:40 modifié #44
    "Ils ont des yeux et ils ne voient pas"
    Autant pour moi, je me suis trompe. 
    :)beta:  :fouf):
  • muqaddarmuqaddar Administrateur
    23:40 modifié #45
    C'est quand même bizarre de pas pouvoir mettre juste un script à  executer... pkoi une app ?
  • ClicCoolClicCool Membre
    23:40 modifié #46
    dans 1109755529:

    "Ils ont des yeux et ils ne voient pas"


    Tu vois flou fouf ou net ?  ;D ;D :P
  • cbrandtcbrandt Membre
    23:40 modifié #47
    bon, le readInBackgroundAndNotify est fait sur l'objet [[task standardOutput] fileHandleForReading]  et  l'objet de la notification est le fromTask... à  première vue c'est le même objet mais bon... et supprime le [task release] s'il te plaà®t, pour tester
  • fouffouf Membre
    23:40 modifié #48
    En fait, je ne comprends pas : on ne peut pas executer l'AS en utilisant la classe NSAppleScript ? Si tu trouve que cela prend trop de temps CPU, tu peut-être remplacer l'AS par un shell script. A voir.

    @ClicCool
    dans 1109755872:

    Tu vois flou fouf ou net ?  ;D ;D :P


    Je suis mort de rire.
  • muqaddarmuqaddar Administrateur
    23:40 modifié #49
    Alors je m'explique. :)

    J'ai un AS qui sera appelé toutes les minutes en gros ds un timer. Là , il était ds un fichier texte et compilé à  chaque fois.
    Ce que je récupère dans cet appleScript ne peut pas être fait par un script shell.

    Je voualsi essayer une NSTask pour voir si c'était plus rapide de lancer une app (mon script compilé en app). Je n'y arrive pas.

    Sinon, l'idée de ClicCool me parait bonne : compiler au début et envoyer le script à  chasque fois comme avant ds un AScriptDescriptor.
Connectez-vous ou Inscrivez-vous pour répondre.