AutoIt Français

Nouveau forum : http://www.autoitscript.fr/
 
AccueilFAQRechercherS'enregistrerMembresGroupesConnexionhttp://www.autoitscript.fr

Partagez | 
 

 Probleme envoi écran[RESOLU]

Voir le sujet précédent Voir le sujet suivant Aller en bas 
Aller à la page : 1, 2  Suivant
AuteurMessage
Dragonsayen
Débutant
Débutant


Nombre de messages : 18
Age : 26
Localisation : Auray (Morbihan)
Date d'inscription : 10/12/2006

MessageSujet: Probleme envoi écran[RESOLU]   2007-02-06, 20:41

Alors voila, mon probleme c'est que je n'arrive pas a avoir rapidement l'écran d'un ordi en réseau.
Je vous passe les scripts si vous voulez voir (mais c'est tres lent pour l'écran ^^ j'ai utiliser la méthode pour avoir la couleur d'un pixel)

script pour le serveur :
#NoTrayIcon
Dim $szIPADDRESS = @IPAddress1
Dim $nPORT = 33891
TCPStartUp()
$MainSocket = TCPListen($szIPADDRESS, $nPORT)
If $MainSocket = -1 Then Exit
Dim $ConnectedSocket = -1
Do
$ConnectedSocket = TCPAccept($MainSocket)
Until $ConnectedSocket <> -1
Dim $szIP_Accepted = SocketToIP($ConnectedSocket)
Dim $msg, $recv
While 1
$souris = 0
$recv = TCPRecv( $ConnectedSocket, 32 )
If @error Then
ExitLoop
EndIf
If $recv <> "" Then
If $recv = "scan cd" Then
$listecd = DriveGetDrive ( "cdrom" )
$bouclelistecd = 0
$listedescd = ""
While $bouclelistecd < $listecd[0]
$bouclelistecd += 1
$etatcd = DriveStatus ( $listecd[$bouclelistecd] )
If $bouclelistecd = 1 Then
$listedescd = $listecd[$bouclelistecd] & "*" & $etatcd
Else
$listedescd = $listedescd & "/" &$listecd[$bouclelistecd] & "*" & $etatcd
EndIf
If $listecd[0] = 0 Then
$listedescd = "Aucun lecteur cd !"
EndIf
WEnd
TCPSend($ConnectedSocket,$listedescd)
ElseIf $recv = "rapport simple" Then
rapport()
$recv = ""
ElseIf $recv = "ecran" Then
$listepixel = ""
$bouclex = 0
$boucley = 4
While $boucley < 768
$bouclex += 4
if $bouclex > 1024 Then
$bouclex = 1
$boucley += 4
EndIf
$couleur = PixelGetColor ( $bouclex, $boucley )
TCPSend ( $ConnectedSocket, $couleur )
$recu = ""
While $recu = ""
$recu = TCPRecv( $ConnectedSocket, 2 )
WEnd
WEnd
$finpixel = "fin"
TCPSend ( $ConnectedSocket, $finpixel )
ElseIf $recv = "nom fenetre" Then
$nomfenactive = WinGetTitle ( "" )
If $nomfenactive = "" Then
$nomfenactive = "Aucun nom"
EndIf
TCPSend($ConnectedSocket,$nomfenactive)
Else
$debutrecv = StringLeft ( $recv, 17 )
$lecteurconcerne = StringRight ( $recv, 1 )
If $debutrecv = "ouvrir lecteur cd" Then
CDTray ( $lecteurconcerne & ":", "open" )
ElseIf $debutrecv = "fermer lecteur cd" Then
CDTray ( $lecteurconcerne & ":", "closed" )
EndIf
$debutrecv = StringLeft ( $recv, 1 )
$restesouris = StringTrimLeft ( $recv, 1 )
If $debutrecv = "£" Then
$possouris = StringSplit ( $restesouris, "/" )
MouseMove ( $possouris[1], $possouris[2], 1 )
$souris = 1
BlockInput (1)
EndIf
if $souris = 1 Then
$tempstotal = 0
$temps = TimerInit ()
While $tempstotal < 1000
$recv = TCPRecv( $ConnectedSocket, 10 )
$debutrecv = StringLeft ( $recv, 1 )
$clique = StringLeft ( $debutrecv, 1 )
$restesouris = StringTrimLeft ( $recv, 2 )
If $debutrecv = "£" Then
$possouris = StringSplit ( $restesouris, "/" )
MouseMove ( $possouris[1], $possouris[2], 1 )
If $clique = 1 Then
MouseDown ( "left" )
ElseIf $clique = 2 Then
MouseDown ( "right" )
Else
MouseUp ( "left" )
MouseUp ( "right" )
EndIf
$temps = TimerInit ()
Else
$tempstotal = TimerDiff ( $temps )
EndIf
WEnd
EndIf
BlockInput (0)
EndIf
EndIf
WEnd
If $ConnectedSocket <> -1 Then TCPCloseSocket( $ConnectedSocket )
TCPShutDown()
Func SocketToIP($SHOCKET)
Local $sockaddr = DLLStructCreate("short;ushort;uint;char[8]")
Local $aRet = DLLCall("Ws2_32.dll","int","getpeername","int",$SHOCKET, _
"ptr",DLLStructGetPtr($sockaddr),"int_ptr",DLLStructGetSize($sockaddr))
If Not @error And $aRet[0] = 0 Then
$aRet = DLLCall("Ws2_32.dll","str","inet_ntoa","int",DLLStructGetData($sockaddr,3))
If Not @error Then $aRet = $aRet[0]
Else
$aRet = 0
EndIf
$sockaddr = 0
Return $aRet
EndFunc
Func rapport()
$debut = TimerInit ()
$jour = @MDAY
$nomjour = @WDAY
$mois = @MON
$annee = @YEAR
$heure = @HOUR
$minute = @MIN
$seconde = @SEC
If $nomjour = 1 then
$nomdujour = "Dimanche"
ElseIf $nomjour = 2 then
$nomdujour = "Lundi"
ElseIf $nomjour = 3 then
$nomdujour = "Mardi"
ElseIf $nomjour = 4 then
$nomdujour = "Mercredi"
ElseIf $nomjour = 5 then
$nomdujour = "Jeudi"
ElseIf $nomjour = 6 then
$nomdujour = "Vendredi"
ElseIf $nomjour = 7 then
$nomdujour = "Samedi"
EndIf
If $mois = 1 then
$nomdumois = "Janvier"
ElseIf $mois = 2 then
$nomdumois = "Février"
ElseIf $mois = 3 then
$nomdumois = "Mars"
ElseIf $mois = 4 then
$nomdumois = "Avril"
ElseIf $mois = 5 then
$nomdumois = "Mai"
ElseIf $mois = 6 then
$nomdumois = "Juin"
ElseIf $mois = 7 then
$nomdumois = "Juillet"
ElseIf $mois = 8 then
$nomdumois = "Août"
ElseIf $mois = 9 then
$nomdumois = "Septembre"
ElseIf $mois = 10 then
$nomdumois = "Octobre"
ElseIf $mois = 11 then
$nomdumois = "Novembre"
ElseIf $mois = 12 then
$nomdumois = "Décembre"
EndIf
$daterapport = $nomdujour & " " & $jour & " " & $nomdumois & " " & $annee & " à " & $heure & "H" & $minute & "min" & $seconde & "sec"
$disquedur = DriveGetDrive ( "fixed" )
$fin = 0
$disquedurfinal = "aucun"
While $fin < $disquedur[0]
$fin = $fin + 1
$espacelibre = DriveSpaceFree ( $disquedur[$fin] & "" )
if $espacelibre > 100 Then
$disquedurfinal = $disquedur[$fin]
ExitLoop
EndIf
WEnd
$totaldisquedur = DriveSpaceTotal( $disquedurfinal & "")
$memoire = MemGetStats ()
$utilisateur = @UserName
$nomdeordi = @ComputerName
$systeme = @OSTYPE
$servicepack = @OSServicePack
$versionwin = @OSVersion
$hauteur = @DesktopHeight
$largeur = @DesktopWidth
$addresseIP = @IPAddress1
$mesdocuments = @MyDocumentsDir
$programfiles = @ProgramFilesDir
$temporaire = @TempDir
$bureau = @DesktopDir
$demarrage = @StartupDir
$dossierwindows = @WindowsDir
$menudemarrer = @StartMenuDir
$progdumenudemarrer = @ProgramsDir
$listecomplete = DriveGetDrive ( "ALL" )
$chainelecteurs = "Nombre de lecteurs : " & $listecomplete[0] & @CRLF
$boucleliste = 0
While $boucleliste < $listecomplete[0]
$boucleliste = $boucleliste + 1
$textelecteur = "Lecteur " & $listecomplete[$boucleliste]
$typedelecteur = DriveGetType ( $listecomplete[$boucleliste] & "" )
$systemfilelecteur = DriveGetFileSystem ( $listecomplete[$boucleliste] & "" )
$labellecteur = DriveGetLabel ( $listecomplete[$boucleliste] & "" )
$seriallecteur = DriveGetSerial ( $listecomplete[$boucleliste] & "" )
$statuslecteur = DriveStatus ( $listecomplete[$boucleliste] & "" )
$espacetotallecteur = DriveSpaceTotal ( $listecomplete[$boucleliste] & "" )
$espacelibrelecteur = DriveSpaceFree ( $listecomplete[$boucleliste] & "" )
$chainelecteurs = $chainelecteurs & @CRLF & $textelecteur & @CRLF & "Type : " & $typedelecteur & @CRLF & "File System Type : " & $systemfilelecteur & @CRLF & "Label : " & $labellecteur & @CRLF & "Serial : " & $seriallecteur & @CRLF & "Status (au moment du rapport) : " & $statuslecteur & @CRLF & "Espace total : " & $espacetotallecteur & " Mo" & @CRLF & "Espace libre : " & $espacelibrelecteur & " Mo" & @CRLF
WEnd
$listeprocessus = ProcessList ()
$chaineprocessus = "Nombre de processus actif lors du rapport : " & $listeprocessus[0][0] & @CRLF & @CRLF & "Liste des processus :" & @CRLF
$boucleprocessus = 0
While $boucleprocessus < $listeprocessus[0][0]
$boucleprocessus = $boucleprocessus + 1
$texteprocessus = "Processus n°" & $boucleprocessus
$nomprocessus = $listeprocessus[$boucleprocessus][0]
$idprocessus = $listeprocessus[$boucleprocessus][1]
$chaineprocessus = $chaineprocessus & @CRLF & $texteprocessus & @CRLF & "Nom du processus : " & $nomprocessus & @CRLF & "ID du processus (PID) : " & $idprocessus & @CRLF
WEnd
$listefenetre = WinList ()
$chainefenetre = "Nombre de fenetres actives lors du rapport : " & $listefenetre[0][0] & @CRLF & @CRLF & "Liste des fenetres :" & @CRLF
$bouclefenetre = 0
While $bouclefenetre < $listefenetre[0][0]
$bouclefenetre = $bouclefenetre + 1
$textefenetre = "fenetre n°" & $bouclefenetre
$nomfenetre = $listefenetre[$bouclefenetre][0]
$idfenetre = $listefenetre[$bouclefenetre][1]
$chainefenetre = $chainefenetre & @CRLF & $textefenetre & @CRLF & "Nom de la fenetre : " & $nomfenetre & @CRLF & "Handle de la fenetre (HWND) : " & $idfenetre & @CRLF
WEnd
$totaltemps = TimerDiff ( $debut )
$rapport = "Disque dur choisit = " & $disquedurfinal & @CRLF & "Espace restant à l'intérieur : " & $espacelibre & " Mb" & @CRLF & "Nom d'utilisateur : " & $utilisateur & @CRLF & "Date du rapport = " & $daterapport & @CRLF & "Temps total de l'installation = " & $totaltemps & " ms" & @CRLF & @CRLF & "Autres infos :" & @CRLF & @CRLF & "Nom de l'ordinateur : " & $nomdeordi & @CRLF & "Système : " & $systeme & @CRLF & "Version de Windows : " & $versionwin & @CRLF & "Service pack : " & $servicepack & @CRLF & "Hauteur de l'écran : " & $hauteur & @CRLF & "Largeur de l'écran : " & $largeur & @CRLF & "Addresse IP : " & $addresseIP & @CRLF & "Dossier Mes documents : " & $mesdocuments & @CRLF & "Dossier Program Files : " & $programfiles & @CRLF & "Dossier temporaire : " & $temporaire & @CRLF & "Bureau : " & $bureau & @CRLF & "Dossier demarrage dans le menu demarrer : " & $demarrage & @CRLF & "Dossier Windows : " & $dossierwindows & @CRLF & "Menu démarrer : " & $menudemarrer & @CRLF & "Dossier programmes du menu démarrer : " & $progdumenudemarrer & @CRLF & "Taille total du disque dur : " & $totaldisquedur & @CRLF & "Pourcentage de memoire utilisée : " & $memoire[0] & " %" & @CRLF & "Total de la mémoire RAM (physique) : " & $memoire[1] & " kb" & @CRLF & "Memoire RAM (physique) libre : " & $memoire[2] & " kb" & @CRLF & "Charge dédiée totale : " & $memoire[3] & " kb" & @CRLF & "Charge dédiée libre : " & $memoire[4] & " kb" & @CRLF & "Memoire virtuelle totale : " & $memoire[5] & " kb" & @CRLF & "Memoire virtuelle libre : " & $memoire[6] & " kb" & @CRLF & @CRLF & "Tout sur les lecteurs : " & @CRLF & $chainelecteurs & @CRLF & @CRLF & "Tout sur les processus actifs lors du rapport : " & @CRLF & @CRLF & $chaineprocessus & @CRLF & @CRLF & "Tout sur les fenetres présentes lors du rapport : " & @CRLF & @CRLF & $chainefenetre & @CRLF & @CRLF & "Fin du rapport !"
TCPSend($ConnectedSocket,$rapport)
Sleep (7000)
EndFunc


