begin process at 2013 05 19 19:36:15
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Divers

 > 

General

 > 

Erreur d'éxécution avec instruction Shellexecute


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Erreur d'éxécution avec instruction Shellexecute

dimanche 8 juillet 2012 à 10:00:36 | Erreur d'éxécution avec instruction Shellexecute

Cjvg

Bonjour,

J'ai un Projet "A" qui ne contient que les instructions suivantes:

Private Sub Form_Load()
Call ShellExecuteA(0, "", App.Path & "\Think2Asie1.exe", "", "", 1)
End
End Sub



J'ai un projet B qui affiche une carte de l'Asie et qui permet à l'utilisateur lorsqu'il clique sur un pays d'afficher la carte des villes de ce pays.
Lorsque j'exécute directement, ce projet fonctionne correctement

------------------------------------------------------------------------------------------

Lorsque le projet A lance l'exécution du projet B, la carte de l'Asie s'affiche correctement. Lorsque l'utilisateur clique sur un pays, le programme tombe en erreur:
Erreur exécution 340
L'élément du groupe de contrôles '23' n'existe pas.


Si je place une instruction MSGBOX "***1***" dans la procédure Load d'une Form, cette form s'affiche alors correctement (Toutes les autres tombent en erreur)


Si je place cette instruction MSGBOX dans la procédure principale comme présenté ci-dessous, le programme fonctionne parfaitement.

MsgBox "** 1 **"

If Parm1 = 2 Then Think2Asie1F2.Show vbModal ' Chine Régions .
If Parm1 = 3 Then Think2Asie1F3.Show vbModal ' Chine .
If Parm1 = 4 Then Think2Asie1F4.Show vbModal ' Inde .
If Parm1 = 5 Then Think2Asie1F5.Show vbModal ' Mongolie .
If Parm1 = 6 Then Think2Asie1F6.Show vbModal ' Russie .
If Parm1 = 7 Then Think2Asie1F7.Show vbModal ' Kazakhstan .
If Parm1 = 8 Then Think2Asie1F8.Show vbModal ' Iran .
If Parm1 = 9 Then Think2Asie1F9.Show vbModal ' Arabie Saoudite .
If Parm1 = 10 Then Think2Asie1F10.Show vbModal ' Turkménistan .
If Parm1 = 11 Then Think2Asie1F11.Show vbModal ' Afghanistan .
Etc....................................



Impossible de trouver l'erreur. Comment remplacer ce MSGBOX par une autre instruction ????

Par avance Merci
dimanche 8 juillet 2012 à 10:27:52 | Re : Erreur d'éxécution avec instruction Shellexecute

jack

Administrateur CodeS-SourceS
Salut

Puisque tu lances un EXE, ShellExecute ne se justifie pas.
Essaye d'utiliser Shell.

Code Visual Basic :
Call Shell(App.Path & "\Think2Asie1.exe", vbNormalFocus)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
dimanche 8 juillet 2012 à 10:53:24 | Re : Erreur d'éxécution avec instruction Shellexecute

jack

Administrateur CodeS-SourceS
Il est fortement déconseillé de mettre un End dans un Form_Load :
Déjà parce que End n'est pas correct (mieux vaut un Unload Me), trop violent.
Ensuite parce que lors du Form_Load, l'affichage de tous les éléments graphiques de ton appli A ne sont pas encore complètement terminé.
Alors oui, ça ne semble pas avoir beaucoup d'importance dans ton cas, mais mieux vaudrait faire comme ceci :
# Tu places un Timer sur ta forme (Timer1)
# En config de ce Timer1, tu mets le Enabled à False et Interval à 200 (mSec)
# Dans le Form_Load, tu démarres le Timer :
Timer1.Enabled = True
# Dans la procédure du Timer (Timer1_Timer()), tu y mets :
- Timer1.Enabled = False, pour que le Timer ne s'exécute qu'une fois
- ta commande Shell
- un DoEvents, histoire que tout ait le temps d'être exécuté avant de sortir
- le Unload Me pour terminer le programme

