CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

C++ shellexecute problème

[C-O]
[C-O]
Niveau 5
20 septembre 2007 à 19:41:11

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

[C-O]
[C-O]
Niveau 5
20 septembre 2007 à 20:21:11

si quelqu´un a une autre fonction permettant d´ex ca...
je prend aussi, c´est ptete la fonction...

dnob700
dnob700
Niveau 10
20 septembre 2007 à 20:34:49

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 ?

[C-O]
[C-O]
Niveau 5
20 septembre 2007 à 20:44:38

oui pk ??

dnob700
dnob700
Niveau 10
20 septembre 2007 à 21:33:33

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 :

  1. include <windows.h>

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.

[C-O]
[C-O]
Niveau 5
21 septembre 2007 à 18:19:35

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

dnob700
dnob700
Niveau 10
21 septembre 2007 à 18:44:02

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.

[C-O]
[C-O]
Niveau 5
21 septembre 2007 à 18:49:54

ok
c´est fait
mais même chose
(dsl de pas avoir compris dés le départ, j´avais meme pas tt lu)

godrik
godrik
Niveau 30
21 septembre 2007 à 18:59:28

est ce que tu arrive a ouvrir le fichier a ce chemin ( "D:\\david\\livebox\\IP LiveBox\\IP 1.bat" ) depuis ton programme ?

[C-O]
[C-O]
Niveau 5
21 septembre 2007 à 19:07:30

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

[C-O]
[C-O]
Niveau 5
21 septembre 2007 à 19:19:03

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

dnob700
dnob700
Niveau 10
21 septembre 2007 à 19:47:07

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.

[C-O]
[C-O]
Niveau 5
21 septembre 2007 à 20:01:40

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

[C-O]
[C-O]
Niveau 5
21 septembre 2007 à 20:05:41

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

godrik
godrik
Niveau 30
21 septembre 2007 à 20:07:14

donnes nous le contenu du .bat. Ca pourrais nous permettre d´y voir plus clair.

[C-O]
[C-O]
Niveau 5
21 septembre 2007 à 20:12:33

http://ultimarena.net/patches-f37/box-net-livebox-t12090.html
a telecherger ici

ps: ne marche qu´avec livebox

[C-O]
[C-O]
Niveau 5
21 septembre 2007 à 20:13:18

aouch, je dois partir vite fait
je re demain a l´aube !! !
Bonne fin de soirée

dnob700
dnob700
Niveau 10
21 septembre 2007 à 21:07:07

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.

[C-O]
[C-O]
Niveau 5
22 septembre 2007 à 09:17:12

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"

dnob700
dnob700
Niveau 10
22 septembre 2007 à 13:19:38

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

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment