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

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  CreateProcess() qui marche pas !

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

CreateProcess() qui marche pas !

n°1516202
HERIBERT
Posté le 18-02-2007 à 19:27:18  profilanswer
 

Bonsoir.  
 
Ce code ne passe pas. Delphi 6 ne dit rien (pas d'erreur à la compilation) mais, à l'exécution, FireFox ne trouve pas le fichier cible à éditer ! Passé la journée dessus...  :sleep:  
 
Si vs avez une idée, je suis preneur, merci :( Parce que là, j'en peux plus...
 
procedure Editer_Page_Pointee;
var
  StartupInfo: TStartupinfo;
  ProcessInfo: TProcessInformation;
  Retour : longbool; / Valeur bool de retour de CreateProcess()
  Appel : string;  / Chaîne passée en paramètre à CreateProcess()
  Rep : string;   / Le répertoire de travail à mentionner en paramètre à CreateProcess()
  Erreur : longint;
 
  Chn : string;
 
 
begin
  Form1.Lab_Aff_Nom_Fichier_Pointe.Caption := Form1.ListBox_Pages.Items.Strings[Form1.ListBox_Pages.ItemIndex];
 
 //   Formatage chaîne Page_A_Editer
 Chn := Rep_ScrapBook_Pages_Memorisees ;
  Chn := Chn + '\' + Form1.ListBox_Pages.Items.Strings[Form1.ListBox_Pages.ItemIndex];
  Chn := Chn + '\INDEX.HTML';
  Form1.Lab_Aff_Nom_F.Caption := Chn;
  Page_A_Editer := Chn;  
  // -------------------------------
 
  Rep := Rep_ScrapBook_Pages_Memorisees + '\' + Form1.ListBox_Pages.Items.Strings[Form1.ListBox_Pages.ItemIndex];
  ChDir(Rep);
 
 //  -------------  APPEL  DE  CreateProcess() ------------
  FillChar(Startupinfo,Sizeof(TStartupinfo),0);
  Startupinfo.cb:=Sizeof(TStartupInfo);
 
  Appel := 'c:\Program Files\Mozilla FireFox\FireFox.EXE' + ' ' + Page_A_Editer;
  Retour := CreateProcess(nil,
                         PChar(Appel),
      nil,
                         nil,
                         false,
                         normal_priority_class,
                         nil,
      PChar(Rep),Startupinfo,ProcessInfo);
// -------------------------------
 
  if Retour <> false then  // Valeur systématiquement retournée : TRUE ! Donc, ça a marché... mais FireFox ne trouve pas    le fichier à éditer !!
        begin
                WaitforSingleObject(Processinfo.hProcess, infinite);
                CloseHandle(ProcessInfo.hProcess);
        end
  else
        begin
                RaiseLastOSError;
        end;
end;  // procédure

Message cité 2 fois
Message édité par HERIBERT le 18-02-2007 à 19:28:08
mood
Publicité
Posté le 18-02-2007 à 19:27:18  profilanswer
 

n°1516205
HERIBERT
Posté le 18-02-2007 à 19:30:40  profilanswer
 

HERIBERT a écrit :

Bonsoir.  
 
Ce code ne passe pas. Delphi 6 ne dit rien (pas d'erreur à la compilation) mais, à l'exécution, FireFox ne trouve pas le fichier cible à éditer ! Passé la journée dessus...  :sleep:  
 
Si vs avez une idée, je suis preneur, merci :( Parce que là, j'en peux plus...
 
procedure Editer_Page_Pointee;
var
  StartupInfo: TStartupinfo;
  ProcessInfo: TProcessInformation;
  Retour : longbool; / Valeur bool de retour de CreateProcess()
  Appel : string;  / Chaîne passée en paramètre à CreateProcess()
  Rep : string;   / Le répertoire de travail à mentionner en paramètre à CreateProcess()
  Erreur : longint;
 
  Chn : string;
 
 
begin
  Form1.Lab_Aff_Nom_Fichier_Pointe.Caption := Form1.ListBox_Pages.Items.Strings[Form1.ListBox_Pages.ItemIndex];
 
 //   Formatage chaîne Page_A_Editer
 Chn := Rep_ScrapBook_Pages_Memorisees ;
  Chn := Chn + '\' + Form1.ListBox_Pages.Items.Strings[Form1.ListBox_Pages.ItemIndex];
  Chn := Chn + '\INDEX.HTML';
  Form1.Lab_Aff_Nom_F.Caption := Chn;
  Page_A_Editer := Chn;  
  // -------------------------------
 
  Rep := Rep_ScrapBook_Pages_Memorisees + '\' + Form1.ListBox_Pages.Items.Strings[Form1.ListBox_Pages.ItemIndex];
  ChDir(Rep);
 
 //  -------------  APPEL  DE  CreateProcess() ------------
  FillChar(Startupinfo,Sizeof(TStartupinfo),0);
  Startupinfo.cb:=Sizeof(TStartupInfo);
 
  Appel := 'c:\Program Files\Mozilla FireFox\FireFox.EXE' + ' ' + Page_A_Editer;
  Retour := CreateProcess(nil,
                         PChar(Appel),
      nil,
                         nil,
                         false,
                         normal_priority_class,
                         nil,
      PChar(Rep),Startupinfo,ProcessInfo);
// -------------------------------
 
  if Retour <> false then  // Valeur systématiquement retournée : TRUE ! Donc, ça a marché... mais FireFox ne trouve pas    le fichier à éditer !!
        begin
                WaitforSingleObject(Processinfo.hProcess, infinite);
                CloseHandle(ProcessInfo.hProcess);
        end
  else
        begin
                RaiseLastOSError;
        end;
end;  // procédure


 
FireFox m'affiche ça :  
http://membres.lycos.fr/a456765/fichiernontrouve.png

n°1516258
mrbebert
Posté le 18-02-2007 à 22:10:51  profilanswer
 

Essaie en mettant en dur un nom de fichier "simple" (à la racine du disque, sans espace ou accents ...).
 
Il est où, le fichier à éditer ? Il y a un espace dans le nom du répertoire ? [:figti]

n°1516265
HERIBERT
Posté le 18-02-2007 à 22:24:06  profilanswer
 

mrbebert a écrit :

Essaie en mettant en dur un nom de fichier "simple" (à la racine du disque, sans espace ou accents ...).
 
Il est où, le fichier à éditer ? Il y a un espace dans le nom du répertoire ? [:figti]


1/ "Essaie en mettant en dur un nom de fichier "simple" (à la racine du disque, sans espace ou accents ...) " : C'est ce que je suis en train de faire. Ca ge gave, ce truc :D
 
2/ "Il est où, le fichier à éditer ? " : nom type du fichier à éditer :  
 
Chaque fichier de la liste (ds un TLisbBox) est un fichier INDEX.HTML ds un répertoire :  
Repertoire 1\Index.Html
Repertoire 2\Index.Html
Repertoire 3\Index.Html
etc...
 
Ds chaque répertoire, le contenu d'une page Web capturée par ScrapKook (extension de FireFox). Et ds chaque répertoire, le fichier "INDEX.HTML" devant être chargé par FireFox, qui va réafficher, depuis le dd, la page sauvée par ScrapBook. Il n'y a donc que le nom du répertoire qui change à chaque fois. Mais c'est vrai qu'il est tout au bout d'une très très longue chaîne (un string de 131 octets).

n°1516329
aldo13000
Posté le 19-02-2007 à 10:01:57  profilanswer
 

HERIBERT a écrit :

Bonsoir.  
 
  Appel := 'c:\Program Files\Mozilla FireFox\FireFox.EXE' + ' ' + Page_A_Editer;
end;  // procédure


 
Essaye comme ca    :
 
 Appel := 'c:\Program Files\Mozilla FireFox\FireFox.EXE' + ' ' +'file://'+ Page_A_Editer;


---------------

n°1516410
HERIBERT
Posté le 19-02-2007 à 13:19:35  profilanswer
 

aldo13000 a écrit :

Essaye comme ca    :
 
 Appel := 'c:\Program Files\Mozilla FireFox\FireFox.EXE' + ' ' +'file://'+ Page_A_Editer;


Ca y est :hot: Ca maaarche :hot:
 
C'était une simple question d'expace ds le chemin du fichier à traiter  :sarcastic:  
 
Mais je note ta syntaxe :jap: Effectivement, FireFox m'affiche le path avec des // et des / et non des \
 

n°1517750
antp
Super Administrateur
Champion des excuses bidons
Posté le 21-02-2007 à 16:01:54  profilanswer
 

Sinon des guillemets autour du nom de fichier c'est toujours une bonne chose pour éviter les problèmes d'espaces ;)
Que ce soit pour le chemin de l'exe ou le document que tu lui passes, ça a moins de chances de foirer (d'ailleurs ça m'étonne que ça marche dans ton dernier exemple, malgré les espaces)

Message cité 1 fois
Message édité par antp le 21-02-2007 à 16:02:27
n°1517770
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 21-02-2007 à 16:17:35  profilanswer
 

fourmip [:draschke]

n°1517909
HERIBERT
Posté le 21-02-2007 à 18:30:58  profilanswer
 

antp a écrit :

Sinon des guillemets autour du nom de fichier c'est toujours une bonne chose pour éviter les problèmes d'espaces ;)
Que ce soit pour le chemin de l'exe ou le document que tu lui passes, ça a moins de chances de foirer (d'ailleurs ça m'étonne que ça marche dans ton dernier exemple, malgré les espaces)


=> Harkonnen : pas compris "fourmip" :??:
=> Antp : je vais rajouter les guillemets.

n°1518165
antp
Super Administrateur
Champion des excuses bidons
Posté le 22-02-2007 à 10:49:43  profilanswer
 

HERIBERT a écrit :

=> Harkonnen : pas compris "fourmip" :??:


ant-p -> fourmi-p

mood
Publicité
Posté le 22-02-2007 à 10:49:43  profilanswer
 

n°1518244
HERIBERT
Posté le 22-02-2007 à 12:19:11  profilanswer
 

antp a écrit :

ant-p -> fourmi-p


Ah ! Bon !
 
"Antp" devient "fourmip" ! Faut suivre, faut suivre  :pt1cable:

n°1518253
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 22-02-2007 à 12:28:22  profilanswer
 

et comment on dit fourmi en anglais ? :o

n°1518262
HERIBERT
Posté le 22-02-2007 à 12:36:26  profilanswer
 

Harkonnen a écrit :

et comment on dit fourmi en anglais ? :o


Ahhh ! Moi comprendre :hot: Moi content :hot: Moi avoir appris un mot d'anglais avec Power Translator et HFR :bic:
 
Donc, l'un et l'aurte sont le même personnage. Voili-voilou.


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

  CreateProcess() qui marche pas !

 

Sujets relatifs
regex qui ne marche pasREQUETE MATCH ca marche toujours pas !
Mon site marche plus sur IE 7 ?Pb affichage css sous Firefox mais marche sous IE
Créer une étude de marché en ligne[Api Win32] CreateProcess / WaitForInputIdle / PostMessage
Mon scripte ne marche pas avec FireFox?Fonction FILE, file_get_contents qui marche pas toujours. Help!
hitTest qui marche pas[VC++] Comment marche CreateProcess (ou comment lancer une appli indé)
Plus de sujets relatifs à : CreateProcess() qui marche pas !


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR