Bonjour et bonne année
J'ai pour projet de créer un script permettant de recevoir des trames TCP, donc pour cela j'ai fait un client en autoit et qui doit être lancé en service.
Le problème c'est que j'ai une erreur (on ne la voit pas mais on l'entend) lorsque que je démarre le service...
Je pense avoir identifié la cause du problème, c'est _Service_init($s_ServiceName).
Voici le code qui permet de créer le service, j'ai utilisé la méthode suivante:
http://www.autoitscript.com/forum/index ... opic=80201
► Afficher le texte
Code : Tout sélectionner
#include "Services.au3"
Global $s_ServiceName = "VSUpdater_Client"
Global $s_ServiceDisplayName = "VSUpdater Client"
Global $s_ServiceAppPath = @ProgramFilesDir & "\VSUpdater Client\VSUpdater_Client.exe"
_Service_Create($s_ServiceName, $s_ServiceDisplayName, BitOR($SERVICE_INTERACTIVE_PROCESS,$SERVICE_WIN32_OWN_PROCESS), $SERVICE_AUTO_START,$SERVICE_ERROR_NORMAL, $s_ServiceAppPath)
Et voici le code du client:
► Afficher le texte
Code : Tout sélectionner
#include "Services.au3"
;Opt("TrayMenuMode", 1)
Global $ConnectedSocket, $MainSocket, $socket, $msg, $SendSocket, $Split[10], $file, $line[99], $i, $Fin, $IP
$socket = 65000
$s_ServiceName = "VSUpdater_Client"
If _Service_Exists($s_ServiceName) Then _Service_init($s_ServiceName)
MsgBox(0, "Service", "OK")
TCPStartUp()
TCP_Listen()
;~ Ecoute du port 65000
Func TCP_Listen()
$IP = @IPAddress1
$MainSocket = TCPListen($IP, $socket )
If $MainSocket = -1 Then
MsgBox(16, "Error Socket", "Error create socket " & $socket)
Exit
EndIf
EndFunc
;~ Attend l'appel du server
While 1
If $IP = @IPAddress1 Then
$ConnectedSocket = -1
$ConnectedSocket = TCPAccept($MainSocket)
If $ConnectedSocket >= 0 Then
while 1
;$ConnectedSocket = -1
$msg = TCPRecv($ConnectedSocket,1024)
If $msg <> "" Then $Split = StringSplit($msg, "|")
If $Split[1] = "GoUpdate" then
ChangeHostFile()
$SendSocket = TCPConnect($Split[2], 65000)
TCPSend($SendSocket,@IPAddress1 & "|In Progress")
RunWait(@ProgramFilesDir & "\McAfee\VirusScan Enterprise\mcupdate.exe /update /quiet", "", @SW_HIDE)
$SendSocket = -1
$SendSocket = TCPConnect($Split[2], 65000)
TCPSend($SendSocket, @IPAddress1 & "|Finish")
ExitLoop
EndIf
If @error then
;MsgBox(16, "Error listen", "Code error: "& @error)
ExitLoop
EndIf
wend
EndIf
Else
TCPShutdown()
TCP_Listen()
EndIf
Wend
;~ Change le fichier HOST
Func ChangeHostFile()
$file = FileOpen(@WindowsDir & "\system32\drivers\etc\hosts",0)
$i = 0
$Modif = 0
While 1
$line[$i] = FileReadLine($file)
If @error = -1 Then ExitLoop
If StringRegExp( $line[$i], 'VSUpdater') Then
$Modif = 1
$line[$i] = "VSUpdater " & $Split[2]
EndIf
$i = $i + 1
WEnd
$Fin = $i
FileClose($file)
$file = FileOpen(@WindowsDir & "\system32\drivers\etc\hosts",2)
$i = 0
For $i = 0 to $Fin
FileWriteLine($File, $line[$i])
Next
If $Modif = 0 Then
FileWriteLine($File, "VSUpdater " & $Split[2])
EndIf
FileClose($file)
EndFunc
Si vous avez des remarques sur le reste du script je suis à l'écoute, je ne suis pas développeur donc je dois faire pas mal d'erreurs, merci de votre aide.