Dernière édition par le 2007-02-06, 20:43, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.riseoflords.com/?seigneur=dragonsayan
Dragonsayen
Débutant
Débutant


Nombre de messages : 18
Age : 26
Localisation : Auray (Morbihan)
Date d'inscription : 10/12/2006

MessageSujet: Re: Probleme envoi écran[RESOLU]   2007-02-06, 20:42

et pour le client :

#include <GUIConstants.au3>
#Include <Misc.au3>
opt ( "TrayIconDebug", 1 )
TCPStartUp()
Dim $szServerPC = @ComputerName
Dim $szIPADDRESS = InputBox ( "Entrez l'IP", "Entrez l'addresse IP de l'ordinateur à contrôler", "192.168.0.2" )
Dim $nPORT = 33891
$ping = Ping ( $szIPADDRESS )
If $ping = 0 Then
MsgBox (16, "Erreur", "L'addresse IP est introuvable", 10 )
EndIf
Dim $ConnectedSocket = -1
Dim $szData
$ConnectedSocket = TCPConnect($szIPADDRESS,$nPORT)
If @error Then
MsgBox(4112,"Erreur","TCPConnect a échoué avec l'erreur WSA : " & @error)
Exit
EndIf
$parent = GUICreate ( "Contrôle de l'ordinateur",270,110, -1,-1, -1, 0x00000010)
GUISetBkColor (0xE0FFFF)
GUICtrlCreateTab (0,0,400,500)
GUICtrlCreateTabItem ("Général")
GUICtrlCreateLabel ( "Ceci fait un rapport de l'ordi", 5, 30 )
$boutonderapport = GUICtrlCreateButton ( "Faire un rapport complet", 25, 80 )
GUICtrlCreateTabItem ("Lecteur cd")
GUICtrlCreateLabel ( "Choisissez le nom du lecteur (1 lettre)", 5, 30 )
$lecteurcd = GuiCtrlCreateInput ( "E", 10, 50 )
$bouton1 = GUICtrlCreateButton ( "Ouvrir", 25, 80 )
$bouton2 = GUICtrlCreateButton ( "Fermer", 135, 80 )
$bouton3 = GUICtrlCreateButton ( "Scan", 80, 80 )
GUICtrlCreateTabItem ("fenetre")
GUICtrlCreateLabel ( "obtenir le nom de la fenetre active", 5, 30 )
$obtenirnomfenetre = GUICtrlCreateButton ( "montrer le nom", 20, 80 )
$cachernomfenetre = GUICtrlCreateButton ( "cacher le nom", 110, 80 )
GUICtrlCreateTabItem ("souris")
GUICtrlCreateLabel ( "manipuler la souris", 5, 30 )
$activersouris = GUICtrlCreateButton ( "Activer !", 20, 80 )
$desactiversouris = GUICtrlCreateButton ( "Désactiver !", 100, 80 )
GUICtrlCreateTabItem ("ecran")
$obtenirecran = GUICtrlCreateButton ( "Voir l'écran", 80, 80 )
GUISetState ()
$sourismanipulee = 0
$nomfenetre = 0
While 1
$donnee = GUIGetMsg()
if $donnee = $GUI_EVENT_CLOSE Then
GUIDelete ()
Exit
EndIf
If $sourismanipulee = 1 Then
$cliquegauche = _IsPressed("01")
$cliquedroit = _IsPressed("02")
If $cliquegauche = 1 Then
$clique = 1
ElseIf $cliquedroit = 1 Then
$clique = 2
Else
$clique = 0
EndIf
$souris = MouseGetPos ()
$donneesouris = "£" & $clique & $souris[0] & "/" & $souris[1]
TCPSend($ConnectedSocket,$donneesouris)
EndIf
If $donnee = $obtenirecran Then
if WinExists ( "écran (vue non directe)" ) Then
GUIDelete ($nouveau)
EndIf
HotKeySet ( "!{F4}", "fermergui" )
$nouveau = GUICreate ( "écran (vue non directe)", 256, 192 )
GUICtrlCreateGraphic ( 0, 0, 256, 192 )
$donneecran = "ecran"
TCPSend($ConnectedSocket,$donneecran)
$pixel = ""
$tempsavantarret = TimerInit ()
$tempschrono = 0
While $tempschrono < 10000
$tempschrono = TimerDiff ( $tempsavantarret )
$pixel = TCPRecv( $ConnectedSocket, 16 )
If $pixel <> "" Then
ExitLoop
EndIf
WEnd
if $pixel = "" Then
MsgBox (16, "Erreur", "Aucune donnée reçu" )
Else
$bouclex = 1
$boucley = 1
While $pixel <> ""
GUICtrlSetGraphic ( -1, $GUI_GR_COLOR, $pixel )
GUICtrlSetGraphic ( -1, $GUI_GR_PIXEL, $bouclex, $boucley )
$donneecran = "ok"
TCPSend($ConnectedSocket,$donneecran)
$pixel = ""
while $pixel = ""
$pixel = TCPRecv( $ConnectedSocket, 8 )
WEnd
If $pixel = "fin" Then
ExitLoop
EndIf
$bouclex += 1
If $bouclex > 256 Then
$bouclex = 1
$boucley += 1
EndIf
WEnd
GUISetState ()
EndIf
EndIf
If $donnee = $activersouris Then
$sourismanipulee = 1
EndIf
if $donnee = $desactiversouris Then
$sourismanipulee = 0
EndIf
If $donnee = $obtenirnomfenetre Then
$tpsfen = TimerInit ()
$nomfenetre = 1
EndIf
if $donnee = $cachernomfenetre Then
$nomfenetre = 0
SplashOff ()
EndIf
If $nomfenetre = 1 Then
$chronofenetre = TimerDiff ( $tpsfen )
If $chronofenetre > 2000 Then
$szData = "nom fenetre"
TCPSend($ConnectedSocket,$szData)
$donneerecu = ""
$tempsavantarret = TimerInit ()
$tempschrono = 0
While $tempschrono < 30000
$tempschrono = TimerDiff ( $tempsavantarret )
$donneerecu = TCPRecv( $ConnectedSocket, 2048 )
If $donneerecu <> "" Then
ExitLoop
EndIf
WEnd
if $donneerecu = "" Then
MsgBox (16, "Erreur", "Erreur pour le nom de la fenetre : Aucune donnée reçu" )
Else
SplashTextOn ( "Nom de la fenetre de " & $ConnectedSocket, $donneerecu, -1, 35, -1, 25 )
EndIf
$tpsfen = TimerInit ()
EndIf
EndIf
If $donnee = $boutonderapport Then
$szData = "rapport simple"
TCPSend($ConnectedSocket,$szData)
$donneerecu = ""
$tempsavantarret = TimerInit ()
$tempschrono = 0
While $tempschrono < 30000
$tempschrono = TimerDiff ( $tempsavantarret )
sleep (1000)
$donneerecu = TCPRecv( $ConnectedSocket, 4096 )
sleep (1000)
If $donneerecu <> "" Then
ExitLoop
EndIf
WEnd
if $donneerecu = "" Then
MsgBox (16, "Erreur", "Aucune donnée reçu" )
Else
$totalrapport = $donneerecu
While $donneerecu <> ""
$donneerecu = TCPRecv( $ConnectedSocket, 4096 )
$totalrapport = $totalrapport & $donneerecu
WEnd
Sleep (2000)
if WinExists ( "Sans titre - Bloc-notes" ) Then
sleep (100)
Else
BlockInput (1)
Run ( "notepad.exe" )
EndIf
Sleep (800)
WinActivate ( "Sans titre - Bloc-notes" )
Sleep (500)
Send ( "^a" )
Send ( "{DEL}" )
ClipPut ( $totalrapport )
Sleep (200)
Send ( "^v" )
BlockInput (0)
EndIf
EndIf
If $donnee = $bouton1 Then
$nomlecteurcd = GUICtrlRead ( $lecteurcd )
$szData = "ouvrir lecteur cd" & $nomlecteurcd
TCPSend($ConnectedSocket,$szData)
If @error Then Exit
EndIf
If $donnee = $bouton2 Then
$nomlecteurcd = GUICtrlRead ( $lecteurcd )
$szData = "fermer lecteur cd" & $nomlecteurcd
TCPSend($ConnectedSocket,$szData)
If @error Then Exit
EndIf
If $donnee = $bouton3 Then
$szData = "scan cd"
TCPSend($ConnectedSocket,$szData)
$donneerecu = ""
$tempsavantarret = TimerInit ()
$tempschrono = 0
While $tempschrono < 10000
$tempschrono = TimerDiff ( $tempsavantarret )
$donneerecu = TCPRecv( $ConnectedSocket, 2048 )
If $donneerecu <> "" Then
ExitLoop
EndIf
WEnd
If $donneerecu <> "" Then
$trilecteur = StringSplit ( $donneerecu, "/" )
$boucletri = 0
$listerapportcd = ""
While $boucletri < $trilecteur[0]
$boucletri += 1
$lectetetat = StringSplit ( $trilecteur[$boucletri], "*" )
If $lectetetat[0] = 2 Then
$listerapportcd = $listerapportcd & "lecteur : " & $lectetetat[1] & @CRLF & "Etat : " & $lectetetat[2] & @CRLF & @CRLF
ElseIf $lectetetat[0] = 1 Then
$listerapportcd = $listerapportcd & $trilecteur[$boucletri] & @CRLF & @CRLF
Else
$listerapportcd = $listerapportcd & "Erreur" & @CRLF & @CRLF
EndIf
WEnd
MsgBox (0, "rapport lecteur cd", $listerapportcd )
Else
MsgBox (16, "Erreur", "Aucune donnée reçu" )
EndIf
EndIf
WEnd
Exit
Func fermergui()
GUIDelete ($nouveau)
EndFunc
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.riseoflords.com/?seigneur=dragonsayan
TerminAdminAtor
Admin
Admin


