CreateProcess() qui marche pas !

CreateProcess() qui marche pas ! - Delphi/Pascal - Programmation

Marsh Posté le 18-02-2007 à 19:27:18    

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
Reply

Marsh Posté le 18-02-2007 à 19:27:18   

Reply

Marsh Posté le 18-02-2007 à 19:30:40    

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

Reply

Marsh Posté le 18-02-2007 à 22:10:51    

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]

Reply

Marsh Posté le 18-02-2007 à 22:24:06    

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

Reply

Marsh Posté le 19-02-2007 à 10:01:57    

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;


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

Reply

Marsh Posté le 19-02-2007 à 13:19:35    

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 \
 

Reply

Marsh Posté le 21-02-2007 à 16:01:54    

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
Reply

Marsh Posté le 21-02-2007 à 16:17:35    

fourmip [:draschke]

Reply

Marsh Posté le 21-02-2007 à 18:30:58    

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.

Reply

Marsh Posté le 22-02-2007 à 10:49:43    

HERIBERT a écrit :

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


ant-p -> fourmi-p

Reply

Marsh Posté le 22-02-2007 à 10:49:43   

Reply

Marsh Posté le 22-02-2007 à 12:19:11    

antp a écrit :

ant-p -> fourmi-p


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

Reply

Marsh Posté le 22-02-2007 à 12:28:22    

et comment on dit fourmi en anglais ? :o

Reply

Marsh Posté le 22-02-2007 à 12:36:26    

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.

Reply

Sujets relatifs:

Leave a Replay

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