Oh c'était juste pour faire une petite reference à une video connue
Oh c'était juste pour faire une petite reference à une video connue
??? Pas connue de moi...Envoyé par Gruik
Un problème bien exposé
est, pour moitié, solutionné. / La connaissance s'accroît quand on la partage, pas quand on l'impose. / La violence est le langage des faibles.
c'est bien balèze tout ça..
J'essayais justement, que mon exe lance une page php qui s'auto-close mais qui créée un .txt à la racine du C par exemple.. pour que mon exe récupère la valeure ensuite.. et l'affiche.
Mais je galère.. je vais y arriver
enfin je pense..
Et bien, si tu as un soucis, tu postes ton code.Envoyé par d-Rek
Un problème bien exposé
est, pour moitié, solutionné. / La connaissance s'accroît quand on la partage, pas quand on l'impose. / La violence est le langage des faibles.
Merci David.Schris
J'ai approfondi ta méthode avec LibCurl et ça marche à merveille !
Pour le fichier PHP, je ne poste pas je pense que tout le monde devrait s'en sortir..
Je poste donc la source C :
La fonction > fonction.h
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <curl/curl.h> #include <curl/types.h> #include <curl/easy.h> #include "fonction.h" using namespace std; int main() { char* url; char w; system("cls"); printf("\n//////////////////////////////////////////\n"); printf("/ STATS /\n"); printf("//////////////////////////////////////////\n\n"); printf("Nombre de membres :\t"); curl("http://www.mon_site.fr/curl.php?choix=1"); printf("\nNombre de domaines :\t"); curl("http://www.mon_site.fr/curl.php?choix=2"); printf("\n\n\nRefresh ?\n"); system("pause"); main(); }
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80 struct MemoryStruct { char *memory; size_t size; }; void *myrealloc(void *ptr, size_t size) { /* There might be a realloc() out there that doesn't like reallocing NULL pointers, so we take care of it here */ if(ptr) return realloc(ptr, size); else return malloc(size); } size_t WriteMemoryCallback(void *ptr, size_t size, size_t nmemb, void *data) { size_t realsize = size * nmemb; struct MemoryStruct *mem = (struct MemoryStruct *)data; mem->memory = (char *)myrealloc(mem->memory, mem->size + realsize + 1); if (mem->memory) { memcpy(&(mem->memory[mem->size]), ptr, realsize); mem->size += realsize; mem->memory[mem->size] = 0; } return realsize; } void curl(char* url) { CURL *curl_handle; struct MemoryStruct chunk; chunk.memory=NULL; /* we expect realloc(NULL, size) to work */ chunk.size = 0; /* no data at this point */ curl_global_init(CURL_GLOBAL_ALL); /* init the curl session */ curl_handle = curl_easy_init(); /* specify URL to get */ curl_easy_setopt(curl_handle, CURLOPT_URL, url); /* send all data to this function */ curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, WriteMemoryCallback); /* we pass our 'chunk' struct to the callback function */ curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, (void *)&chunk); /* some servers don't like requests that are made without a user-agent field, so we provide one */ curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, "libcurl-agent/1.0"); /* get it! */ curl_easy_perform(curl_handle); /* cleanup curl stuff */ curl_easy_cleanup(curl_handle); /* * Now, our chunk.memory points to a memory block that is chunk.size * bytes big and contains the remote file. * * Do something nice with it! * * You should be aware of the fact that at this point we might have an * allocated data block, and nothing has yet deallocated that data. So when * you're done with it, you should free() it as a nice application. */ printf("%s", chunk); if(chunk.memory) free(chunk.memory); //return 0; }
Par contre, faut installer les packages zlib et curl suivant votre machine à écrire
Sous Dev-C++, il faut ajouter -lcurldll dans Outils > Options du compilateur > Ajouter cette commande lors de l'appel de l'éditeur de liens (et cocher cette case)
Il se peut que si vous lancez votre exe final, des dll soient manquantes..
Une tite recherche dans votre dossier d'install de Dev-Cpp et hop, copier-coller dans le même dossier voir dans system32.
J'espère pouvoir en aider quelques uns !
J'en ai fait un outil de stats pour rafraichir des données sans lancer un navigo, me logger et rafraichir ma page.. C'est cool
Merci d'avoir posté ton code
Cela pourra effectivement en aider quelques-uns...après quelques retouches pour rendre le tout plus "propre"
Un problème bien exposé
est, pour moitié, solutionné. / La connaissance s'accroît quand on la partage, pas quand on l'impose. / La violence est le langage des faibles.
Euh..
J'arrive pas à transformer ma procédure curl() (fonction.h) en fonction qui me retourne la chaine chunk au lieu de faire un printf..
J'ai essayé mais ça passe pas..cannot convert `MemoryStruct' to `char*' in return
Code : Sélectionner tout - Visualiser dans une fenêtre à part char* curl(char* url){ .... return chunk; }
Idem pour un void* (bah j'aurai essayé)
Résolu :
Code : Sélectionner tout - Visualiser dans une fenêtre à part char* curl(char* url){ ..return chunk.memory; }
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager