Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access
Access Forum d'entraide sur Microsoft Access. Avant de poster -> La F.A.Q Access
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/06/2011, 10h47   #1
Invité de passage
 
Homme Jacques Fabre
Directeur technique
Inscription : décembre 2007
Messages : 4
Détails du profil
Informations personnelles :
Nom : Homme Jacques Fabre
Âge : 51
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Directeur technique
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : décembre 2007
Messages : 4
Points : 2
Points : 2
Par défaut Commande shell, incompatibilité avec access 2007 ou Windows 7

Bonjour à tous.

J'ai développé avec Access 2003 (fonctionnant sous XP Pro SP3) une application qui permet :

  • de générer des fichiers txt qui sont fournis en entrée à un .exe écrit en fortran

  • de lancer ce programme
  • de récupérer en sortie les fichiers txt fournis par ce programme
J'ai trouvé sur le forum le code qui lance le programme et permet d'attendre la fin de son exécution pour poursuivre :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
lProcessID = Shell("PREG.exe", vbNormalFocus)
 
lhProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, lProcessID)
 
' Boucle tant que la variable lpExitCode <> STATUS_PENDING (&H103&)
Do
' Récupération du code de sortie du processus
' Si programme ouvert -> la variable lpExitCode = STATUS_PENDING
' Sinon -> la variable lpExitCode = 0. Donc fin de la boucle
Call GetExitCodeProcess(lhProcess, lpExitCode)
DoEvents
Loop While lpExitCode = STATUS_PENDING
 
Call CloseHandle(lhProcess) ' Ferme le handle du processus
 
avec au préalable les déclarations suivantes :
 
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwlProcessID As Long) As Long
 
Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
 
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
 
Private Const PROCESS_QUERY_INFORMATION = &H400
Private Const STATUS_PENDING = &H103&
Tout fonctionne bien dans ma configuration, mais avec Access 2007 tournant sous Windows 7, j'obtient une erreur "Argument ou appel de procédure incorrect" sur la ligne :

Code :
1
2
 
lProcessID = Shell("PREG.exe", vbNormalFocus)
Je soupçonne une incompatibilité de la commande Shell avec W7, mais je n'ai rien trouvé de concluant en fouinant sur le net.

Quelqu'un aurait-il une idée ?

D'avance merci.
Africa Jack est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 22h11   #2
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 462
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 462
Points : 7 539
Points : 7 539
As-tu essayé en mettant le chemin complet (ex : c:\Toto\Titi\tata\TonExe.exe) ?

Essaye en ouvrant une fenêtre DOS (je ne sais pas si elle existe encore sous Windows 7) mais sous XP c'est "cmd /k" pour qu'elle reste ouverte.

Si cela marche essaye alors :

Code :
cmd /k c:\Toto\Titi\tata\TonExe.exe
si tout fonctionne après essaye

Code :
cmd /c c:\Toto\Titi\tata\TonExe.exe
qui va ouvrir une fenêtre dos, exécuter TonExe et fermer la fenêtre DOS.

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2011, 12h30   #3
Expert Confirmé
 
Avatar de vodiem
 
Homme Diem VO
Vivre
Inscription : avril 2006
Messages : 2 644
Détails du profil
Informations personnelles :
Nom : Homme Diem VO
Âge : 40
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Vivre
Secteur : Conseil

Informations forums :
Inscription : avril 2006
Messages : 2 644
Points : 3 895
Points : 3 895
salut marot_r et bienvenu Africa Jack,

fais attention aussi au emplacement sécurisé sous W7 qui demande des droits d'administrations (comme program files) que shell ne peut éventuellement pas fournir...

vodiem est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h48.


 
 
 
 
Partenaires

Hébergement Web