alors voila
je possède un prog permettant de changer d´ip.
pour ceci, lancer 0.bat (cela deconnecte) puis 1.bat (reconnecte avec ip différente).
lorsque je lance ceci manuellement, ca marche très bien.
Mais quand j´utilise shell execut, je vois la fenetre se lancer et se refermer aussi sec. Mais cela ne marche pas...
b pour relancer le changement d´ip 10000 fois (autant que je veux en gros...)
a sert a choisir un nombre parmis l´un des 100 existant
for(;b<10000;b++)
{
Sleep(I_aleatoire[a]);
ShellExecute(hwnd,"open","D:\\david\\livebox\\IP LiveBox\\IP 0.bat",NULL,NULL,SW_SHOWNORMAL);
Sleep(5000);
ShellExecute(hwnd,"open","D:\\david\\livebox\\IP LiveBox\\IP 1.bat",NULL,NULL,SW_SHOWNORMAL);
a++;
}
voila, si quelqu´un a une idée...
Merci d´avance
si quelqu´un a une autre fonction permettant d´ex ca...
je prend aussi, c´est ptete la fonction...
qu´est ce que c´est que le hwnd que tu passe en paramètre à la fonction ? tu as une fenêtre dans ton programme ?
oui pk ??
tu devrais poster un morceau plus gros de ton code sur un wall, parce que là, il m´a l´air globalement faux de toute manière (c´est quoi ce a qui traîne et qui entraîne certainement un dépassement de mémoire sur ce pauvra tableau l_aleatoire qui ne demandait rien). Même si ce n´est pas trop relié à ton problème.
Pour ce qui te concerne, prend un nouveau projet, dans lequel tu écrit quelque chose dans le genre :
int main()
{
ShellExecute(NULL,"open","D:\\david\\livebox\\IP LiveBox\\IP 0.bat",NULL,NULL,SW_SHOWNORMAL);
Sleep(5000);
ShellExecute(NULL,"open","D:\\david\\livebox\\IP LiveBox\\IP 1.bat",NULL,NULL,SW_SHOWNORMAL);
}
et tu part de cette base pour tester l´appel à ShellExecute.
personnelement je pense que le reste du code n´est pas nécessaire...
tout simplement parce que tout marche très bien...
il n´y a pas de int main dans mon prg, je travaille "avec API"
le reste n´a rien a voir avec le problème, le tableau est entierement rempli...
mais ce qui ne marche pas, c´est que comme prevu, ca lance le prog, mais ca le referme immédiatement apres (a peine 0,1 sec apres)
j´ai testé avec d´autre prog et ca marche, je pense donc que ca viens de lui...
après c´est ptete le shell execut qui veut pas de celuis ci, pour ca que je veux tester d´autres fonctions.
Et si c´est deja arrivé a quelqu´un, ben racontez ou vous en etes
voila bonne journée
ce que je veux dire c´est que si tu crois que c´estl´appel à ShellExecute qui foire, test le programme que je t´ai donné ci-dessus (dans un nouveau projet), et regarde si là ça marche.
ok
c´est fait
mais même chose
(dsl de pas avoir compris dés le départ, j´avais meme pas tt lu)
est ce que tu arrive a ouvrir le fichier a ce chemin ( "D:\\david\\livebox\\IP LiveBox\\IP 1.bat" ) depuis ton programme ?
oui Ip 0.bat se lance et se ferme immédiatement
5 sec plus tard 1.bat se lance et se referme aussi.
comme ca se lance (tres peu de temps, mais ca se lance) je suis sur que c´est pas le chemin qui est pourri.
comme j´ai reussi a lancer un autre prog avec cette fonction, ben c pas la fonction nn plus...
dis le si c´est pas la rep que tu attendais car je suis pas bien sur d´avoir tres bien compri
ils en parlent très légèrement ici
http://forum.hardware.fr/hfr/Programmation/C-2/probleme-avec-shellexecute-sujet_88876_1.htm
je vais continuer les recherches et tester ce qui est proposé la
leproblème peut venir de IP 0.bat dans ce cas là.
Quand tu clique dessus, le dossier de démarrage est le dossier où se trouve le fichier. Quand tu le lance de cette manière, c´est celui où se trouve ton programme. Ça peut faire une diférence. Mais je pense que c´est le fichier .bat qui a un problème et pas le code C.
oui je m´étais demandé si ce n´était pas ca.
le truc c´est que j´ai trouvé d´autres problèmes du genre, et qu´il y avait des solutions.
(par ex: sur le lien deja posté)
j´ai donc essayé des trucs
mais je suis un amateur en prog et je ne comprend presque rien a ce que je fais:
for(;b<10000;b++)
{
Sleep(I_aleatoire[a]);
ZeroMemory(&chemin,sizeof(chemin));
chemin.cbSize=sizeof(chemin);
chemin.lpFile = "D:\\david\\livebox\\IP LiveBox\\IP 0.bat";
chemin.fMask = SEE_MASK_NOCLOSEPROCESS;
chemin.lpVerb = "open";
chemin.nShow = SW_SHOWNORMAL;
chemin.hwnd=NULL;
if( ShellExecuteEx(&chemin) )
{ WaitForSingleObject(chemin.hProcess,INFINITE); }
a++;
if(a==80)
{a=0;}
}
voila, j´ai reussi a ne pas avoir d´erreur (c´est deja un miracle
) mais je sais pas si cela va faire le truc demandé.
Je viens de testé, cela fait la meme chose. Cependant, du coup je pense que cela fait la meme chose parce que j´ai mal programmé les lignes que je ne comprenais pas... et peut etre pas parce que c´est le .bat qui marche pas.
Si vous pouviez me corriger ces quelques lignes afin de faire ce qui est recherché, je vous serais très reconnaissant
(je continue tout de meme a chercher de mon coté en attendant)
Merci d´avance
et je tiens aussi a remercier ceux qui ont répondu s vite a mon problème dans le but de m´aider
j´ai oublié de préciser a quoi servaient ces lignes.
Elle doivent normalement fair attendre que le processus se finisse avant de continuer.
car avant, le processus etait lancé, et cela continuait le prog direct (normal) mais tout en fermant le .bat
donnes nous le contenu du .bat. Ca pourrais nous permettre d´y voir plus clair.
http://ultimarena.net/patches-f37/box-net-livebox-t12090.html
a telecherger ici
ps: ne marche qu´avec livebox
aouch, je dois partir vite fait
je re demain a l´aube !! !
Bonne fin de soirée
faudra poster ton fichier à un endroit où on n´est pas obligé de s´inscrire pour le regarder si tu veux qu´on y jette un coup d´oeil.
oups dsl
je vais vous donner mes identifiants, ca ira plus vite, je n´en aurai plus besoin, j´ai changé de passe et ce sont de fausses infos persos...
login: "david11"
mdp: "bonjour"
t´aurais pu donner le lien directement vers le site de téléchargement ...
MAis bon, c´est exactementce que je te disais. Le fichier .bat cherche dans son répertoire l´exécutable TS10 et le lance. Quand tu lance le .bat à partir de ton progr