Webgadget et retour
Re: Webgadget et retour
non j'ai pas, le serveur n'est pas à moi, je ne sais donc pas quel header il s'attend à avoir.
Pourquoi un truc si simple en théorie est si compliqué à mettre en place ...
Pourquoi un truc si simple en théorie est si compliqué à mettre en place ...
.:NY152:.
- JohnJohnsonSHERMAN
- Messages : 648
- Inscription : dim. 13/déc./2015 11:05
- Localisation : Allez, cherche...
- Contact :
Re: Webgadget et retour
Mmm as tu déjà réussi à mettre en oeuvre ce dont tu parles? Y compris par un moyen extérieur à PB (navigateur web, autre application...) ?
Si c'est le cas on pourrait tenter de voir quel est le header envoyé, et le reproduire avec PB...
Si c'est le cas on pourrait tenter de voir quel est le header envoyé, et le reproduire avec PB...
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.
CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
Votre expert national en bogage et segfaults.
CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
- Windows 10 x64 - PB 5.61 x64
- Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Re: Webgadget et retour
Je vais être le plus précis possible et donner toutes les infos ^^
Dans l'optique d'être utilisée sur une machine Windows et Linux (serveurs de stockage pseudo NAS), je veux développer une application envoyant des SMS en vue d'être prévenu dans certaines conditions. J'utilise pour ça le service de SMS que Free m'offre avec ma ligne mobile.
Free renvoi un header HTTP selon cette liste une fois l'url validée :
L'url est composée de la sorte :
Les mots du message envoyé doivent être séparés par des + pas des espaces ou des %20 sous peine de recevoir un message difficilement compréhensible.
Si cette url est utilisée sur un navigateur ou un WebGadget, le SMS est bien reçu mais point de récupération du header
Si cette url est utilisée avec GetHTTPHeader(), l'url est mal interprétée et une erreur 400 est reçue, pas de SMS envoyé ...
J'espère avoir été précis sur ce que je veux etc ^^
Dans l'optique d'être utilisée sur une machine Windows et Linux (serveurs de stockage pseudo NAS), je veux développer une application envoyant des SMS en vue d'être prévenu dans certaines conditions. J'utilise pour ça le service de SMS que Free m'offre avec ma ligne mobile.
Free renvoi un header HTTP selon cette liste une fois l'url validée :
Code : Tout sélectionner
200 : Le SMS a été envoyé sur votre mobile.
400 : Un des paramètres obligatoires est manquant.
402 : Trop de SMS ont été envoyés en trop peu de temps.
403 : Le service n'est pas activé sur l'espace abonné, ou login / clé incorrect.
500 : Erreur côté serveur. Veuillez réessayer ultérieurement.
Code : Tout sélectionner
https://smsapi.free-mobile.fr/sendmsg?user=IDENTIFIANT&pass=PASSWORD&msg=Hello+World+!
Si cette url est utilisée sur un navigateur ou un WebGadget, le SMS est bien reçu mais point de récupération du header
Si cette url est utilisée avec GetHTTPHeader(), l'url est mal interprétée et une erreur 400 est reçue, pas de SMS envoyé ...
J'espère avoir été précis sur ce que je veux etc ^^
.:NY152:.
- JohnJohnsonSHERMAN
- Messages : 648
- Inscription : dim. 13/déc./2015 11:05
- Localisation : Allez, cherche...
- Contact :
Re: Webgadget et retour
Mmm le probléme semble assez compliqué en effet
Je pense que ca vient du fait que pour récupérer le header, GetHTTPeader() doit envoyer une requête HEAD, là ou le serveur s'attend à une requête GET (ce qu'un navigateur enverrait normalement...). On devrait pouvoir se bricoler un truc pour envoyer la bonne requête
J'ai essayé d'envoyer manuellement les requêtes comme ceci :
Mais la connection au serveur avec OpenNetworkConnection() échoue. Que ce soit en HTTP ou en HTTPS ca échoue toujours. Aprés je ne sais pas comment on pourrait faire en HTTPS, ma connaissance du réseau s'arrête à l'HTTP...
Je pense que ca vient du fait que pour récupérer le header, GetHTTPeader() doit envoyer une requête HEAD, là ou le serveur s'attend à une requête GET (ce qu'un navigateur enverrait normalement...). On devrait pouvoir se bricoler un truc pour envoyer la bonne requête
J'ai essayé d'envoyer manuellement les requêtes comme ceci :
Code : Tout sélectionner
#Type$ = "GET"
#InputBufferSize = 1024
*in = AllocateMemory(#InputBufferSize)
If InitNetwork()
User$ = "user"
Passwd$ = "password"
Message$ = "Ceci est un joli message que l'on peut modifier !"
URL$ = "http://smsapi.free-mobile.fr/sendmsg?user="+User$+"&pass="+Passwd$+"&msg="+ReplaceString(Message$," ","+")
socket = OpenNetworkConnection("http://smsapi.free-mobile.fr/",80)
If socket
SendNetworkString(socket, "HTTP/1.1 "+#Type$+" "+URL$+#CRLF$+#CRLF$,#PB_UTF8);Le double CRLF marque la fin de la requête
Repeat
sEvent = NetworkClientEvent(socket)
Select sEvent
Case #PB_NetworkEvent_Data
recSize = ReceiveNetworkData(socket,*in,#InputBufferSize)
Debug PeekS(*in,recSize,#PB_UTF8)
Case #PB_NetworkEvent_Disconnect
Debug "Déconnecté du serveur"
End
Default
Delay(50)
EndSelect
ForEver
Else
Debug "Impossible de se connecter au serveur !"
EndIf
Else
Debug "Impossible d'initialiser le réseau !"
EndIf
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.
CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
Votre expert national en bogage et segfaults.
CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
- Windows 10 x64 - PB 5.61 x64
- Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Re: Webgadget et retour
@NY152
Dommage que tu n'ai pas lu mon message en essayant de comprendre ma démarche.
Voici comment je pratique avec wget (Windows et Linux/Unix)Suite au message d'erreur, nouvelle tentative avec l'option --no-check-certificate
Je reçois bien le SMS
Dans les requêtes, remplacer %USER% et %PASS% par tes identifiants.
Il est donc clair que GetHTTPHeader() ne fonctionnera pas, par contre libcurl devrait pouvoir faire l'affaire.
A creuser, car je n'ai pas fait de tests dans ce sens.
cage
Dommage que tu n'ai pas lu mon message en essayant de comprendre ma démarche.
Voici comment je pratique avec wget (Windows et Linux/Unix)
Code : Tout sélectionner
D:\>wget "https://smsapi.free-mobile.fr/sendmsg?user=%USER%&pass=%PASS%&msg=Hello+World+!"
--2017-04-23 14:33:42-- https://smsapi.free-mobile.fr/sendmsg?user=%USER%&pass=%PASS%&msg=Hello+World+!
Resolving smsapi.free-mobile.fr... 212.27.40.200
Connecting to smsapi.free-mobile.fr|212.27.40.200|:443... connected.
ERROR: cannot verify smsapi.free-mobile.fr's certificate, issued by `/C=US/O=GeoTrust Inc./CN=RapidSSL SHA256 CA - G3':
Unable to locally verify the issuer's authority.
ERROR: certificate common name `*.free.fr' doesn't match requested host name `smsapi.free-mobile.fr'.
To connect to smsapi.free-mobile.fr insecurely, use `--no-check-certificate'.
Unable to establish SSL connection.
D:\>
Code : Tout sélectionner
D:\>wget --no-check-certificate "https://smsapi.free-mobile.fr/sendmsg?user=%USER%&pass=%PASS%&msg=Hello+World+!"
--2017-04-23 14:27:52-- https://smsapi.free-mobile.fr/sendmsg?user=%USER%&pass=%PASS%&msg=Hello+World+!
Resolving smsapi.free-mobile.fr... 212.27.40.200
Connecting to smsapi.free-mobile.fr|212.27.40.200|:443... connected.
WARNING: cannot verify smsapi.free-mobile.fr's certificate, issued by `/C=US/O=GeoTrust Inc./CN=RapidSSL SHA256 CA - G3':
Unable to locally verify the issuer's authority.
WARNING: certificate common name `*.free.fr' doesn't match requested host name `smsapi.free-mobile.fr'.
HTTP request sent, awaiting response... 200 OK
Length: unspecified
Saving to: `sendmsg@user=%USER%&pass=%PASS%&msg=Hello+World+!'
[ <=> ] 0 --.-K/s in 0s
2017-04-23 14:27:53 (0.00 B/s) - `sendmsg@user=%USER%&pass=%PASS%&msg=Hello+World+!' saved [0]
D:\>
Dans les requêtes, remplacer %USER% et %PASS% par tes identifiants.
Il est donc clair que GetHTTPHeader() ne fonctionnera pas, par contre libcurl devrait pouvoir faire l'affaire.
A creuser, car je n'ai pas fait de tests dans ce sens.
cage
■ Win10 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.00 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Re: Webgadget et retour
Perso, j'ai regardé du côté de libcurl et c'est très fouilli, ça ne fonctionne pas en EnableExplicit et j'ai tout un tas d'erreur de linkage.
si il faut tout réadapter, je laisse tomber cette voie, j'ai d'autres parties plus importantes à traiter avant ça
si il faut tout réadapter, je laisse tomber cette voie, j'ai d'autres parties plus importantes à traiter avant ça
.:NY152:.
Re: Webgadget et retour
En https, tout est crypté, y compris l'entête et les passages de paramètres.NY152 a écrit :Les mots du message envoyé doivent être séparés par des + pas des espaces ou des %20 sous peine de recevoir un message difficilement compréhensible.Code : Tout sélectionner
https://...
Si cette url est utilisée sur un navigateur ou un WebGadget, le SMS est bien reçu mais point de récupération du header
Si cette url est utilisée avec GetHTTPHeader(), l'url est mal interprétée et une erreur 400 est reçue, pas de SMS envoyé
https://en.wikipedia.org/wiki/HTTPS#Network_layers
http://stackoverflow.com/questions/1876 ... -encrypted
Il est donc normal que les fonctions HTTP (pas s) ne PB ne puissent ni envoyer une url correcte ni décrypter le retour.
Le Webgadget quant à lui y arrive car il s'appuie sur IE et gère les certificats.
Au besoin utilise le webgadget dans une fenêtre masquée.
Re: Webgadget et retour
c'est ce que je fais en attendant du coup mais dans ce cas je ne peux pas savoir si le SMS est envoyé, ou tout autre erreur (indiqué par le header)
.:NY152:.
Re: Webgadget et retour
@NY152: Pour inclure la libcurl dans PB en évitant les erreurscage
Code : Tout sélectionner
DisableExplicit
XIncludeFile "libcurl.pbi"
EnableExplicit
■ Win10 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.00 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Re: Webgadget et retour
J'utilise ça depuis un moment, je ne me prends pas le choux avec le header, je n'ai jamais eu de soucis de réception.
Code : Tout sélectionner
Enumeration
#Win
#BT
#BTA
#Webg
#EDITOR
EndEnumeration
InitNetwork()
Procedure exit()
End
EndProcedure
OpenWindow(#win,#PB_Ignore,#PB_Ignore,300,160,"",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
SetWindowColor(#Win,$e3e3e3)
WebGadget(#WEBG,1,1,1,1,"")
ButtonGadget(#BT,1,1,298,25,"Envoyer à Cyrille")
EditorGadget(#EDITOR,1,28,298,100,#PB_Editor_WordWrap)
ButtonGadget(#BTA,1,130,298,25,"Envoyer à Amandine")
BindEvent(#PB_Event_CloseWindow, @Exit() )
Repeat
WaitWindowEvent()
If Event() = #PB_Event_Gadget
Select EventGadget()
Case #BT
MONMESSAGE.s = URLEncoder(GetGadgetText(#EDITOR))
SetGadgetText(#WEBG,"https://smsapi.free-mobile.fr/sendmsg?user=MONID&pass=MACLE&msg="+MONMESSAGE.s)
Case #BTA
MONMESSAGE.s = URLEncoder(GetGadgetText(#EDITOR))
SetGadgetText(#WEBG,"https://smsapi.free-mobile.fr/sendmsg?user=IDDEMABIBI&pass=SACLE&msg="+MONMESSAGE.s)
EndSelect
EndIf
ForEver
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: Webgadget et retour
Je ne doute pas du fonctionnement mais je voulais connaitre l'état à chaque envoi (le serveur pouvant être hors ligne à certains moment, si un envoi était tenté pendant cette période (ou tout autre erreur), je voudrais savoir le pourquoi du comment ^^
.:NY152:.
Re: Webgadget et retour
Test du serveur d'envoi des SMSLe code retourné:Si le code retourné contient "400 Bad Request", alors le serveur est vivant.
cage
Code : Tout sélectionner
url$ = "https://smsapi.free-mobile.fr/sendmsg"
If InitNetwork()
header$ = GetHTTPHeader(url$)
Debug header$
EndIf
Code : Tout sélectionner
HTTP/1.1 400 Bad Request
Server: nginx
Date: Tue, 25 Apr 2017 14:32:37 GMT
Connection: keep-alive
cage
■ Win10 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.00 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Re: Webgadget et retour
J'ai joué avec libcurl pour voir si on peut récupérer le code de retourJe n'ai pas obtenu de code de retour quel que soit le cas, mais si les crédentiels sont les bons, le SMS est bien envoyé et reçu.
Je ne connais cette lib que depuis peu (merci a un membre du forum (djes)) et donc pas toutes les possibilités.
J'ai testé avec IE et Fiddler, et je n'obtiens pas de code de retour comme avec une page Web normale. Du coup, je me demande s'il est possible de savoir si le SMS a bien été envoyé.
cage
Code : Tout sélectionner
;
;************************************************************************
;Titre : freemobilesms.pb
;Auteur : (c) 2017 CAGE
;Date : 2017/04/25
;Version PB : PureBasic 5.60 (Windows - x86)
;Version PB : PureBasic 5.60 (Windows - x64)
;Compiler Options
;Compiler Options : Create threadsafe executable
;Compiler Options : Enable moderm theme support (for Windows X and above)
;Compile/Run : Create temporary executable in the source directory
;
;Libairies: libcurl.pbi
;
;https://github.com/deseven/pbsamples/tree/master/crossplatform/libcurl
;************************************************************************
;
EnableExplicit ; toutes les variables doivent êtres déclarées
OnErrorGoto(?ErrorHandler)
Define user$ = "12345678" ; a remplacer par votre identifiant
Define pass$ = "azert1qsdfghjk" ; a remplacer par votre code de sécurité
Define msg$ = "Hello+World+!" ; a remplacer par votre message
Define url_sms$ = "https://smsapi.free-mobile.fr/sendmsg?user="+user$+"&pass="+pass$+"&msg="+msg$
DisableExplicit
XIncludeFile ".\pb-libcurl.pbi"
EnableExplicit
If InitNetwork()
Define curl = curl_easy_init()
Define header.s
header = str2curl("User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 Edge/15.15063")
header = str2curl("Pragma: no-cache")
header = str2curl("Host: smsapi.free-mobile.fr")
header = str2curl("Connection: keep-alive")
If curl
Debug "CURL"
Define *header, res, url.s, resData.s, resHTTP.s
url.s = str2curl(url_sms$)
curl_easy_setopt(curl,#CURLOPT_URL,@url)
curl_easy_setopt(curl,#CURLOPT_IPRESOLVE,#CURL_IPRESOLVE_V4)
curl_easy_setopt(curl,#CURLOPT_TIMEOUT,30)
*header = curl_slist_append(0,header)
curl_easy_setopt(curl,#CURLOPT_HTTPHEADER,*header)
curl_easy_setopt(curl,#CURLOPT_WRITEFUNCTION,@curlWriteData())
res = curl_easy_perform(curl)
resData = curlGetData()
curl_easy_getinfo(curl,#CURLINFO_RESPONSE_CODE,@resHTTP) ; a tester avec autre info
Debug "res="+res
Debug "HTTP code: " + resHTTP
Debug "HTTP data: " + #CRLF$ + resData
curl_easy_cleanup(curl)
EndIf ; ................. If curl
EndIf ; ................... If InitNetwork()
ErrorHandler:
End
Je ne connais cette lib que depuis peu (merci a un membre du forum (djes)) et donc pas toutes les possibilités.
J'ai testé avec IE et Fiddler, et je n'obtiens pas de code de retour comme avec une page Web normale. Du coup, je me demande s'il est possible de savoir si le SMS a bien été envoyé.
cage
■ Win10 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.00 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Re: Webgadget et retour
Désolé de ma réponse si tardive ^^
Perso, libcurl me génère des erreurs avec ton code-source
Perso, libcurl me génère des erreurs avec ton code-source
.:NY152:.
Re: Webgadget et retour
Bizarre, mais cela vient peut-être de la version de PB ou de l'OS
Ou alors d'une option de PB a cocher ou décocher.
J'utilise la version 5.60 de PB avec Windows 10 Creators x64 (voir ma signature)
Que j'utilise la version x86 ou x64 de PB, aucun problème.
Idem pour la compilation et les SMS sont bien envoyés/reçus via les exe générés.
Voici le fichier freemobilesms.pbp que j'utilise
Ou alors d'une option de PB a cocher ou décocher.
J'utilise la version 5.60 de PB avec Windows 10 Creators x64 (voir ma signature)
Que j'utilise la version x86 ou x64 de PB, aucun problème.
Idem pour la compilation et les SMS sont bien envoyés/reçus via les exe générés.
Voici le fichier freemobilesms.pbp que j'utilise
Code : Tout sélectionner
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://www.purebasic.com/namespace" version="1.0" creator="PureBasic 5.60 (Windows - x64)">
<section name="config">
<options closefiles="0" openmode="1" name="freemobilesms Project (x64)"/>
</section>
<section name="data">
<explorer view="..\..\Program Files\PureBasic\Examples\" pattern="0"/>
<log show="1"/>
<lastopen date="2017-04-25 16:21" user="admin" host="EBCAGE"/>
</section>
<section name="files">
<file name="freemobilesms.pb">
<config load="0" scan="1" panel="1" warn="1" lastopen="1" panelstate="+"/>
<fingerprint md5="3a61afd6049679846d48a96fb9eba785"/>
</file>
</section>
<section name="targets">
<target name="Default Target" enabled="1" default="1">
<inputfile value="freemobilesms.pb"/>
<outputfile value="x64\freemobilesms.exe"/>
<compiler version="PureBasic 5.60 (Windows - x64)"/>
<executable value="x64\freemobilesms.exe"/>
<options unicode="1" xpskin="1" debug="1"/>
<purifier enable="1"/>
<temporaryexe value="source"/>
<versioninfo enable="1">
<field0 value="17,04,0,29"/>
<field1 value="17,04,0,29"/>
<field2 value="CAGE"/>
<field3 value="freemobilesms"/>
<field4 value="17.04.29"/>
<field5 value="17.04.29"/>
<field6 value="freemobilesms - Send SMS"/>
<field7 value="freemobilesms.exe"/>
<field8 value="freemobilesms.exe"/>
<field9 value="© CAGE"/>
<field10 value="This software is the property of the author : CAGE"/>
<field11 value="0"/>
<field12 value="0"/>
</versioninfo>
</target>
<target name="Default Target (x64)" enabled="1" default="0">
<inputfile value="freemobilesms.pb"/>
<outputfile value="freemobilesms.exe"/>
<compiler version="PureBasic 5.60 (Windows - x64)"/>
<executable value="freemobilesms.exe"/>
<options unicode="1" xpskin="1" debug="1"/>
<purifier enable="1"/>
<temporaryexe value="source"/>
<versioninfo enable="1">
<field0 value="17,04,0,29"/>
<field1 value="17,04,0,29"/>
<field2 value="CAGE"/>
<field3 value="freemobilesms"/>
<field4 value="17.04.29"/>
<field5 value="17.04.29"/>
<field6 value="freemobilesms - Send SMS"/>
<field7 value="freemobilesms.exe"/>
<field8 value="freemobilesms.exe"/>
<field9 value="© CAGE"/>
<field10 value="This software is the property of the author : CAGE"/>
<field11 value="0"/>
<field12 value="0"/>
</versioninfo>
</target>
<target name="Default Target (x86)" enabled="1" default="0">
<inputfile value="freemobilesms.pb"/>
<outputfile value="x86\freemobilesms.exe"/>
<compiler version="PureBasic 5.60 (Windows - x86)"/>
<executable value="x86\freemobilesms.exe"/>
<options unicode="1" xpskin="1" debug="1"/>
<purifier enable="1"/>
<temporaryexe value="source"/>
<versioninfo enable="1">
<field0 value="17,04,0,29"/>
<field1 value="17,04,0,29"/>
<field2 value="CAGE"/>
<field3 value="freemobilesms"/>
<field4 value="17.04.29"/>
<field5 value="17.04.29"/>
<field6 value="freemobilesms - Send SMS"/>
<field7 value="freemobilesms.exe"/>
<field8 value="freemobilesms.exe"/>
<field9 value="© CAGE"/>
<field10 value="This software is the property of the author : CAGE"/>
<field11 value="0"/>
<field12 value="0"/>
</versioninfo>
</target>
</section>
</project>
■ Win10 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.00 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr