Commande shell

GBadry Messages postés 77 Date d'inscription jeudi 26 avril 2007 Statut Membre Dernière intervention 27 février 2014 - 27 févr. 2008 à 12:01
GBadry Messages postés 77 Date d'inscription jeudi 26 avril 2007 Statut Membre Dernière intervention 27 février 2014 - 28 févr. 2008 à 09:11
Salut les amis,
j'ai un exécutable que je veux lancer a partir d'une interface VB6. j'utilise la commande SHELL de la manière suivante:
RetVal = Shell(Chr$(34) & App.Path & "\MonProg.EXE" & Chr$(34), 1)
l'exécutable est sensé délivrer deux fichiers résultats.
Tout marchait bien. mais un prob est survenu. maintenant quand je lance la même commande, l'exécutable a l'air de tourner mais ne délivre plus ces fichiers, alors qu'il les délivre quand je le lance manuellement.

Je me demande est ce qu'il y a un paramètre qu'il faut ajouter dans l'application de SHELL.
PS: j'utilise aussi la fonction SHELLWait afin de maitriser les évenements qui suivent l'exécution. autrement dit j'attend la fin de l'exécution du programme pour que je passe à l'instruction suivante. cette fonction est définie comme suit:

Private Function ShellWait(ByVal vCommand As String) As Boolean


    Dim mProcess As Long
    Dim mRet As Long
    Dim mPID As Long
    Dim bRet As Boolean
      
    On Error GoTo ShellWait_Error
   
    'mPID = Shell(vCommand, 1)
    mPID = Shell(vCommand, vbMinimizedNoFocus)
    mProcess = OpenProcess(&H1F0FFF, 0, mPID)
    Do
        mRet = WaitForSingleObject(mProcess, 1000)
        If mRet <> &H102& Then
            bRet = True
            Exit Do
        End If
        DoEvents
    Loop
    CloseHandle mProcess
ShellWait_OK:
    On Error GoTo 0
    Exit Function


ShellWait_Error:
    bRet = False
    Resume ShellWait_OK
End Function

Si vous pouvez m'aider je serai reconnaissant.
Merci. 

4 réponses

GBadry Messages postés 77 Date d'inscription jeudi 26 avril 2007 Statut Membre Dernière intervention 27 février 2014 2
27 févr. 2008 à 17:40
je vois que plusieurs sont ceux qui ont consulté cette question par contre personne n'a répondu.
j'ai vu que j'utilise un commondialog pour sélectionner des fichiers nécessaires au programme. le fait d'utiliser ce commondialog a perturbé le fonctionnement de Shell et aussi d'un certain ADODC que j'ai dans le programme quelque part. en fait, ce que j'ai constaté c'est que ce commondialog perturbe tout ce qui est path dans l'application.
par exemple, j'ai un ADODC qui est connecté à une base dans un chemin. lorsque j'utilise le commondialog, je navigue, je sélectionne un fichier. là je trouve que la programme recherche le même nom de ma base mais cette fois dans le dernier path que j'ai sélectionné dans le commondialog.
ce qui me renforce l'idée, c'est que lorsque j'ex"cute mon Shell au début du programme avant d'utiliser le common dialog, elle fonctionne bien. en plus lorsque j'ai enlevé totalement le common dialog de l'application, elle a repris son fonctionnement normal.

Est ce que quelqu'un peut m'aider à propos de tout ça?? je me coince totalement là!
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
27 févr. 2008 à 20:53
Salut

Tu parles de CommonDialog, d'ADODC (...) mais dans quel programme ?
Celui qui lance l'autre, ou celui qui est lancé ?
De toute façon, on n'a aucune info qui pourrait nous aider à comprendre pourquoi.

"ce commondialog perturbe tout ce qui est path dans l'application." : C'est sûr, si tu fais des ChDrive ou des ChDir ...

Alors replonge toi dans les lignes de tes programmes et utilise la méthode de Debug (touches F9, F8 + la fenêtre de debug) pour vérifier le contenu de tes variables au fil de ton programme.

On ne peut rien pour toi.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
GBadry Messages postés 77 Date d'inscription jeudi 26 avril 2007 Statut Membre Dernière intervention 27 février 2014 2
28 févr. 2008 à 09:01
Merci Jack pour ton attention a mon problème. Justement je comprend pas pourquoi ça fait comme ça. j'ai suivi mes lignes de codes une par une. je connais le débuggage avec les touches F8 et F9. ce que je ne comprend pas c'est qu'est ce qui fait changer le chemin dans lequel le programme cherche la base de données après avoir utilisé le commondialog.
J'ai ma base (qui s'appelle Base.mdb) sous un répertoire C:\MonApplication\, donc l'ADODC je le configure de la manière suivante. je vais dans les propriétés et lorsque je choisit la base, je lui enlève tout ce qui précéde le nom de la base dans son chemin. ça veut dire Base.mdb au lieu de C:\MonApplication\Base.mdb. Ceci a pour but de relativiser le chemin de la base avec le PC du client. le programme tourne normalement jusqu'à ce que je sélectionne un fichier avec le common dialog. le chemin que j'ai sélectionné redevient comme une sorte de chemin général qui s'applique à toutes les boites de dialogues qui s'ouvrent par la suite que ce soit dans l'application ou ailleurs. Y compris le chemin de la base qui devient comme si j'ai configuré la base dans ce nouveau chemin. par exemple, si je sélectionne un fichier dans un répertoire C:\MonDossier, l'erreur qui survient par la suite lorsque j'utilise la base c'est la suivante:
Fichier C:\MonDossier\Base.mdb est introuvable!!!  alors que normalement elle devrait se trouver à C:\MonApplication !!!

Pour la question de SHELL, je ne sais pas l'explication car on ne me sort pas de message d'erreur.

J'espère que je n'étais pas trop long.

Merci.
0
GBadry Messages postés 77 Date d'inscription jeudi 26 avril 2007 Statut Membre Dernière intervention 27 février 2014 2
28 févr. 2008 à 09:11
juste une autre remarque. lorsque j'ai enlevé ce commondialog et j'ai utilisé des controles (drives, dir et file), les problèmes de SHELL et ADODC ont disparu.
0
Rejoignez-nous