Pb commande Shell

Résolu
darco62 Messages postés 3 Date d'inscription mercredi 28 janvier 2004 Statut Membre Dernière intervention 18 novembre 2004 - 9 oct. 2004 à 22:20
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 9 oct. 2004 à 23:17
salut a tous

je veux lancer une commande access par un programme en VB

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

ShellExecute 0, "open", "MSaccess.exe ""C:\Documents and Settings\Homer\Bureau\productivite.mdb"" /compact", 0&, 0&, 1

Mais cela ne marche pas !

J'ai bien tenté de doubler les guillemets mais cela ne fonctionne tjrs pas .

Si qq'1 a une idée
Merci

2 réponses

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
9 oct. 2004 à 23:17
Correctif, j'avais pas vu : le premier 0 du ShellExecute correspond au handle (identifiant) du parent, c'est à dire ton application.
Remplace le 0 par Me.HWnd
+ Ordre des paramètres :
...productivite.mdb", "/compact", 0&, 1
Tu verras dans API-Guide, ils utilisent souvent des constantes au lieu de mettre le dernier "1" par exemple. Les valeurs de ces constantes sont dans un autre logiciel : API-Viewer. Cherche le sur Google.
En plus, pour chaque api, il y a un exemple d'utilisation en VB6.

Vala
Jack
3
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
9 oct. 2004 à 23:09
Salut darco62
Comme dit dans l'aide du ShellExecute (Clique ici pour récupérer API-GUIDE), les paramètres doivent être passés dans le 3e paramètre, pas en même temps que le nom du fichier.
Par contre, ta syntaxe serait bonne pour le Shell (et pas ShellExecute) : ne pas confondre :
Shell est un programme "console" du système d'exploitation. Tu ne peux lancer avec que des exécutables ou Batch.
Shell """C:\Chemin\MSaccess.exe C:\Documents and Settings\Homer\Bureau\productivite.mdb"" /compact", vbNormal

ShellExecute est une api appartenant au noyau du système. Sa particularité est de retrouver quel est l'exécutable qui est associé à l'extension du fichier que tu lui fourni. Avec ça, tu peux directement lui donner ton fichier MDB, il se débrouillera pour lancer Access ou autre.
ShellExecute 0, "open", "C:\Documents and Settings\Homer\Bureau\productivite.mdb", 0&, "/compact"", 1
Vérifie la syntaxe, je suis plus sur de l'ordre des paramètres.

Leur utilisation est différente
Vala
Jack
0
Rejoignez-nous