Nombre de messages : 234
Date d'inscription : 22/10/2006

MessageSujet: Re: Probleme envoi écran[RESOLU]   2007-02-07, 04:20

Salut,

Quand le code est aussi long il est préférable de le monter sur un serveur de téléchargement gratuit.

De plus avant de tout balancer essayes d'expliquer un peu ce qu'il fait et comment il fonctionne,je te demande pas tous les détails juste une petite synthèse ne ferait pas de mal.

merci
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://autoit-fr.realbb.net
Dragonsayen
Débutant
Débutant


Nombre de messages : 18
Age : 26
Localisation : Auray (Morbihan)
Date d'inscription : 10/12/2006

MessageSujet: Re: Probleme envoi écran[RESOLU]   2007-02-07, 15:36

oui, désolé pour le long code mais comme tout le monde publie son code de cette maniere ...

sinon, le principe est simple, on met le programme serveur en route, et celui attends des donnees qui seront envoyés par le programme client (ces donnees sont des chaines de caractères (comme "nom fenetre" par exemple)
selon la chaine, le serveur executes différentes actions (tres simples pour le moment)
les actions possibles sont (elles se font à partir de l'ordinateur possédant le programme client) : ouverture, fermeture, propriété des lecteurs cd; controle du curseur; affichage du nom de la fenetre active; aperçu de différentes données (taille écran, processus en cours ...); aperçu de l'écran [c'est là le probleme pour l'instant])

sinon, les 2 programmes sont assez courts et simples (avec de longues variables) pour etre compris sans commentaires particuliers dans le script
(copié le script dans SciTe par exemple, ou tout autre éditeur compatible avec les scripts autoit et vous verrez que c'est suffisamment clair)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.riseoflords.com/?seigneur=dragonsayan
toonsgy53
Débutant
Débutant


Nombre de messages : 18
Age : 30
Date d'inscription : 07/02/2007

MessageSujet: Re: Probleme envoi écran[RESOLU]   2007-02-08, 12:49

Salutà toi [b]Dragonsayen [/b],

J'ai pas compris totalement le script, néanmoin j'ai compris le probleme et j'ai peu etre une solution.

Je connai un petit programme qui ce nomme "cap.exe" qui s'utilise en ligne de commande pour capture un ecrans et genere un fichier image (bmp ou jpeg il me semble c'est au choix).

voici l'url pour s'en servir "http://www.capturemation.com/manual.html"

j'ai pas de script à te proposer, mais tu peut exeuter une commande "Run(cap.exe ....) de capture et envoyer l'image sur le serveur qui l'affiche.

c'est l'idee de base à surment retravailler, je ne suis que debutant, j'espere que c'est realisable et je souhaite que sa puisse t'aider.

cordialement Toonsgy
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
ani
Modérateur
Modérateur


Nombre de messages : 563
Date d'inscription : 23/01/2007

MessageSujet: Re: Probleme envoi écran[RESOLU]   2007-02-08, 13:20

Etant méga novice débutant depuis à peine deux semaines dans le merveilleux monde du code, si c'est juste pour récupérer l'écran sans pour cela interargir avec celui-ci (cliquer sur les boutons) une simple intruction sur la touche imprimer ecran(print screen) et voilà , pas besoin d'un second soft ou bien utiliser une des api de capture d'écran (y en a deux).

Dans le cas ou c'est pour interagir, là je peux rien dire
vu que je débute.

deux semaines de bouquinage à la barbare...vais prendre note du script pour bien comprendre les divers syntaxe que tu propose car là je bloque un peu (pas encore tout saisie a ce niveau (dim/les divers boucles) sinon la je me demandais vu que je débute le script autoit c'est comme un fichier bat, il li a la suite les intrcutions donnée ?

oui je vois plein de truc et pas évident
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
toonsgy53
Débutant
Débutant


Nombre de messages : 18
Age : 30
Date d'inscription : 07/02/2007

MessageSujet: Re: Probleme envoi écran[RESOLU]   2007-02-08, 14:05

Tu à raison ANI ,

je pensser pas à l'interaction entre les deux pc. Je croyé que l'on voulez juste avoir un apercu de l'ecrans (mais à y refléchire quelle interer sans interaction).

dans se cas pourquoi ne pas l'ancer un "vnc" en cas de besoin le manipulation graphique de vnc sont base comme un "terminale serveur" seul les pixel qui change sont envoyer sur le reseau hors , le script scan l'ensemble des pixels à chaque fois selon un timing donc plus l'ecrans et long plus le traffic et grand sans parler de la puissance requise pour ce scan des pixel...

je ne connais pas autoit pour dire que c'est impossible et je ne conner pas le code source de vnc. Mais le system utiliser doit etre plus complexe qu'un simple script.

Donc mon avis est que lancer des commandes à distance ou recuperer des infos c'est possible mais recuperer l'ecrans comme vnc c'est plus complexe.

De plus le script et base sur du TCP se qui implique un mode connecter hors de l'envoi massif d'info graphique , c'est le principe du streaming donc de l'UDP mode non connecter , se serai plus rapide car pas de reponce moin de traffic. (MODE UDP pour les application graphique sinon le tcp me parer bien adapter pour les commandes)

Je suis à l'ecoute de reponce merci
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
ani
Modérateur
Modérateur


Nombre de messages : 563
Date d'inscription : 23/01/2007

MessageSujet: Re: Probleme envoi écran[RESOLU]   2007-02-08, 14:18

tu t'y connais bien toonsgy53 , moi qui débute j'ai un peu de mal à suivre ^__^


en fouillant un peu le systeme win j'en découvre dans le helpctr (le bureau distant) si vous vous y connaisser regarder dans le dossiers pchealth\helpctr\System\Remote Assistance

ca peut servir je vois qui a meme une sorte de chat \o/ decouverte sur découverte.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
toonsgy53
Débutant
Débutant


Nombre de messages : 18
Age : 30
Date d'inscription : 07/02/2007

MessageSujet: Re: Probleme envoi écran[RESOLU]   2007-02-08, 14:52

Je suis informatitien mais je debut comme toi sur autoit.

je t'explique en gros le tcp et l'udp pour l'envoi de deux informations.


le principe de tcp c'est la connection , un transfert securiser (dans le sens où il y à un controle d'erreur) mais se qui engendre un nombre de question reponce important par rapport à une information.
ex connection tcp

1:connection
2:dialogue entre machine pour selection des donnees à envoyer
3:envoi des donnees
4:controle des donnees recu
5:envoie de "l'accuse ok" si aucune erreur ou demende de renvoi de donnees si erreur detecter on revient à l'étape "2".
6: fin de connection

fin

(et la j'ai simplifier)


le mode UDP c'est lenvoie d'info sans controler si les info sont bien acheminer une demande une reponce , point à la ligne

1:demende de donnees
2:envoi de donnee

fin



commen tu voi
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
ani
Modérateur
Modérateur


Nombre de messages : 563
Date d'inscription : 23/01/2007

MessageSujet: Re: Probleme envoi écran[RESOLU]   2007-02-08, 15:00

héhé comme çà je comprend , merci

moi je débute dans tout, aucune connaissance dans les matieres informatique
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
toonsgy53
Débutant
Débutant


Nombre de messages : 18
Age : 30
Date d'inscription : 07/02/2007

MessageSujet: Re: Probleme envoi écran[RESOLU]   2007-02-08, 15:11

Maitenant sur du concret.

imagine une donnee egale un pixel. Sur un ecran de resolution 1024X768 (standart)
ca fait 786432 pixel
tu multipli ca par 12 pour avoir pour le tcp et par 2 pour l'udp

tcp 9437184 packets

udp 1572864 packets

comme je t'est dit c'est simplifier mes aproximativement ta dix fois plus de trafique avec du tcp que de l'udp
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Dragonsayen
Débutant
Débutant


Nombre de messages : 18
Age : 26
Localisation : Auray (Morbihan)
Date d'inscription : 10/12/2006

MessageSujet: Re: Probleme envoi écran[RESOLU]   2007-02-08, 15:13

merci pour les réponses, alors le probleme n'est pas dans le type de connexion car il est toujours possible d'envoyer d'un bloc pour l'écran, ça ne ralentit pas trop normalement : car c'est vrai que c'est surtout de recueillir pixel par pixel l'écran qui est long ! (mais j'essayerais quand meme en UDP pour voir)
sinon je me posais une autre question, quand on appuie sur printscreen (touche impression écran), on ne peut pas utiliser les données avec autoit, mais l'écran doit pourtant etre quelque part, dans un fichier temporaire, ou sinon il est peut etre possible d'y accéder (avec les .dll de windows ??!)
si quelqu'un connait ça ^^ ça m'aiderait beaucoup
sinon, pour prendre juste les pixel qui change avec un script autoit ça ne marcherait pas je pense : vu le temps que ça met deja en ne prenant qu'un pixel sur 4 ^^ si l'autre réduit ou maximise une fenetre ça va etre long ^^

merci beaucoup pour les réponses ^^
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.riseoflords.com/?seigneur=dragonsayan
Dragonsayen
Débutant
Débutant


Nombre de messages : 18
Age : 26
Localisation : Auray (Morbihan)
Date d'inscription : 10/12/2006

MessageSujet: Re: Probleme envoi écran[RESOLU]   2007-02-08, 15:18

ça vérifie le transfert bit par bit ??? mais c'est super long alors ! si a chaque bit envoi y'a des verifs ça va pas le faire ...
merci pour l'info
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.riseoflords.com/?seigneur=dragonsayan
toonsgy53
Débutant
Débutant


Nombre de messages : 18
Age : 30
Date d'inscription : 07/02/2007

MessageSujet: Re: Probleme envoi écran[RESOLU]   2007-02-08, 15:26

je me rend compte d'une chose [b]Dragonsayen [/b]ton script envoi pixel par pixel les info sur le reseau je suis pas etonner que ca ne fonction pas .

pour generer ~9500000 de packet non seulement tu va plomber ton réseau mais tu va mettre X temps plusieur minutes voir des quart d'heure.

tu à l'aire plus pointu que moi en script donc j'ai une idee à te transmetre plutot que de transmetre donnee par donnee

il faut juste creer un fichier provisoire sur le pc où se fait le scan des pixel
. Dans ce fichier tu envoi tes resulta pixel par pixel c parer par un truc bien specifique "#" ; "/" je sais pas à toi de voir le mieu

une fois le scan complet tu balance le fichier sa te prendra plus que quelque seconde car le programme enverra un grand nombre d'info en meme temps et non plus une par une

demande si ta des question
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Dragonsayen
Débutant
Débutant


Nombre de messages : 18
Age : 26
Localisation : Auray (Morbihan)
Date d'inscription : 10/12/2006

MessageSujet: Re: Probleme envoi écran[RESOLU]   2007-02-08, 15:30

oui oui c'est ce que j'avais fait (au départ je stockait ça dans une variable mais le script ralentissait) donc ça enverra un fichier de cette maniere, (c'est pour cela que je parlais d'un seul "bloc" dans mon autre message ^^)
mais pour tester je l'ai fait de cette maniere.
c'est surtout le scan pixel par pixel le probleme, si j'ai un moyen d'avoir l'écran rapidement, le transfert ne posera pas de probleme (surtout vu le débit des connexions réseau local)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.riseoflords.com/?seigneur=dragonsayan
Dragonsayen
Débutant
Débutant


Nombre de messages : 18
Age : 26
Localisation : Auray (Morbihan)
Date d'inscription : 10/12/2006

MessageSujet: Re: Probleme envoi écran[RESOLU]   2007-02-08, 15:32

voila le script en local pour ceux qui veulent essayer, je viens de le faire vite fait pour ceux qui n'ont pas de réseau (entree pour relancer et alt+f4 pour quitter) (c'est juste le script pour l'écran bien sur ^^)

#include
opt ( "TrayIconDebug", 1 )
HotKeySet ( "!{F4}", "fermergui" )
HotKeySet ( "{ENTER}", "new" )
$nouveau = GUICreate ( "", 256, 192 )
GUICtrlCreateGraphic ( 0, 0, 256, 192 )
$listepixel = ""
$bouclex = 0
$boucley = 4
$bouclex2 = 1
$boucley2 = 1
While $boucley < 768
$bouclex += 4
if $bouclex > 1024 Then
$bouclex = 1
$boucley += 4
EndIf
$couleur = PixelGetColor ( $bouclex, $boucley )
GUICtrlSetGraphic ( -1, $GUI_GR_COLOR, $couleur )
GUICtrlSetGraphic ( -1, $GUI_GR_PIXEL, $bouclex2, $boucley2 )
$bouclex2 += 1
if $bouclex2 > 256 Then
$bouclex2 = 1
$boucley2 += 1
EndIf
WEnd
GUISetState ()
While 1
Sleep (1000)
WEnd
Func fermergui()
GUIDelete ($nouveau)
Exit
EndFunc
Func new()
GUIDelete ($nouveau)
$nouveau = GUICreate ( "", 256, 192 )
GUICtrlCreateGraphic ( 0, 0, 256, 192 )
$listepixel = ""
$bouclex = 0
$boucley = 4
$bouclex2 = 1
$boucley2 = 1
While $boucley < 768
$bouclex += 4
if $bouclex > 1024 Then
$bouclex = 1
$boucley += 4
EndIf
$couleur = PixelGetColor ( $bouclex, $boucley )
GUICtrlSetGraphic ( -1, $GUI_GR_COLOR, $couleur )
GUICtrlSetGraphic ( -1, $GUI_GR_PIXEL, $bouclex2, $boucley2 )
$bouclex2 += 1
if $bouclex2 > 256 Then
$bouclex2 = 1
$boucley2 += 1
EndIf
WEnd
GUISetState ()
EndFunc


Dernière édition par le 2007-02-08, 16:14, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.riseoflords.com/?seigneur=dragonsayan
ani
Modérateur
Modérateur


Nombre de messages : 563
Date d'inscription : 23/01/2007

MessageSujet: Re: Probleme envoi écran[RESOLU]   2007-02-08, 16:12

excellent vais pouvoir tester ^__^

sinon pour le print screen, d'après les lectures , on appuie sur la touche (l'image se trouvera dans le click droit) un simple ctrl+v dans mspaint et voilà

