[R] Plusieurs tâches à la fois

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
manzarek
Niveau 2
Niveau 2
Messages : 27
Enregistré le : mer. 30 déc. 2009 14:29
Status : Hors ligne

[R] Plusieurs tâches à la fois

#1

Message par manzarek »

Bonjour, :mrgreen:
est il possible d'exécuter plusieurs tache a la fois?

Je m'explique:
J'ai un script qui permet de visualiser le bureau de quelqu'un a distance
Mais il est dans un boucle de type while 1
Et J'ai un script qui verifie si les hotes ne se déconnecte pas et sinon les retire de la liste (Ca fait trojan mais c'est pas ca ^^) :P


Est possible d'utiliser le script pour voir le bureau sur 2 personne a la fois et continuer a vérifier si personne ne se déconnecte?
Car une fois que j'aurai lancé sur la premier personne je serai dans la boucle et je ne pourrait pas le lancé sur une autres personnes.

Je sais pas si ce que je dit est compréhensible. :roll:
Je cherche un peu a faire comme les timers de visual basic en gros.

Merci de me mettre sur la voie :D
Modifié en dernier par manzarek le ven. 19 févr. 2010 13:29, modifié 1 fois.
Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

Re: [..]Plusieurs taches a la fois

#2

Message par matwachich »

Salut!
Déjà, pour verifier si ya pas de déconnexion tu as (Cherche dans la doc.)

Code : Tout sélectionner

AdlibRegister ( "function" [, time] )


Pour voir 2 pc en même temps, je sais pas si c'est possible dans un seul script (ce qui m'étonerai vu qu'autoit ne supporte pas le multithread) mais si c'était moi j'aurai tout simplement lancé le script 2 fois!
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
manzarek
Niveau 2
Niveau 2
Messages : 27
Enregistré le : mer. 30 déc. 2009 14:29
Status : Hors ligne

Re: [..]Plusieurs taches a la fois

#3

Message par manzarek »

J'ai une idée si j'ouvre 2 fenetre qui permette de regarder le bureau

une appelé "screen1"
l'autre "screen2"

Et remplacer la boucle while 1 par While WinWaitActive("screen1") et While WinWaitActive("screen1")

Les deux ne seront pas active en même temps mais je pourrai les laissé toute les deux ouverte et passer de une a l'autre.

Je vais essayer ca je ne met pas résolu tout de suite
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..]Plusieurs taches a la fois

#4

Message par Tlem »

Certes, AutoIt n'est pas multithread, mais AdlibRegister() permet de faire comme si et puis il faudrait voir de quelle manière vous procédez pour afficher le bureau de l'utilisateur car il n'est pas besoin d'être multithread pour afficher plusieurs fenêtres. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
manzarek
Niveau 2
Niveau 2
Messages : 27
Enregistré le : mer. 30 déc. 2009 14:29
Status : Hors ligne

Re: [..]Plusieurs taches a la fois

#5

Message par manzarek »

Code : Tout sélectionner

While 1
        Sleep(50)
        Local $k = TCPRecv($TCPConnect,20000000,0)
        If @error Then
            ConsoleWrite("Lost sock!" & @CRLF)
            ExitLoop
        EndIf
        If $k Then
            $TCPRecv = $TCPRecv & $k
            If BinaryLen($TCPRecv)<4 Then ContinueLoop
            ;ConsoleWrite(BinaryLen($TCPRecv) & " / " & Bin2Num(BinaryMid($TCPRecv,1,4))+4&@CRLF)
            If BinaryLen($TCPRecv)>=Bin2Num(BinaryMid($TCPRecv,1,4))+4 And Bin2Num(BinaryMid($TCPRecv,1,4))+4>0 Then
            ;   ConsoleWrite("Done!" & @CRLF)
                $ScreenshotHandle = FileOpen($ScreenshotName, 18)
                FileWrite($ScreenshotHandle, BinaryMid($TCPRecv,5))
                FileClose($ScreenshotHandle)
                $hBitmap = _GDIPlus_BitmapCreateFromFile($ScreenshotName)
                _GDIPlus_GraphicsDrawImageRect ($hGraphic, $hBitmap,0,0,1024,768)
                _GDIPlus_BitmapDispose ($hBitmap)
                FileDelete($ScreenshotName)
                WinSetTitle($hGUI,"" , BinaryLen($TCPRecv)-4&" at "& Round(1/(TimerDiff($timer)/1000),2)&" fps")
                $TCPRecv=BinaryMid($TCPRecv,5+Bin2Num(BinaryMid($TCPRecv,1,4)))
                $timer = TimerInit()
            EndIf
        EndIf
    WEnd
voici la partie qui affiche le bureau une fois dans la boucle on ne peut plus en sortir a moins de quitter
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..]Plusieurs taches a la fois

#6

Message par Tlem »

Oui, une fois dans la boucle While, vous ne pouvez en sortir que par le ExitLoop, mais au même titre que While/Wend fait une boucle infinie, un AdlibRegister() est capable de faire la même chose. ;)

Donc bien organisé, vous pourriez faire une fonction qui regroupe les commande essentielles puis une fonction adaptée pour chacun des bureaux que vous voulez surveiller.
Il faudra passer par des arguments et des variables locales, mais je pense que cela devrait être possible sans le multitâche (il suffit d'équilibrer le temps impartit à chaque AdlibRegister()). ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
manzarek
Niveau 2
Niveau 2
Messages : 27
Enregistré le : mer. 30 déc. 2009 14:29
Status : Hors ligne

Re: [..]Plusieurs taches a la fois

#7

Message par manzarek »

Merci beaucoup je vais me débrouiller avec les adlibregister.
Je vais mettre résolu.
Je vais recoder mon remote desktop depuis le début


Voici ce que j'ai commencer si ca interresse quelq'un:
Fichiers joints
remote.au3
(1.33 Kio) Téléchargé 78 fois
Répondre