Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2842 connectés 

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  CreateProcess : bug !

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

CreateProcess : bug !

n°1241985
HERIBERT
Posté le 09-11-2005 à 10:20:19  profilanswer
 

Pourquoi ce bout de code ne fonctionne-t-il pas ?
 
 
 
  FillChar(Startupinfo,Sizeof(TStartupinfo),0);
  Startupinfo.cb:=Sizeof(TStartupInfo);
  Retour := CreateProcess(PChar(Processus),
                         PChar(Nom_F_Consult),
    nil,
                         nil,
                         false,
                         normal_priority_class,
                         nil,
                         PChar(Rep),
                        Startupinfo,ProcessInfo);
 
Où les variables string sont :
 
 Rep :=           'C:\Documents and Settings\UTILISATEUR\Mes Documents\Répertoire';
  Processus :=     'C:\Program Files\Microsoft Office\Office10\Msaccess.EXE';
  Nom_F_Consult := 'C:\Documents and Settings\UTILISATEUR\Mes Documents\Répertoire\BASE.Mdb';

 
Access se lance mais ne semble pas recevoir le nom du fichier (Nom_F_Consult) en paramètre !
 
Merci ;)

mood
Publicité
Posté le 09-11-2005 à 10:20:19  profilanswer
 

n°1242741
HERIBERT
Posté le 09-11-2005 à 22:19:55  profilanswer
 

HERIBERT a écrit :

Pourquoi ce bout de code ne fonctionne-t-il pas ?
 
 
 
  FillChar(Startupinfo,Sizeof(TStartupinfo),0);
  Startupinfo.cb:=Sizeof(TStartupInfo);
  Retour := CreateProcess(PChar(Processus),
                         PChar(Nom_F_Consult),
    nil,
                         nil,
                         false,
                         normal_priority_class,
                         nil,
                         PChar(Rep),
                        Startupinfo,ProcessInfo);
 
Où les variables string sont :
 
 Rep :=           'C:\Documents and Settings\UTILISATEUR\Mes Documents\Répertoire';
  Processus :=     'C:\Program Files\Microsoft Office\Office10\Msaccess.EXE';
  Nom_F_Consult := 'C:\Documents and Settings\UTILISATEUR\Mes Documents\Répertoire\BASE.Mdb';

 
Access se lance mais ne semble pas recevoir le nom du fichier (Nom_F_Consult) en paramètre !
 
Merci ;)


 :bounce:

n°1242757
antp
Super Administrateur
Champion des excuses bidons
Posté le 09-11-2005 à 22:41:28  profilanswer
 

"ne fonctionne pas"... au pif, essaie de regarder la valeur de retour et de faire un RaiseLastOSError pour voir quoi :o
Sinon je mettrais des guillemets autour des éléments du paramètre "command line", parce qu'avec les espaces il doit essayer de lancer "C:\Documents" en lui passant comme paramètres "and Settings\UTILISATEUR\Mes Documents\Répertoire\BASE.Mdb"


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°1242801
HERIBERT
Posté le 09-11-2005 à 23:35:11  profilanswer
 

antp a écrit :

"ne fonctionne pas"... au pif, essaie de regarder la valeur de retour et de faire un RaiseLastOSError pour voir quoi :o
Sinon je mettrais des guillemets autour des éléments du paramètre "command line", parce qu'avec les espaces il doit essayer de lancer "C:\Documents" en lui passant comme paramètres "and Settings\UTILISATEUR\Mes Documents\Répertoire\BASE.Mdb"


OK pr RaiseLastError : je vais voir ce que ça donne.  
 
Pour les guillements : il ne tient pas compte des espaces dans les vartiables string :??:

n°1242805
antp
Super Administrateur
Champion des excuses bidons
Posté le 09-11-2005 à 23:51:39  profilanswer
 

Dans la variable string non, mais dans les lignes commandes oui. CreateProcess reçoit une seule chaîne contenant toute la ligne de commande, il peut pas deviner où finit le fichier à lancer et où commencent les paramètres...