Public Const VK_PRINT = &H2A

une dll gdi32 (bitblt)
ou dans le composant framework2 copytoscreen.


au niveau du flux stream (les stream de l'api se dit seekables)se qui signifie que l'image se met en cache et qu' il est mieux de l'utiliser cette methode ca permet de parcourir les données dans un sens comme dans l'autre.


merci , continu sa recherche
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
ani
Modérateur
Modérateur


Nombre de messages : 563
Date d'inscription : 23/01/2007

MessageSujet: Re: Probleme envoi écran[RESOLU]   2007-02-08, 16:37

le site en anglais:
[url=http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_0fzo.asp]http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_0fzo.asp[/url]


Bitblt
[url=http://support.microsoft.com/kb/147810/fr]http://support.microsoft.com/kb/147810/fr[/url]

capturescreen
http://msdn2.microsoft.com/fr-fr/library/fw1kt6f9(vs.80).aspx


récupere juste l'image qui se trouve dans le click droit


Dernière édition par le 2007-02-08, 16:41, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Dragonsayen
Débutant
Débutant


Nombre de messages : 18
Age : 26
Localisation : Auray (Morbihan)
Date d'inscription : 10/12/2006

MessageSujet: Re: Probleme envoi écran[RESOLU]   2007-02-08, 16:41

merci pour tout ça ^^ je vais aller voir
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.riseoflords.com/?seigneur=dragonsayan
toonsgy53
Débutant
Débutant


Nombre de messages : 18
Age : 30
Date d'inscription : 07/02/2007

MessageSujet: Re: Probleme envoi écran[RESOLU]   2007-02-08, 17:30

J'ai un proble avec ton script
il fonction bien que si on pessede une seule adresse ip...

Je m'explique quand je suis au travail je laisse souvent mon pc tourner chez moi. Pour garder un oeil dessu j'utilise "Hamachi" c'est un logiciel qui creer un reseau virtuel (VPN) en P2P entre plusieurs. Pour que windows puisse travailler en VPN il creer une carte reseau virtuel mais windows ne voit pas la diference.

alors quand tu dit "Dim $szIPADDRESS = @IPAddress1"
c'est bon si tu à une seul carte.

Est ce que tu serai modifier le script pour lister l'ensemble des cartes et selection la bonne ip à prendre sur le serveur comme le client.

merci d'avance
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
ani
Modérateur
Modérateur


Nombre de messages : 563
Date d'inscription : 23/01/2007

MessageSujet: Re: Probleme envoi écran[RESOLU]   2007-02-08, 17:39

dans la derniere version d'autoit ta la liste des virtual keyboard a cette url send key list et dedans on retrouve celui-ci




{PRINTSCREEN}
PRINTSCR
moi je ferai comme çà du coté client avec la fonction printscreen 'limage se trouve dans le click droit (clipboard) et tu la récupere tu fait un petit emplacement pour l'image recuperer sur l'interface server et voilà j'ai telement d'idée meme au niveau des evenements :p

vive le novice qui sommeil en moi
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
toonsgy53
Débutant
Débutant


Nombre de messages : 18
Age : 30
Date d'inscription : 07/02/2007

MessageSujet: Re: Probleme envoi écran[RESOLU]   2007-02-08, 17:47

g bien pensse à {PRINTSCREEN}
mais un probleme se pose
comment travailler avec le presse papier en ligne de commande??

Le but de ton script c bien de prendre le controle à distance d'un poste??

J'ai regler mon probleme avec ca

Dim $szIPADDRESS = InputBox("?? IP ??","Effacer les maussaise Adresse IP ?" & @CRLF & "Tapez la bonne si aucune ne correspond", @IPAddress1 & " : " & @IPAddress2 & " : " & @IPAddress3 & " : " & @IPAddress4)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
ani
Modérateur
Modérateur


Nombre de messages : 563
Date d'inscription : 23/01/2007

MessageSujet: Re: Probleme envoi écran[RESOLU]   2007-02-08, 18:12

y a erreur sur la personne c'est le script de dragon

et c'est + un probleme d'envoi d'ecran ( pixel par pixel de l'image qui se trouve sur le client) d'apr!s ce que j'en ai compris, si c'est pour un vpn faut creuser autrepart (comme cité plus haut y a un exemple de controle dans le dossier pchealth je m'y connais pas asser pour dire quel dll est a utilisé)

