Oh c'était juste pour faire une petite reference à une video connue
Version imprimable
Oh c'était juste pour faire une petite reference à une video connue
??? Pas connue de moi...Citation:
Envoyé par Gruik
8O 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.Citation:
Envoyé par d-Rek
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.hCode:
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:
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 :lol:
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" :mrgreen:
Euh.. :oops:
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 returnCode:char* curl(char* url){ .... return chunk; }
Idem pour un void* (bah j'aurai essayé)
Résolu :Code:char* curl(char* url){ ..return chunk.memory; }