Message cité 1 fois
Message édité par antp le 09-11-2005 à 23:51:49

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°1242848
HERIBERT
Posté le 10-11-2005 à 01:29:16  profilanswer
 

antp a écrit :

Dans la variable string non, mais dans les lignes commandes oui. CreateProcess reçoit une seule chaîne contenant toute la ligne de commande, il peut pas deviner où finit le fichier à lancer et où commencent les paramètres...


Effectivement : Access ne peut trouver le fichier "and.Mdb" : "and" faisant partie de la ligne de commande: c:\Documents and Settings\...
 
Je sors comment, de ce bug :/


Message édité par HERIBERT le 10-11-2005 à 01:29:33
n°1242899
antp
Super Administrateur
Champion des excuses bidons
Posté le 10-11-2005 à 09:45:04  profilanswer
 

Nom_F_Consult := '"C:\Documents and Settings\UTILISATEUR\Mes Documents\Répertoire\BASE.Mdb"';


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°1242923
HERIBERT
Posté le 10-11-2005 à 10:33:27  profilanswer
 

antp a écrit :

Nom_F_Consult := '"C:\Documents and Settings\UTILISATEUR\Mes Documents\Répertoire\BASE.Mdb"';


Réponse : Code Erreur 3. Chemin non trouvé ... F_Consult est bien formaté comme exposé plus haut :( C'est peut-être un paramètre à Access qui fait défaut ? Du genre /bla-bla ? Je vais les chercher.

n°1242948
antp
Super Administrateur
Champion des excuses bidons
Posté le 10-11-2005 à 11:08:50  profilanswer
 

T'as mis des " ou des doubles ' ? (c'est des " qu'il faut)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°1242989
HERIBERT
Posté le 10-11-2005 à 11:34:47  profilanswer
 

antp a écrit :

T'as mis des " ou des doubles ' ? (c'est des " qu'il faut)


Exactement ceci:
  Nom_F_Consult := '"C:\Documents and Settings\UTILISATEUR\Mes Documents\Base\Consult.Mdb"';  

mood
Publicité
Posté le 10-11-2005 à 11:34:47  profilanswer
 

n°1243146
antp
Super Administrateur
Champion des excuses bidons
Posté le 10-11-2005 à 13:46:40  profilanswer
 

En regardant du code que j'avais fait où j'utilisais CreateProcess, je vois que le premier param n'est pas utile si on fournit une ligne de commande complète en second param.
Tu peux mettre nil en premier param, et mettre juste le mdb (ou access.exe suivi du mdb) en second param.

Message cité 1 fois
Message édité par antp le 10-11-2005 à 13:48:05

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°1243791
HERIBERT
Posté le 11-11-2005 à 11:18:27  profilanswer
 

antp a écrit :

En regardant du code que j'avais fait où j'utilisais CreateProcess, je vois que le premier param n'est pas utile si on fournit une ligne de commande complète en second param.
Tu peux mettre nil en premier param, et mettre juste le mdb (ou access.exe suivi du mdb) en second param.


Effectivement : ça marche de la façon que tu décris. Ca ne devrait pas fonctionner, mais... ça fonctionne pourtant  :sarcastic:  
 
Ca me rappelle une API de gestion de fichier (lecture) sur laquelle je plantais. Un source m'est alors communiqué en exemple. Au lieu d'un pointeur sur je ne sais plus quel tampon, c'est... l'identificateur de la variable qu'il fallait indiquer, contrairement à la doc des API :??: J'ose pas dire "bug du compilo", mais ça y ressemble...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  CreateProcess : bug !

 

Sujets relatifs
CreateProcess avec un .bat ??[C++] Défilement d'images avec CreateProcess ou ShellExecute
syntaxe de createprocess[C++] dsl mais j'ai encore un p'tit pb avec CreateProcess et WaitFor..
[VC++] Comment marche CreateProcess (ou comment lancer une appli indé) 
Plus de sujets relatifs à : CreateProcess : bug !


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)