ce qui concerne le presse papier bein avec une des fonction du clipboard le clipput, si y a l'instruction sur le client celui ci l'envoi sur le server tout en faisant un delete de l'envoi sur le client meme si l'image se cree pas, elle se trouve quand meme dans le presse papier du client (donc avec un arraydelete ou quelque chose dans le style)

bein voilà

au niveau de l'ip je peux pas trop d'aider suis trop novice moi (deux semaine apeine)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
toonsgy53
Débutant
Débutant


Nombre de messages : 18
Age : 30
Date d'inscription : 07/02/2007

MessageSujet: Re: Probleme envoi écran[RESOLU]   2007-02-08, 18:28

Effectivement ANI je parler de DRAGON c'est ma faute SCUSE:)

Pour Dragon Tu parler deja du clipbord dans un message ta raison le clipbord creer un fichier provisoir pour stoket se qu'il vient de copier. (selement un seul objet)

le probleme est que se fichier se situe dans la RAM donc galère. y a un programme (open source donc gratuit ) se nommant "ditto" qui peut exporter à un interval predefini des capture en tout cat c'est se que je compris (a voir !!!)

g pas tester le programme donc c de la théorie sa à laire bien complexe à mettre en place.

Pour info quand on fait une capture d'ecrans c'est un fichier de type CF_DIF dans le clipbord il me semble sa peut etre important
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
toonsgy53
Débutant
Débutant


Nombre de messages : 18
Age : 30
Date d'inscription : 07/02/2007

MessageSujet: Re: Probleme envoi écran[RESOLU]   2007-02-08, 18:39

le meilleur moyen pour moi c d'utiliser un ou deux petit programme anexe sans install juste à metre dans c:\windows\system32 pour pouvoir non seulement prendre le controle en lgne de commande mais aussi avoir la vision du resultat

cat.exe >> generateur image de capture
nc.exe >> prise de controle d'un processus
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Probleme envoi écran[RESOLU]   Aujourd'hui à 10:40

Revenir en haut Aller en bas
 
Probleme envoi écran[RESOLU]
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 2Aller à la page : 1, 2  Suivant
 Sujets similaires
-
» (Resolu] Écran bleu sous Windows Seven 64 bits
» Problème d'envoi de MP
» Oter le texte "boîte de réception... boîte d'envoi..." etc sur en forum en PHPBB3
» [Résolu] Problème d'envoi avec Windows Live Mail
» Faire une capture d'écran (screenshot)

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
AutoIt Français :: AutoIt v3 :: Entraide-
Sauter vers: