Activité online et API Windows
-
- Messages : 121
- Inscription : mer. 21/janv./2004 22:18
Activité online et API Windows
Bonjour à tous,
Un ami m'a suggéré une idée de programme simple mais efficace : éteindre le PC (sous Windows) lorsque l'activité en DL est nulle.
Peut-être que cela existe déjà, mais je voudrais le faire sous PB quand même.
Mon problème : il n'y a pas de fonction interne à PB qui permette de surveiller l'activité globale de l'OS.
Cela doit pouvoir se trouver dans l'API windows, non ?
Connaissez-vous ces fonctions ?
Merci de votre aide.
Un ami m'a suggéré une idée de programme simple mais efficace : éteindre le PC (sous Windows) lorsque l'activité en DL est nulle.
Peut-être que cela existe déjà, mais je voudrais le faire sous PB quand même.
Mon problème : il n'y a pas de fonction interne à PB qui permette de surveiller l'activité globale de l'OS.
Cela doit pouvoir se trouver dans l'API windows, non ?
Connaissez-vous ces fonctions ?
Merci de votre aide.
10 CLS
20 PRINT "Vive PureBasic"
30 GOTO 20
20 PRINT "Vive PureBasic"
30 GOTO 20
Re: Activité online et API Windows
en meme temps , tu récupères un prg comme Free Download manager
http://www.freedownloadmanager.org/download.htm
il te propose d’éteindre le systeme a la fin des téléchargement
question "que ce passerai t'il si ton telechargement est interompu ? " = activité 0 , paf , Extinction ! m**de !
mieux vaut utiliser le prg ci dessus , il va gerer ta bande passantes, les telechargements , et l'option extinction , dans la foulé ! , meme reprendre les download interrompus ..
ps : ce prg peut le faire, car c'est lui qui telecharge ... donc il connait l'activité
en clair , si tu veux faire la meme chose, c'est possible , si c'est toi qui gere la procedure de telehargement ...
par contre savoir si un autre prg telecharge ou pas .. a mon avis , c'est chaud ( faut faire un sniffer )
http://www.freedownloadmanager.org/download.htm
il te propose d’éteindre le systeme a la fin des téléchargement

question "que ce passerai t'il si ton telechargement est interompu ? " = activité 0 , paf , Extinction ! m**de !

mieux vaut utiliser le prg ci dessus , il va gerer ta bande passantes, les telechargements , et l'option extinction , dans la foulé ! , meme reprendre les download interrompus ..

ps : ce prg peut le faire, car c'est lui qui telecharge ... donc il connait l'activité

en clair , si tu veux faire la meme chose, c'est possible , si c'est toi qui gere la procedure de telehargement ...
par contre savoir si un autre prg telecharge ou pas .. a mon avis , c'est chaud ( faut faire un sniffer )
-
- Messages : 121
- Inscription : mer. 21/janv./2004 22:18
Re: Activité online et API Windows
Oui mais justement je voudrais "monitorer" (désolé pour cet barbarisme) toute l'activité, quelque soit le programme qui télécharge : navigateur/client ftp/assistant de téléchargement etc...
Bref récupérer les paramètres réseau globaux du système (onglet réseau du gestionnaire de tache).
Pour le problème d'arrêt non voulu que tu évoques, j'avais prévu de mettre un timer (genre arrêt après seulement 2 minutes, et nouveau test avant) pour éviter ce genre de déconvenues.
Bref récupérer les paramètres réseau globaux du système (onglet réseau du gestionnaire de tache).
Pour le problème d'arrêt non voulu que tu évoques, j'avais prévu de mettre un timer (genre arrêt après seulement 2 minutes, et nouveau test avant) pour éviter ce genre de déconvenues.
10 CLS
20 PRINT "Vive PureBasic"
30 GOTO 20
20 PRINT "Vive PureBasic"
30 GOTO 20
Re: Activité online et API Windows
Dobro a écrit :par contre savoir si un autre prg telecharge ou pas .. a mon avis , c'est chaud ( faut faire un sniffer )

-
- Messages : 121
- Inscription : mer. 21/janv./2004 22:18
Re: Activité online et API Windows
Vi vi j'avais vu.
J'ai trouvé des snipsets (pour Unix) et je confirme, ça a l'air chaud.
Merci de ton aide en tout cas Dobro.

J'ai trouvé des snipsets (pour Unix) et je confirme, ça a l'air chaud.

Merci de ton aide en tout cas Dobro.
10 CLS
20 PRINT "Vive PureBasic"
30 GOTO 20
20 PRINT "Vive PureBasic"
30 GOTO 20
Re: Activité online et API Windows
apres avoir fait marcher mon chapeau a idée , emprunté a Geo Trouvetout

je me suis dit, que peut etre simplement en testant les Ports ...
si un téléchargement a lieu ; forcement ça doit ouvrir un port ...
test avec un code genre :
ou ça de SFSxOI :
article en anglais sur l'activit des ports :
http://www.drdobbs.com/windows/184416559
il semble que Flaith a eu besoin de ça , il a peut etre avancé depuis !! ?

