[Delphi] ShellExecute() qui marche pas.

ShellExecute() qui marche pas. [Delphi] - Delphi/Pascal - Programmation

Marsh Posté le 26-09-2004 à 11:48:22    

Bonjour :)
 
ShelleExecute() me les casse, là :kaola:
 
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 :( ...

Reply

Marsh Posté le 26-09-2004 à 11:48:22   

Reply

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. ;)

Reply

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.
 
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. ;)


Ah ! Eurêka :hot: Même si MSACCESS est ds le path, puisque c'est un prog d'Office !? J'avais pas compris ça. Je shellexécute illico :)

Reply

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.
 
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. ;)


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);
 
 :??:

Reply

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);


Message édité par antp le 26-09-2004 à 19:37:50

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 26-09-2004 à 21:56:29    

en delphi ptet que \D veut dire le caractere D ?

Reply

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.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

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 :
 


ShellExecute(0, // handle
    'open', // opération a effectuer
    'C:\Program Files\Microsoft Office\Office\MSACCESS.EXE', // adresse d'access
    '"C:\Documents and Settings\****\Mes documents\bd1.mdb"', // adresse de la bdd
    '"C:\Documents and Settings\****\Mes documents\"', // répertoire du fichier, j'ai essayé sans et ça marche aussi...
    SW_NORMAL);


 
Ce code est exactement celui que je viens de tester et il marche. A toi de voir si ça roule chez toi.


Message édité par Inekman le 26-09-2004 à 23:49:35
Reply

Marsh Posté le 29-09-2004 à 10:59:48    

antp a écrit :

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);




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 :jap:  
 
Ne le dites pas partout :o


Message édité par HERIBERT le 29-09-2004 à 11:00:31
Reply

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.
 
antp a vu juste à propos des espaces :
 


ShellExecute(0, // handle
    'open', // opération a effectuer
    'C:\Program Files\Microsoft Office\Office\MSACCESS.EXE', // adresse d'access
    '"C:\Documents and Settings\****\Mes documents\bd1.mdb"', // adresse de la bdd
    '"C:\Documents and Settings\****\Mes documents\"', // répertoire du fichier, j'ai essayé sans et ça marche aussi...
    SW_NORMAL);


 
Ce code est exactement celui que je viens de tester et il marche. A toi de voir si ça roule chez toi.


Merci : ça roule :)

Reply

Marsh Posté le 29-09-2004 à 11:02:29   

Reply

Marsh Posté le 29-09-2004 à 11:03:10    

HERIBERT a écrit :

Vs êtes plus forts qu'eux :jap: Ne le dites pas partout :o


Ici, c'est l'élite. Tout le monde le sait.  [:crosscrusher]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 29-09-2004 à 11:08:41    

pourquoi tu gardes une variable "handle" alors qu'un bête 0 suffit ? :??:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 29-09-2004 à 11:15:43    

antp a écrit :

pourquoi tu gardes une variable "handle" alors qu'un bête 0 suffit ? :??:


Ben oui, tiens :heink:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed