Je vous propose un model d'interaction de deux programmes afin de préserver le temps réel dans l"exécution de ceux ci...
Guide utilisateur :
1) Lancez d'abord le serveur...il n'y a aucune notification qui vous prévienne que le serveur est lancé...
2) Lancez le client...et attendez au moins une minute dans le cas de mon exemple pour voir la notification...et encore une minute de plus pour pour la revoir.
Remarque : (ces fonctions sont toujours en étude..et je vous proposerai un truc complet...)
Serveur
#include <Date.au3>
#include <WinAPI.au3>
HotKeySet("{ESC}", "_Exit")
;========================================================================================================================
;declaration globale
;========================================================================================================================
Global Const $IP_Adress = @IPAddress1, $iPort = 80, $iMax = 2
Global $Recv, $MainSOCKET, $Socket, $tagStruct
Global Const $tStruct = "struct;long heure;long min;long sec;long eache;hwnd win;long start;long toend;long top;endstruct"
If Not TCPStartup() Then
_WinAPI_ShowError("Enabable to create ressource", True)
EndIf
$MainSOCKET = TCPListen($IP_Adress, $iPort, $iMax)
If $MainSOCKET = -1 Or $MainSOCKET = 0 Then
TCPShutdown()
_WinAPI_ShowError("Impossible de se connecter!")
EndIf
Do
$Socket = TCPAccept($MainSOCKET)
Sleep(20)
Until $Socket <> -1
;Creation de la structure pour gerer le client
;le serveur recevra les ordres à partir de cette structure.
$tagStruct = DllStructCreate($tStruct)
If @error Then
_WinAPI_ShowError("Impossible de créer la structure", True)
EndIf
$Recv = TCPRecv($Socket, 9999);Entree des donnes
AdlibRegister("__sDataBase", 250);Requete de demande d'ordre
While 1
Sleep(30)
WEnd
TCPCloseSocket($MainSOCKET)
TCPShutdown()
; #INTERNAL_USE_ONLY# ===========================================================================================================
; Name ..........: __sDataBase
; Description ...: Gere les données du client
; Syntax ........: __sDataBase()
; Parameters ....:
; Return values .: None
; Author ........: Numeric
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: Yes
; ===============================================================================================================================
Func __sDataBase()
$Recv = TCPRecv($Socket, 9999)
If StringInStr($Recv, "time") Then
Local $GetALL = StringSplit($Recv, "|")
DllStructSetData($tagStruct, "heure", $GetALL[2])
DllStructSetData($tagStruct, "min", $GetALL[3])
DllStructSetData($tagStruct, "sec", $GetALL[4])
DllStructSetData($tagStruct, "eache", $GetALL[5])
DllStructSetData($tagStruct, "win", $GetALL[6])
DllStructSetData($tagStruct, "start", $GetALL[7])
DllStructSetData($tagStruct, "toend", $GetALL[8])
DllStructSetData($tagStruct, "top", $GetALL[9])
EndIf
If __TimeCompare($tagStruct) Then
If IsNumber(DllStructGetData($tagStruct, "eache")) Then
Local $sNewDate = _DateAdd("n", DllStructGetData($tagStruct, "eache"), _NowCalc())
Local $GetTime = StringSplit($sNewDate, " ")[2]
Local $aPart = StringSplit($GetTime, ":")
DllStructSetData($tagStruct, "heure", $aPart[1])
DllStructSetData($tagStruct, "min", $aPart[2])
DllStructSetData($tagStruct, "sec", $aPart[3])
EndIf
__MoveWindow($tagStruct)
EndIf
EndFunc ;==>__sDataBase
; #INTERNAL_USE_ONLY# ===========================================================================================================
; Name ..........: __TimeCompare
; Description ...: Compare les donnees du temps
; Syntax ........: __TimeCompare($tagStruct)
; Parameters ....: $tagStruct - a structures definition.
; Return values .: True or false
; Author ........: Numeric
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func __TimeCompare($tagStruct)
If DllStructGetData($tagStruct, "heure") = @HOUR Then
If DllStructGetData($tagStruct, "min") = @MIN Then
If DllStructGetData($tagStruct, "sec") = @SEC Then
Return True
EndIf
EndIf
EndIf
Return False
EndFunc ;==>__TimeCompare
Func _Exit()
Exit
EndFunc ;==>_Exit
; #INTERNAL_USE_ONLY# ===========================================================================================================
; Name ..........: __MoveWindow
; Description ...: Déplace la fenetre...
; Syntax ........: __MoveWindow($DLL)
; Parameters ....: $DLL - an unknown value.
; Return values .: None
; Author ........: Numeric
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func __MoveWindow($DLL)
Local $toStart = DllStructGetData($tagStruct, "start")
Local $toEnd = DllStructGetData($tagStruct, "toend")
Local $WinHwnd = DllStructGetData($tagStruct, "win")
Local $Top = DllStructGetData($tagStruct, "top")
For $i = $toStart To $toEnd
Sleep(10)
WinMove($WinHwnd, "", $i, $Top)
Next
Sleep(300)
For $j = $toEnd To $toStart Step -1
Sleep(10)
WinMove($WinHwnd, "", $j, $Top)
Next
EndFunc ;==>__MoveWindow
#include <WinAPI.au3>
HotKeySet("{ESC}", "_Exit")
;========================================================================================================================
;declaration globale
;========================================================================================================================
Global Const $IP_Adress = @IPAddress1, $iPort = 80, $iMax = 2
Global $Recv, $MainSOCKET, $Socket, $tagStruct
Global Const $tStruct = "struct;long heure;long min;long sec;long eache;hwnd win;long start;long toend;long top;endstruct"
If Not TCPStartup() Then
_WinAPI_ShowError("Enabable to create ressource", True)
EndIf
$MainSOCKET = TCPListen($IP_Adress, $iPort, $iMax)
If $MainSOCKET = -1 Or $MainSOCKET = 0 Then
TCPShutdown()
_WinAPI_ShowError("Impossible de se connecter!")
EndIf
Do
$Socket = TCPAccept($MainSOCKET)
Sleep(20)
Until $Socket <> -1
;Creation de la structure pour gerer le client
;le serveur recevra les ordres à partir de cette structure.
$tagStruct = DllStructCreate($tStruct)
If @error Then
_WinAPI_ShowError("Impossible de créer la structure", True)
EndIf
$Recv = TCPRecv($Socket, 9999);Entree des donnes
AdlibRegister("__sDataBase", 250);Requete de demande d'ordre
While 1
Sleep(30)
WEnd
TCPCloseSocket($MainSOCKET)
TCPShutdown()
; #INTERNAL_USE_ONLY# ===========================================================================================================
; Name ..........: __sDataBase
; Description ...: Gere les données du client
; Syntax ........: __sDataBase()
; Parameters ....:
; Return values .: None
; Author ........: Numeric
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: Yes
; ===============================================================================================================================
Func __sDataBase()
$Recv = TCPRecv($Socket, 9999)
If StringInStr($Recv, "time") Then
Local $GetALL = StringSplit($Recv, "|")
DllStructSetData($tagStruct, "heure", $GetALL[2])
DllStructSetData($tagStruct, "min", $GetALL[3])
DllStructSetData($tagStruct, "sec", $GetALL[4])
DllStructSetData($tagStruct, "eache", $GetALL[5])
DllStructSetData($tagStruct, "win", $GetALL[6])
DllStructSetData($tagStruct, "start", $GetALL[7])
DllStructSetData($tagStruct, "toend", $GetALL[8])
DllStructSetData($tagStruct, "top", $GetALL[9])
EndIf
If __TimeCompare($tagStruct) Then
If IsNumber(DllStructGetData($tagStruct, "eache")) Then
Local $sNewDate = _DateAdd("n", DllStructGetData($tagStruct, "eache"), _NowCalc())
Local $GetTime = StringSplit($sNewDate, " ")[2]
Local $aPart = StringSplit($GetTime, ":")
DllStructSetData($tagStruct, "heure", $aPart[1])
DllStructSetData($tagStruct, "min", $aPart[2])
DllStructSetData($tagStruct, "sec", $aPart[3])
EndIf
__MoveWindow($tagStruct)
EndIf
EndFunc ;==>__sDataBase
; #INTERNAL_USE_ONLY# ===========================================================================================================
; Name ..........: __TimeCompare
; Description ...: Compare les donnees du temps
; Syntax ........: __TimeCompare($tagStruct)
; Parameters ....: $tagStruct - a structures definition.
; Return values .: True or false
; Author ........: Numeric
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func __TimeCompare($tagStruct)
If DllStructGetData($tagStruct, "heure") = @HOUR Then
If DllStructGetData($tagStruct, "min") = @MIN Then
If DllStructGetData($tagStruct, "sec") = @SEC Then
Return True
EndIf
EndIf
EndIf
Return False
EndFunc ;==>__TimeCompare
Func _Exit()
Exit
EndFunc ;==>_Exit
; #INTERNAL_USE_ONLY# ===========================================================================================================
; Name ..........: __MoveWindow
; Description ...: Déplace la fenetre...
; Syntax ........: __MoveWindow($DLL)
; Parameters ....: $DLL - an unknown value.
; Return values .: None
; Author ........: Numeric
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func __MoveWindow($DLL)
Local $toStart = DllStructGetData($tagStruct, "start")
Local $toEnd = DllStructGetData($tagStruct, "toend")
Local $WinHwnd = DllStructGetData($tagStruct, "win")
Local $Top = DllStructGetData($tagStruct, "top")
For $i = $toStart To $toEnd
Sleep(10)
WinMove($WinHwnd, "", $i, $Top)
Next
Sleep(300)
For $j = $toEnd To $toStart Step -1
Sleep(10)
WinMove($WinHwnd, "", $j, $Top)
Next
EndFunc ;==>__MoveWindow