2009-03-06 5 views

Répondre

1

Il semble que vous souhaitiez utiliser une tâche planifiée au lieu d'un service. Les tâches planifiées peuvent s'exécuter toutes les heures, pendant que vous êtes connecté, et devraient également être en mesure d'interagir avec votre bureau. N'oubliez pas qu'une tâche exécutée en tant qu'utilisateur normal ne peut pas interagir (envoyer une entrée) à un programme élevé si vous utilisez Vista/Windows Server 2008 avec le contrôle de compte d'utilisateur activé.

2

Comme mentionné ci-dessus, une tâche planifiée est ce que vous recherchez. Pour exécuter un script en tant que service, lisez ceci:

Q4. Comment puis-je exécuter mon script en tant que service? C'est aussi une question à réponses multiples, et aucune d'entre elles n'est la seule façon de le faire. La première question à vous poser est de savoir si vous souhaitez ou non installer le service sur d'autres ordinateurs que le vôtre.

A1. If you only wish to install the service on your own computer, The easiest way to do this is to use Pirmasoft RunAsSvc. This program makes services easy to install and easy to remove when necessary. 
A2. If you wish to make the service available to anyone running your script, you can use SRVANY.EXE and ServiceControl.au3. You can then use this code to install your script as a service: 
    #include "ServiceControl.au3" 
    $servicename = "MyServiceName" 
    _CreateService("", $servicename, "My AutoIt Script", "C:\Path_to_srvany.exe", "LocalSystem", "", 0x110) 
    RegWrite("HKLM\SYSTEM\CurrentControlSet\Services\" & $servicename & "\Parameters", "Application", "REG_SZ", @ScriptFullPath) 

or use the following code to delete this service: 
    #include "ServiceControl.au3" 
    $servicename = "MyServiceName" 
    _DeleteService("", $servicename) 

Il y a une mise en garde à la mise en place AutoIt en tant que service. Si le service n'est pas installé à l'aide du code ci-dessus, il doit avoir le paramètre «autoriser le service à interagir avec le bureau», sinon les fonctions d'automatisation telles que les fonctions Control * ou Win * ne fonctionneront pas. Pour assurer le service ne dispose en effet ce paramètre, utilisez le code suivant: RegWrite ("HKLM \ SYSTEM \ CurrentControlSet \ Services [NomService]", "Type", "REG_DWORD", 0x110)

Pris du Sujet de la FAQ sur les forums AutoIt. www.autoitscript.com/forum/index.php?showtopic=37289)

4

Vous pouvez facilement faire exécuter un script autoit en tant que service using service.au3 written by archer des forums autoit. Malheureusement ou heureusement puisque c'est une mesure de sécurité. Un service doit démarrer indépendamment de la session utilisateur en cours (avant la connexion). Il ne peut pas accéder aux API d'envoi pour la manipulation des entrées de la session utilisateur en cours à partir de là. Cela semble beaucoup plus comme si vous avez besoin d'une tâche planifiée et non d'un service.

Questions connexes