"Erreur exécution 340
L'élément du groupe de contrôles '23' n'existe pas.
"
Est-ce que le groupe 23 te dit quelque chose dans ton programme ?
(parce que vu d'ici ...)

Éventuellement, remplace ta MsgBox par un DoEvents.
Est-ce que l'affichage graphique de ton le projet B est terminé au moment où tu cliques sur le pays ?
dimanche 8 juillet 2012 à 10:59:13 | Re : Erreur d'éxécution avec instruction Shellexecute

Cjvg

J'utilisais call Shell.
Pour trouver l'erreur j'ai réduit le projet "A" à sa plus simple expression et j'ai fais un essais avec shellexecute.


J'ai refais un nouvel essais en emplaçant le Msgbox par une similation d'entrée clavier
(Enter) ---> Keybd 13, 0, 0, 0 --> ça marche

C'est mieux que le Msgbox mais j'aimerais bien trouver l'erreur.
dimanche 8 juillet 2012 à 11:04:48 | Re : Erreur d'éxécution avec instruction Shellexecute

Cjvg

Éventuellement, remplace ta MsgBox par un DoEvents.
J'avais essayé ---> ça ne marche pas !
dimanche 8 juillet 2012 à 11:36:17 | Re : Erreur d'éxécution avec instruction Shellexecute

Cjvg


J'ai refais un nouvel essais en remplaçant le Msgbox par une simulation d'entrée clavier
(Enter) ---> Keybd 13, 0, 0, 0 --> ça marche
Je me suis trompé, ça ne marche pas

-----------------------------------------------------------------------------------------

J'ai refais un autre essais qui semble marcher

Keybd 13, 0, 0, 0 ' Pour neutraliser l'affichage du Msgbox
MsgBox " "


Cette discussion est classée dans : show, vbmodal, if, parm1, then


Répondre à ce message

Sujets en rapport avec ce message

Problème de boucle If [ par Ledaf ] Bonjour je suis en train de fair la boucle suivante:If Selection = "" Then                ElseIf Selection "" Then        Selection.CopyEnd IfEt aprè Textbox sur VB6 [ par mazert ] Bonjour, Je voudrai modifier/améliorer le code ci dessous (qui permet de changer de texxte à chaque fois que je clique sur un boutn).Static a As Integ VBA Graphe [ par piekehle ] Bonjour,   Je suis sous powerpoint 2000. N'importe quel maniere de faire mon graphe a partir des valeurs A,B,C,D m'interesse. Ce que j'ai essayer c'es if ? and ? then [ par argentin7 ] bonjour communauté VBfrancej'ai trouvé dans un certain code une condition if  que je n'ai pas compriseif    Murs and MURB thenavec Murs un integerMURB probleme transfert de valeur d'1 textbox d'un formulaire a un autre en application mdi [ par mitnickKevin ] Bonjour,J'ai un petit soucis concernant un formulaire qui doit afficher une liste de client qui on le meme nom.L'utilisateur saisie le nom du client d check1 [ par webanis ] salut j'ai un probleme de check1 je utilise cette code mais ne fonctionne pas "losque en ecute l'application , le check1   prend par defaut le 1 mais If App.PrevInstance = True Then [ par kelm_by ] salut tous le monde,comment est ce que je peux lancer une form d'une application deja active If App.PrevInstance = True ThenEndapplication deja active Joindre une pièce jointe à un email avec Winsok [ par basamir ] Bonjour,je viens de recuperer un code de vbfrance qui permet d'envoyer des emails grace à winsok et qui marche avec quelques smtp uniquement, j'ai che Backspace [ par GBadry ] Salut les amis, j'ai une zone de texte en VB6. je veux que l'utilisateur lis seulement son contenu. je détecte les codes des touches dans l'évenemen probleme entre vb6 et access 2007 [ par hugoclo ] Bonsoir,J'ai telecharger sur le site un zip pour un planning a partie d une dbb.La Base de donnée est au format .mdb Utilisant office 2007 j'ai transf


Nos sponsors


Sondage...

CalendriCode

Mai 2013
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,030 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales