main{ ... /* le show running config*/ button_runnig_conf = gtk_button_new_with_mnemonic ("running-config"); gtk_box_pack_start (GTK_BOX (hbox_cdp1), button_runnig_conf, FALSE, FALSE, 0); gtk_widget_set_size_request (button_runnig_conf, 130, -1); g_signal_connect(G_OBJECT(button_runnig_conf), "clicked", G_CALLBACK(f_button(NULL,"show running-config",2)),NULL); /*le show start-up*/ button_startup_conf = gtk_button_new_with_mnemonic ("startup-config"); gtk_box_pack_start (GTK_BOX (hbox_cdp1), button_startup_conf, FALSE, FALSE, 0); gtk_widget_set_size_request (button_startup_conf, 130, -1); g_signal_connect(G_OBJECT(button_startup_conf), "clicked", G_CALLBACK(f_button(NULL,"show startup-config", 2)),NULL ); /*le show version*/ button_version = gtk_button_new_with_mnemonic ("version"); gtk_box_pack_start (GTK_BOX (hbox_cdp1), button_version, FALSE, FALSE, 0); gtk_widget_set_size_request (button_version, 130, -1); g_signal_connect(G_OBJECT(button_version), "clicked", G_CALLBACK(f_button(NULL,"show version", 1)),NULL ); hbox_cdp2 = gtk_hbox_new (TRUE, 0); gtk_box_pack_start (GTK_BOX (vbox2), hbox_cdp2, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (hbox_cdp2), 5); /*le show process*/ button_processes = gtk_button_new_with_mnemonic ("processes"); gtk_box_pack_start (GTK_BOX (hbox_cdp2), button_processes, FALSE, FALSE, 0); gtk_widget_set_size_request (button_processes, 130, -1); g_signal_connect(G_OBJECT(button_processes), "clicked", G_CALLBACK(f_button(NULL,"show processes", 1)),NULL); /*le show stacks*/ button_stacks = gtk_button_new_with_mnemonic ("stacks"); gtk_box_pack_start (GTK_BOX (hbox_cdp2), button_stacks, FALSE, FALSE, 0); gtk_widget_set_size_request (button_stacks, 130, -1); g_signal_connect(G_OBJECT(button_stacks), "clicked", G_CALLBACK(f_button(NULL,"show stacks", 1)),NULL ); .... } int f_button(GtkWidget* pBouton,char commande[70], int connexion_mode) { printf("%s\n",commande); /* char verif[70] = {0}; // declaration des variables char resultat_commande[20000] = {0}; FILE* fichier_terminal = NULL ; switch (connexion_mode) { case 1 : strcpy( verif , send_requette2(NULL , 1 ) ); if ( strcmp(verif , "Connected") == NULL ) // verification de la connections { strcpy(resultat_commande , send_requette2(commande , 2) ); send_requette2(NULL , 3); } else { test("Connection error"); return 0; } break; case 2 : strcpy( verif , send_requette2(NULL , 1 ) ); if ( strcmp(verif , "Connected") == NULL ) // verification de la connections { send_requette2("enable" , 2); // entre en mode privilegie send_requette2(password , 2); // entre le passwd strcpy(resultat_commande , send_requette2(commande , 2) ); // envoi de la commande (ici show running-config) send_requette2("disable" , 2); // sort du mode configuration globale send_requette2(NULL , 3); // ce deconnect du serveur } else { test("Connection error"); return 0; } break; case 3 : strcpy( verif , send_requette2(NULL , 1 ) ); if ( strcmp(verif , "Connected") == NULL ) // verification de la connections { send_requette2("enable" , 2); // entre en mode privilegie //<-- mode privilégié send_requette2(password , 2); // entre le passwd send_requette2("configure terminal" , 2); // entre en mode de conf. global strcpy(resultat_commande , send_requette2(commande , 2) ); // envoi de la commande (ici show running-config) send_requette2("exit" , 2); // sort du mode configuration globale send_requette2("disable" , 2); // sort du mode configuration globale send_requette2(NULL , 3); // ce deconnect du serveur } else { test("Connection error"); return 0; } break; default : test("Connection error"); return 0; break ; } fichier_terminal = fopen("terminal.txt" , "w"); // on enregistre dans terminal.txt le resulat fputs(resultat_commande , fichier_terminal); fclose(fichier_terminal); return 1 ; */ } donc en fait si je fais une structure,ca sert à rien,car comme tu vois en haut,pour chaque bouton,le niveau doit avoir un certain numéro,selon le bouton et donc voilà..