ShellExecute() qui marche pas. [Delphi] - Delphi/Pascal - Programmation
Marsh Posté le 26-09-2004 à 15:37:29
si ton programme se trouve dans le dossier où se trouve 'MSACCESS.EXE' ça devrait tourner, sinon je crois qu'il faut que tu lui spécifie le répertoire où il se trouve.
Donne lui aussi le dossier à partir duquel il doit ouvrir le fichier. Utilise "ExtractFilePath".
Sinon c'est chelou que ça ne fonctionne pas, j'ai jamais eu de problème avec ShellExecute.
Marsh Posté le 26-09-2004 à 15:54:47
inekman a écrit : si ton programme se trouve dans le dossier où se trouve 'MSACCESS.EXE' ça devrait tourner, sinon je crois qu'il faut que tu lui spécifie le répertoire où il se trouve. |
Ah ! Eurêka Même si MSACCESS est ds le path, puisque c'est un prog d'Office !? J'avais pas compris ça. Je shellexécute illico
Marsh Posté le 26-09-2004 à 17:22:22
inekman a écrit : si ton programme se trouve dans le dossier où se trouve 'MSACCESS.EXE' ça devrait tourner, sinon je crois qu'il faut que tu lui spécifie le répertoire où il se trouve. |
Ca marche pas
Handle = 0 . Path complet d'Access ds le paramètre Nom du programme
ShellExecute (handle, // ?
'Open', // ?
'C:\Program Files\Microsoft Office\MSACCESS.EXE' , // Nom du programme
'C:\Documents and Settings\{...}\Consult.Mdb', // Param passé au progr
'', // Directory par défaut
SW_SHOWNORMAL);
Marsh Posté le 26-09-2004 à 19:35:58
ShellExecute(0, nil, 'C:\Documents and Settings\{...}\Consult.Mdb', nil, nil, SW_SHOWNORMAL); |
dans le cas où tu passes un mdb en param, peut-être que ça foire à cause des espaces ? essaie ceci :
ShellExecute(0, nil, 'MSACCESS.EXE', '"C:\Documents and Settings\{...}\Consult.Mdb"', nil, SW_SHOWNORMAL); |
Marsh Posté le 26-09-2004 à 23:03:17
non, les \ n'ont pas de signification particulière contrairement à ce qui se passe en C/C++/JAVA/PHP/etc.
Marsh Posté le 26-09-2004 à 23:49:12
Voilà, je viens d'effectuer un test et ça marche nikel chez moi.
antp a vu juste à propos des espaces :
|
Ce code est exactement celui que je viens de tester et il marche. A toi de voir si ça roule chez toi.
Marsh Posté le 29-09-2004 à 10:59:48
antp a écrit :
|
Ca marche
Le code :
Handle := 0;
ShellExecute (handle,
nil,
'C:\Documents and Settings\***\Mes Documents\Livres\Consult.Mdb' , // Access automatiquepment appelé
nil,
nil,
SW_SHOWNORMAL);
Le forum étant indisponible lorsque j'ai reçu l'avertissement de vos messages à vs tous, je me suis risqué sur www.developpez.com Là, on m'a sorti une histoire de à process pour que mon prog s'arrête (le temps d'Access) au lieu de passer aux lignes suivantes.
C'est pas faux en soi (j'utilise la bascule pour rester sous Access : je complique pas trop une minuscule moulinette perso ) mais ça ne résolvait pas mon pb. Vs êtes plus forts qu'eux
Ne le dites pas partout
Marsh Posté le 29-09-2004 à 11:02:29
inekman a écrit : Voilà, je viens d'effectuer un test et ça marche nikel chez moi.
|
Merci : ça roule
Marsh Posté le 29-09-2004 à 11:03:10
HERIBERT a écrit : Vs êtes plus forts qu'eux Ne le dites pas partout |
Ici, c'est l'élite. Tout le monde le sait.
Marsh Posté le 29-09-2004 à 11:08:41
pourquoi tu gardes une variable "handle" alors qu'un bête 0 suffit ?
Marsh Posté le 29-09-2004 à 11:15:43
Reply
Marsh Posté le 26-09-2004 à 11:48:22
Bonjour
ShelleExecute() me les casse, là
Cette fonction marche parfaitement avec cette syntaxe :
ShellExecute (handle, // Non initialisé
'Open',
'Nom_Du_Prog.EXE' , // Nom du programme
'', // Param passé au progr
'', // Directory par défaut
SW_SHOWNORMAL);
sans même avoir à initialiser Handle.
Sauf ici :
ShellExecute (Handle,
'Open',
'MSACCESS.EXE' , // Nom du programme
'C:\Documents and Settings\{...}\Livres\Consult.Mdb', // Fichier Access à ouvrir
'', // Directory par défaut
SW_SHOWNORMAL);
Pourquoi
Je l'ai même implémentée comme ceci :
Handle := 0; // Handle est un int
ShellExecute (Handle,
'Open',
'MSACCESS.EXE' , // Nom du programme
'C:\Documents and Settings\{...}\Livres\Consult.Mdb',
'', // Directory par défaut
SW_SHOWNORMAL);
Comprends pas ...