je me suis dit, que peut etre simplement en testant les Ports ...
si un téléchargement a lieu ; forcement ça doit ouvrir un port ...
test avec un code genre :
Code : Tout sélectionner
; scan de port
InitNetwork()
OpenConsole()
PrintN("-----------: Ports actifs :------------")
For i = 0 To 65000
t$ = Inkey()
If t$ <> "":Goto ex:EndIf
ConsoleTitle(Str(i)+" / 65000")
If CreateNetworkServer(0,i,#PB_Network_TCP)
CloseNetworkServer(0)
Else
ConsoleColor(9,0)
PrintN("TCP : " + Str(i))
EndIf
If CreateNetworkServer(0,i,#PB_Network_UDP)
CloseNetworkServer(0)
Else
ConsoleColor(10,0)
PrintN("UDP : " + Str(i))
EndIf
Next i
ex:
ConsoleColor(12,0)
PrintN("Analyse interrompue")
Delay(2000)
CloseConsole()
End
; EPB
Code : Tout sélectionner
; Debug Rd_cmd("netstat -n") ; comment this line out first from the code previously posted above
; then add the below
If CreateFile(0, "IP_Port.txt")
WriteString(0, Rd_cmd("netstat -n"))
CloseFile(0)
EndIf
Delay(10)
RunProgram("IP_Port.txt")
article en anglais sur l'activit des ports :
http://www.drdobbs.com/windows/184416559
il semble que Flaith a eu besoin de ça , il a peut etre avancé depuis !! ?

-
- Messages : 121
- Inscription : mer. 21/janv./2004 22:18
Re: Activité online et API Windows
L'idée était bonne mais ça ne marche pas.
C'est l’exécution du programme (navigateur, clien p2p etc...) qui commande l'ouverture des ports, pas le fait de savoir s'il y a téléchargement actif ou pas.
Je vais creuser du côté du sniffer homebrew.
C'est l’exécution du programme (navigateur, clien p2p etc...) qui commande l'ouverture des ports, pas le fait de savoir s'il y a téléchargement actif ou pas.
Je vais creuser du côté du sniffer homebrew.
10 CLS
20 PRINT "Vive PureBasic"
30 GOTO 20
20 PRINT "Vive PureBasic"
30 GOTO 20
-
- Messages : 510
- Inscription : dim. 25/mars/2007 13:44
- Localisation : Toulouse, France
- Contact :
Re: Activité online et API Windows
Bon aller je laisse un bout de code de mon sniffeur. /!\ Pour qu'il fonctionne, il faut activer les droit d'administrateur dans les options du compilateur. Je vous laisse le soins d'analyser le code (il est commenté):
Le résultat:

Code : Tout sélectionner
; ******************************
; ********** Sniffeur **********
; ******** Par lepiaf31 ********
; ******************************
EnableExplicit
Structure IpHeader
IhlVersion.b
typeOfService.b
totalLength.w
ID.w
flagOffset.b
fragOffset.b
timeToLive.b
protocol.b
checksum.w
source.l
destination.l
EndStructure
Structure TcpHeader
portSource.w
portDestination.w
seqNum.l
ackNum.l
dataOffset.b
flags.b
window.w
checksum.w
urgentPointer.w
EndStructure
#WSA_VER = $202
#SIO_RCVALL=$98000001
#TcpProtocol = 6
#BufferSize = 4096
Procedure manageData(*buffer, size.i)
Protected ipHeader.IPHeader, tcpHeader.TcpHeader, sourcePort.i, destinationPort.i
If size > 40 ;on veut un paquet TCP/IP complet avec des données utiles
;récupération de l'en-tete IP
CopyMemory(*buffer, @ipHeader, SizeOf(IpHeader))
If ipHeader\protocol = #TcpProtocol ;Connexions TCP seulement
;récupération de l'en-tete TCP
CopyMemory(*buffer+SizeOf(IpHeader), @tcpHeader, SizeOf(TcpHeader))
;Ports
sourcePort = ntohs_(tcpHeader\portSource)
destinationPort = ntohs_(tcpHeader\portDestination)
PrintN("Connexion: "+IPString(ipHeader\source)+" -> "+IPString(ipHeader\destination))
PrintN("Port Source: "+Str(sourcePort))
PrintN("Port Destination: "+Str(destinationPort))
PrintN("")
EndIf
EndIf
EndProcedure
Procedure sniff(*function)
Protected ip.i, wsaData.WSADATA, sin.SOCKADDR_IN, promiscuous_mode.l, sock.i, *buffer, size.i
promiscuous_mode = 1
;récupération de l'IP
If InitNetwork()
ExamineIPAddresses()
ip = NextIPAddress()
Else
ProcedureReturn 0
EndIf
;Démarrage
If WSAStartup_(#WSA_VER, @wsaData)
WSACleanup_()
ProcedureReturn 0
EndIf
;Creation du socket
sock = SOCKET_(#AF_INET, #SOCK_RAW, #IPPROTO_IP)
If sock = #INVALID_SOCKET
WSACleanup_()
ProcedureReturn 0
EndIf
sin\sin_family = #AF_INET
sin\sin_addr = ip
;mode sniffing
If bind_(sock, @sin, SizeOf(SOCKADDR_IN))
WSACleanup_()
ProcedureReturn 0
EndIf
If ioctlsocket_(sock, #SIO_RCVALL, @promiscuous_mode)
WSACleanup_()
ProcedureReturn 0
EndIf
*buffer = AllocateMemory(#BufferSize) ;allocation de la memoire de reception
Repeat
size = recv_(sock, *buffer, #BufferSize, 0)
CallFunctionFast(*function, *buffer, size) ;traitement des données
ForEver
FreeMemory(*buffer)
ProcedureReturn 1
EndProcedure
OpenConsole()
sniff(@manageData())
End

- falsam
- Messages : 7317
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Activité online et API Windows
Adopté. Merci pour ce partage 

Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
-
- Messages : 121
- Inscription : mer. 21/janv./2004 22:18
Re: Activité online et API Windows
Un grand merci et un encore plus grand bravo !
10 CLS
20 PRINT "Vive PureBasic"
30 GOTO 20
20 PRINT "Vive PureBasic"
30 GOTO 20
Re: Activité online et API Windows
Merci lepiaf31, cela peut être utile.
@++
@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Re: Activité online et API Windows
Yep, cool ! Merci 

- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: Activité online et API Windows
Merci pour le partage 
