On me demande dans un programme écrit en Perl/Tk d'ajouter une aide en
ligne.
Sous unix, je compte faire une arborescence de fichiers HTML et
appeler le navigateur par défaut pour la consultation.
Sous Windows, on me demande d'utiliser un fichier CHM (il me sera
fourni... ouf!). J'ai donc le chemin du fichier CHM. Mais je ne sais
pas quoi en faire car je ne connais pas la commande Windows standard
qui assure la consultation de ce genre de fichiers.
Auriez-vous une solution ?
Merci.
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
À (at) Thu, 21 Feb 2008 18:10:21 +0100, mdnews écrivait (wrote):
Rien de spécial à faire car l'extension est déjà associée (à winhlp32 ou hh) dans windows. Donc un simple:
system 'aide.chm';
ou
system 'start aide.chm';
start permet de lancer le fichier et rend la main
Ok. Je vais tester cette solution.
Merci.
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
Paul Gaborit
À (at) Thu, 21 Feb 2008 18:10:21 +0100, mdnews écrivait (wrote):
On Thu, 21 Feb 2008 17:31:50 +0100, Paul Gaborit wrote:
Sous Windows, on me demande d'utiliser un fichier CHM (il me sera fourni... ouf!). J'ai donc le chemin du fichier CHM. Mais je ne sais pas quoi en faire car je ne connais pas la commande Windows standard qui assure la consultation de ce genre de fichiers.
Auriez-vous une solution ?
Rien de spécial à faire car l'extension est déjà associée (à winhlp32 ou hh) dans windows. Donc un simple:
system 'aide.chm';
ou
system 'start aide.chm';
start permet de lancer le fichier et rend la main
J'ai mis en oeuvre... et j'ai un petit problème. Avec 'start' utilisé comme ça :
system "start", "monfichier.chm";
je n'ai qu'une interpréteur de commandes qui s'ouvre et pas de doc chm. Et si je fais comme ça :
system "monfichier.chm";
il faut attendre que l'utilisateur quitte l'aide pour que 'system' rende la main et, donc, que l'appli Tk continue à fonctionner (c'est un peu embêtant pour une aide en ligne).
Auriez-vous une solution ?
Merci.
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
À (at) Thu, 21 Feb 2008 18:10:21 +0100,
mdnews <mdnews@wanadoo.fr> écrivait (wrote):
On Thu, 21 Feb 2008 17:31:50 +0100, Paul Gaborit
<Paul.Gaborit@invalid.invalid> wrote:
Sous Windows, on me demande d'utiliser un fichier CHM (il me sera
fourni... ouf!). J'ai donc le chemin du fichier CHM. Mais je ne sais
pas quoi en faire car je ne connais pas la commande Windows standard
qui assure la consultation de ce genre de fichiers.
Auriez-vous une solution ?
Rien de spécial à faire car l'extension est déjà associée (à winhlp32
ou hh) dans windows. Donc un simple:
system 'aide.chm';
ou
system 'start aide.chm';
start permet de lancer le fichier et rend la main
J'ai mis en oeuvre... et j'ai un petit problème. Avec 'start' utilisé
comme ça :
system "start", "monfichier.chm";
je n'ai qu'une interpréteur de commandes qui s'ouvre et pas de doc
chm. Et si je fais comme ça :
system "monfichier.chm";
il faut attendre que l'utilisateur quitte l'aide pour que 'system'
rende la main et, donc, que l'appli Tk continue à fonctionner (c'est
un peu embêtant pour une aide en ligne).
Auriez-vous une solution ?
Merci.
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
À (at) Thu, 21 Feb 2008 18:10:21 +0100, mdnews écrivait (wrote):
On Thu, 21 Feb 2008 17:31:50 +0100, Paul Gaborit wrote:
Sous Windows, on me demande d'utiliser un fichier CHM (il me sera fourni... ouf!). J'ai donc le chemin du fichier CHM. Mais je ne sais pas quoi en faire car je ne connais pas la commande Windows standard qui assure la consultation de ce genre de fichiers.
Auriez-vous une solution ?
Rien de spécial à faire car l'extension est déjà associée (à winhlp32 ou hh) dans windows. Donc un simple:
system 'aide.chm';
ou
system 'start aide.chm';
start permet de lancer le fichier et rend la main
J'ai mis en oeuvre... et j'ai un petit problème. Avec 'start' utilisé comme ça :
system "start", "monfichier.chm";
je n'ai qu'une interpréteur de commandes qui s'ouvre et pas de doc chm. Et si je fais comme ça :
system "monfichier.chm";
il faut attendre que l'utilisateur quitte l'aide pour que 'system' rende la main et, donc, que l'appli Tk continue à fonctionner (c'est un peu embêtant pour une aide en ligne).
Auriez-vous une solution ?
Merci.
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
Paul Gaborit
À (at) Wed, 19 Mar 2008 18:20:02 +0100, mdnews écrivait (wrote):
- Ce sont des « ' » et pas « " » (important) - Start est juste séparé par un espace du programme qu'il lance
Ok, donc on est obligé de passer par l'interpréteur de commandes en faisant :
systeme "start lechemindufichier.chm";
et non :
systeme "start", "lechemindufichier.chm";
qui évite de passer par l'interpréteur mais ne fonctionne pas...
Je viens de retester pour voir (petit exemple qui affiche l'aide de ntbackup) %windir%system32 est une variable Windows
print "Debut du programmen"; system 'start %windir%system32ntbackup.chm'; print "Suite - L'aide est toujours afficheen";
Ok. Alors ma question devient : comment protéger correctement un chemin dans l'interpréteur de commandes de Windows ?
En fait, je ne contrôle pas le chemin où est placé ce fichier CHM. Ça peut être 'C:fichier.chm' ou 'C:Program FilesMachinfichier.chm' ou n'importe quoi d'autre (un chemin avec potentiellement tous les caractères autorisés par Windows).
Or, si je passe brutalement :
system 'start C:/Program Files/Machin/fichier.chm';
l'interpréteur windows coupe après Program !
D'accord, je peux préfixé les espaces par . Mais il y a peut-être d'autres caractères qui risquent de poser problème...
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
À (at) Wed, 19 Mar 2008 18:20:02 +0100,
mdnews <mdnews@mail.is.invalid> écrivait (wrote):
- Ce sont des « ' » et pas « " » (important)
- Start est juste séparé par un espace du programme qu'il lance
Ok, donc on est obligé de passer par l'interpréteur de commandes en
faisant :
systeme "start lechemindufichier.chm";
et non :
systeme "start", "lechemindufichier.chm";
qui évite de passer par l'interpréteur mais ne fonctionne pas...
Je viens de retester pour voir
(petit exemple qui affiche l'aide de ntbackup)
%windir%system32 est une variable Windows
print "Debut du programmen";
system 'start %windir%system32ntbackup.chm';
print "Suite - L'aide est toujours afficheen";
Ok. Alors ma question devient : comment protéger correctement un
chemin dans l'interpréteur de commandes de Windows ?
En fait, je ne contrôle pas le chemin où est placé ce fichier CHM. Ça
peut être 'C:fichier.chm' ou 'C:Program FilesMachinfichier.chm' ou
n'importe quoi d'autre (un chemin avec potentiellement tous les
caractères autorisés par Windows).
Or, si je passe brutalement :
system 'start C:/Program Files/Machin/fichier.chm';
l'interpréteur windows coupe après Program !
D'accord, je peux préfixé les espaces par . Mais il y a peut-être
d'autres caractères qui risquent de poser problème...
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
À (at) Wed, 19 Mar 2008 18:20:02 +0100, mdnews écrivait (wrote):
- Ce sont des « ' » et pas « " » (important) - Start est juste séparé par un espace du programme qu'il lance
Ok, donc on est obligé de passer par l'interpréteur de commandes en faisant :
systeme "start lechemindufichier.chm";
et non :
systeme "start", "lechemindufichier.chm";
qui évite de passer par l'interpréteur mais ne fonctionne pas...
Je viens de retester pour voir (petit exemple qui affiche l'aide de ntbackup) %windir%system32 est une variable Windows
print "Debut du programmen"; system 'start %windir%system32ntbackup.chm'; print "Suite - L'aide est toujours afficheen";
Ok. Alors ma question devient : comment protéger correctement un chemin dans l'interpréteur de commandes de Windows ?
En fait, je ne contrôle pas le chemin où est placé ce fichier CHM. Ça peut être 'C:fichier.chm' ou 'C:Program FilesMachinfichier.chm' ou n'importe quoi d'autre (un chemin avec potentiellement tous les caractères autorisés par Windows).
Or, si je passe brutalement :
system 'start C:/Program Files/Machin/fichier.chm';
l'interpréteur windows coupe après Program !
D'accord, je peux préfixé les espaces par . Mais il y a peut-être d'autres caractères qui risquent de poser problème...
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
Paul Gaborit
À (at) Thu, 20 Mar 2008 11:38:01 +0100, mdnews écrivait (wrote):
Paul Gaborit >
system 'start C:/Program Files/Machin/fichier.chm';
l'interpréteur windows coupe après Program !
L'interprétation faite par windows est toujours un peu bizarre, car start n'est pas un programme, mais une commande interne, du coup passé en argument 0 ça ne fonctionne pas.
On peut bricoler en utilisant les noms courts
system ' start C:/Progra~1/Machin/fichier.chm ' ;
(pour connaître le nom court (8+3) d'un fichier ou répertoire)
DIR /X
Je veux bien bricoler... mais comment fait-on pour convertir un nom long en nom court depuis un script Perl ?
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
À (at) Thu, 20 Mar 2008 11:38:01 +0100,
mdnews <mdnews@wanadoo.fr> écrivait (wrote):
Paul Gaborit >
system 'start C:/Program Files/Machin/fichier.chm';
l'interpréteur windows coupe après Program !
L'interprétation faite par windows est toujours un peu bizarre, car start
n'est pas un programme, mais une commande interne, du coup passé en
argument 0 ça ne fonctionne pas.
On peut bricoler en utilisant les noms courts
system ' start C:/Progra~1/Machin/fichier.chm ' ;
(pour connaître le nom court (8+3) d'un fichier ou répertoire)
DIR /X
Je veux bien bricoler... mais comment fait-on pour convertir un nom
long en nom court depuis un script Perl ?
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
À (at) Thu, 20 Mar 2008 11:38:01 +0100, mdnews écrivait (wrote):
Paul Gaborit >
system 'start C:/Program Files/Machin/fichier.chm';
l'interpréteur windows coupe après Program !
L'interprétation faite par windows est toujours un peu bizarre, car start n'est pas un programme, mais une commande interne, du coup passé en argument 0 ça ne fonctionne pas.
On peut bricoler en utilisant les noms courts
system ' start C:/Progra~1/Machin/fichier.chm ' ;
(pour connaître le nom court (8+3) d'un fichier ou répertoire)
DIR /X
Je veux bien bricoler... mais comment fait-on pour convertir un nom long en nom court depuis un script Perl ?
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
jl_morel
Dans l'article , a dit...
Je veux bien bricoler... mais comment fait-on pour convertir un nom long en nom court depuis un script Perl ?
Pour convertir un nom long en court, on utilise GetShortPathName du module Win32 (standard) :
Plus généralement, j'ai bien cherché mais n'ai trouvé aucun module pour le système d'aide Windows. Alors j'en ai écrit un en vitesse. Il n'est pas très élaboré mais il permet d'ouvrir un fichier .chm où on veut. Il s'appelle Win32-HtmlHelp. La doc est minimale. Semble fonctionner sous XP et Vista (tests minimum).
Plus généralement, j'ai bien cherché mais n'ai trouvé aucun module pour le
système d'aide Windows. Alors j'en ai écrit un en vitesse. Il n'est pas
très élaboré mais il permet d'ouvrir un fichier .chm où on veut.
Il s'appelle Win32-HtmlHelp. La doc est minimale.
Semble fonctionner sous XP et Vista (tests minimum).
Plus généralement, j'ai bien cherché mais n'ai trouvé aucun module pour le système d'aide Windows. Alors j'en ai écrit un en vitesse. Il n'est pas très élaboré mais il permet d'ouvrir un fichier .chm où on veut. Il s'appelle Win32-HtmlHelp. La doc est minimale. Semble fonctionner sous XP et Vista (tests minimum).
Plus généralement, j'ai bien cherché mais n'ai trouvé aucun module pour le système d'aide Windows. Alors j'en ai écrit un en vitesse. Il n'est pas très élaboré mais il permet d'ouvrir un fichier .chm où on veut. Il s'appelle Win32-HtmlHelp. La doc est minimale. Semble fonctionner sous XP et Vista (tests minimum).
À essayer, en espérant que ça aide. Toute suggestion est bienvenue.
Merci aussi pour ce module. Je le teste dès ce soir.
J'aurais aimé ne pas dépendre de modules spécifiquement Windows pour éviter un test explicite de la plateforme dans mon programme. Mais, je vois bien que je n'y couperai pas... :-( (vous pourrez objecter avec raison qu'un fichier CHM est déjà explicitement lié à Windows...)
En tous cas, merci pour votre aide précieuse à tous les deux.
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
À (at) 20 Mar 2008 11:59:16 GMT,
jl_morel@bribes.org (Jean-Louis MOREL) écrivait (wrote):
Dans l'article <wt9k5jxu126.fsf@marceau.enstimac.fr>,
Paul.Gaborit@invalid.invalid a dit...
Je veux bien bricoler... mais comment fait-on pour convertir un nom
long en nom court depuis un script Perl ?
Pour convertir un nom long en court, on utilise GetShortPathName du module
Win32 (standard) :
Plus généralement, j'ai bien cherché mais n'ai trouvé aucun module pour le
système d'aide Windows. Alors j'en ai écrit un en vitesse. Il n'est pas
très élaboré mais il permet d'ouvrir un fichier .chm où on veut.
Il s'appelle Win32-HtmlHelp. La doc est minimale.
Semble fonctionner sous XP et Vista (tests minimum).
À essayer, en espérant que ça aide.
Toute suggestion est bienvenue.
Merci aussi pour ce module. Je le teste dès ce soir.
J'aurais aimé ne pas dépendre de modules spécifiquement Windows pour
éviter un test explicite de la plateforme dans mon programme. Mais, je
vois bien que je n'y couperai pas... :-(
(vous pourrez objecter avec raison qu'un fichier CHM est déjà
explicitement lié à Windows...)
En tous cas, merci pour votre aide précieuse à tous les deux.
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
Plus généralement, j'ai bien cherché mais n'ai trouvé aucun module pour le système d'aide Windows. Alors j'en ai écrit un en vitesse. Il n'est pas très élaboré mais il permet d'ouvrir un fichier .chm où on veut. Il s'appelle Win32-HtmlHelp. La doc est minimale. Semble fonctionner sous XP et Vista (tests minimum).
À essayer, en espérant que ça aide. Toute suggestion est bienvenue.
Merci aussi pour ce module. Je le teste dès ce soir.
J'aurais aimé ne pas dépendre de modules spécifiquement Windows pour éviter un test explicite de la plateforme dans mon programme. Mais, je vois bien que je n'y couperai pas... :-( (vous pourrez objecter avec raison qu'un fichier CHM est déjà explicitement lié à Windows...)
En tous cas, merci pour votre aide précieuse à tous les deux.
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
M
À (at) Thu, 20 Mar 2008 11:38:01 +0100, mdnews écrivait (wrote):
Paul Gaborit >
system 'start C:/Program Files/Machin/fichier.chm';
l'interpréteur windows coupe après Program !
L'interprétation faite par windows est toujours un peu bizarre, car start n'est pas un programme, mais une commande interne, du coup passé en argument 0 ça ne fonctionne pas.
On peut bricoler en utilisant les noms courts
system ' start C:/Progra~1/Machin/fichier.chm ' ;
(pour connaître le nom court (8+3) d'un fichier ou répertoire)
DIR /X
Je veux bien bricoler... mais comment fait-on pour convertir un nom long en nom court depuis un script Perl ?
Bonjour,
Je ne sais pas si je comprends bien le problème, mais pour lancer des programmes externes, j'utilise system sous Unix et Win32::Process sous windows, XP dans mon cas. Win32 permet de configurer aussi certaines choses (pas de fenêtre dos pour des batchs). Voir CPAN pour plus d'information.
J'espère que ça pourra aider.
Marko
À (at) Thu, 20 Mar 2008 11:38:01 +0100,
mdnews <mdnews@wanadoo.fr> écrivait (wrote):
Paul Gaborit >
system 'start C:/Program Files/Machin/fichier.chm';
l'interpréteur windows coupe après Program !
L'interprétation faite par windows est toujours un peu bizarre, car start
n'est pas un programme, mais une commande interne, du coup passé en
argument 0 ça ne fonctionne pas.
On peut bricoler en utilisant les noms courts
system ' start C:/Progra~1/Machin/fichier.chm ' ;
(pour connaître le nom court (8+3) d'un fichier ou répertoire)
DIR /X
Je veux bien bricoler... mais comment fait-on pour convertir un nom
long en nom court depuis un script Perl ?
Bonjour,
Je ne sais pas si je comprends bien le problème, mais pour lancer des
programmes externes, j'utilise system sous Unix et Win32::Process sous
windows, XP dans mon cas.
Win32 permet de configurer aussi certaines choses (pas de fenêtre dos
pour des batchs). Voir CPAN pour plus d'information.
À (at) Thu, 20 Mar 2008 11:38:01 +0100, mdnews écrivait (wrote):
Paul Gaborit >
system 'start C:/Program Files/Machin/fichier.chm';
l'interpréteur windows coupe après Program !
L'interprétation faite par windows est toujours un peu bizarre, car start n'est pas un programme, mais une commande interne, du coup passé en argument 0 ça ne fonctionne pas.
On peut bricoler en utilisant les noms courts
system ' start C:/Progra~1/Machin/fichier.chm ' ;
(pour connaître le nom court (8+3) d'un fichier ou répertoire)
DIR /X
Je veux bien bricoler... mais comment fait-on pour convertir un nom long en nom court depuis un script Perl ?
Bonjour,
Je ne sais pas si je comprends bien le problème, mais pour lancer des programmes externes, j'utilise system sous Unix et Win32::Process sous windows, XP dans mon cas. Win32 permet de configurer aussi certaines choses (pas de fenêtre dos pour des batchs). Voir CPAN pour plus d'information.
J'espère que ça pourra aider.
Marko
Klaus
On Mar 19, 7:45 pm, Paul Gaborit wrote:
Or, si je passe brutalement :
system 'start C:/Program Files/Machin/fichier.chm';
l'interpréteur windows coupe après Program !
Voici comment se protéger contre des blancs :
si le système d'exploitation est Windows, alors utiliser des guillemets pour se protéger contre des blancs sinon mettre systématiquement des anti-slash "" devant les blancs
Malheureusement, chaque système d'exploitation a sa propre méthode pour se protéger contre les blancs: --> la méthode Windows ne marche pas sous Unix et la méthode ne marche pas sous Windows.
On Mar 19, 7:45 pm, Paul Gaborit <Paul.Gabo...@invalid.invalid> wrote:
Or, si je passe brutalement :
system 'start C:/Program Files/Machin/fichier.chm';
l'interpréteur windows coupe après Program !
Voici comment se protéger contre des blancs :
si le système d'exploitation est Windows, alors
utiliser des guillemets pour se protéger contre des blancs
sinon
mettre systématiquement des anti-slash "" devant les blancs
Malheureusement, chaque système d'exploitation a sa propre méthode
pour se protéger contre les blancs: --> la méthode Windows ne marche
pas sous Unix et la méthode ne marche pas sous Windows.
system 'start C:/Program Files/Machin/fichier.chm';
l'interpréteur windows coupe après Program !
Voici comment se protéger contre des blancs :
si le système d'exploitation est Windows, alors utiliser des guillemets pour se protéger contre des blancs sinon mettre systématiquement des anti-slash "" devant les blancs
Malheureusement, chaque système d'exploitation a sa propre méthode pour se protéger contre les blancs: --> la méthode Windows ne marche pas sous Unix et la méthode ne marche pas sous Windows.