Je lance depuis une page Web, avec un ActiveX, des exécutables installés sur le PC de l’utilisateur.
J’utilise deux types de lanceurs Javascript, l’un spécialisé pour les composants d’Office, l’autre général, que j’avais trouvé sur des sites.
Pour lancer Word (Excel, PPT), j’utilise cette fonction :
[code]
function lancerword(doc) //~~ Lancer une application ~~
{
var app_word = new ActiveXObject("Word.Application");
app_word.Application.Visible = true;
try { app_word.documents.open(doc); }
catch(erreur) { }
}
[/code]
Pour lancer un autre exécutable (Picasa par exemple), j’utilise cette fonction :
[code]
function lancerstart(exe) //~~ Run ~~
{ var w = new ActiveXObject("WScript.Shell");
//w.run ('start "'+exe+'"'); // windows 98
w.run ('cmd /c "'+exe+'"'); // windows XP
// w.run ('cmd /k "'+exe+'"'); // debugging windows XP
// alert(exe);
}
[/code]
Mes maigres connaissances en JS ne me permettent pas de comprendre si le lanceur Word présente un avantage sur le lanceur général.
Ma question : quel bénéfice y aurait-il à utiliser lancerword plutôt que lancerstart pour lancer Word alors que le résultat semble être identique ?
Car, s’il n’y a pas de bénéfice, je préférerai utiliser toujours la même fonction lancerstart, pour simplifier mon code.
Non, dans votre première fonction, "lancerword()", cela ouvre un DOCUMENT
Dans votre deuxièmre fonction, "lancerstart()", cela lance une APPLICATION
Donc, déjà, c'est différent.
"Pour lancer Word (Excel, PPT), j’utilise cette fonction"
Non, pour word, OK, c'est bien "documents.open"
Pour excel, par exemple, c'est "Workbooks.open"
Enfin, pour XP Home, peut-être, mais je n'en suis pas sûr, mais pour XP Pro, ce n'est pas "run ('cmd /c "'+exe+'"')" mais plutôt "run ('cmd /c "start '+exe+'"')"
Quelques exemples pour illustrer :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<meta name="generator" content="PSPad editor, www.pspad.com">
<script language="javascript">
<!--
function lancerword(doc) //~~ Lancer une application ~~ typo (NON, OUVRIR UN DOCUMENT)
{
var app_word = new ActiveXObject("Word.Application");
app_word.Application.Visible = true;
app_word.documents.open(doc);
}
function lancerexcel(doc) //~~ Lancer une application ~~ typo (NON, OUVRIR UN DOCUMENT)
{
var app_excel = new ActiveXObject("excel.Application");
app_excel.Application.Visible = true;
app_excel.Workbooks.open(doc);
}
function lancerstart(exe) //~~ Run ~~
{ var w = new ActiveXObject("WScript.Shell");
//w.run ('cmd /c "'+exe+'"'); // windows XP
w.run ('cmd /c "start '+exe+'"'); // windows XP
}
//-->
</script>
</head>
<body>
<a onclick="lancerword('http://127.0.0.1/francoisch_cacher_div/toto.doc')" href="#">lance un document word DANS WORD EN LECTURE SEULE</a><br/>
<a onclick="lancerexcel('http://127.0.0.1/francoisch_cacher_div/toto.xls')" href="#">lance un document excel DANS EXCEL EN LECTURE SEULE</a><br/>
<br/>
<a onclick="lancerstart('http://127.0.0.1/francoisch_cacher_div/toto.doc')" href="#">lance un document word DANS LE NAVIGATEUR avec demande "ouvrir" ou "enregistrer"</a><br/>
<a onclick="lancerstart('http://127.0.0.1/francoisch_cacher_div/toto.xls')" href="#">lance un document excel DANS LE NAVIGATEUR avec demande "ouvrir" ou "enregistrer"</a><br/>
<br/>
<a onclick="lancerstart('toto.xls')" href="#">NE TROUVE PAS LE FICHIER EXCEL POURTANT PLACE AU MEME NIVEAU</a><br/>
<a onclick="lancerstart('toto.doc')" href="#">NE TROUVE PAS LE FICHIER WORD POURTANT PLACE AU MEME NIVEAU</a><br/>
<br/>
<a onclick="lancerstart('excel')" href="#">lance excel SEUL</a><br/>
<a onclick="lancerstart('winword')" href="#">lance word SEUL</a><br/>
<br/>
</body>
</html>
Donc, en fait, ce n'est pas une ou deux fonctions, pour ouvrir un document, mais autant de fonctions que de type de fichier Office.
Par contre, pour ouvrir seulement l'application, "lancerstart()" passe partout.
J’ai fait un test en ouvrant le même document Word installé sur mon PC (avec un ActiveX) ; voici les lignes de commande :
[code]
onclick="lancerstart('F:\\isipc\\martinot\\bureautiqueC\\Word PC Perso.doc')"
onclick='lancerword("F:\\isipc\\martinot\\bureautiqueC\\Word PC Perso.doc")'
[/code]
J’ai obtenu l’ouverture de mon document dans une fenêtre Word à chaque fois.
Par contre, si je comprend tes infos, si j’essaie d’ouvrir un document Word sur mon site Web :
• Avec lancerword, le document s’ouvre dans Word en lecture seule
• Avec lancerstart, le navigateur propose Ouvrir (dans le navigateur) ou Enregistrer
Oui, pour Excel, c’est Workbooks, pour PPT, c’est Presentations.
Qqes compléments:
- dans lancerstart
"run ('cmd /c "'+exe+'"')" convient pour ouvrir un document installé sur le PC
"run ('cmd /c "start '+exe+'"')" convient pour un document installé sur le site
pourquoi?
- une autre possibilité pour ouvrir un document sur le site: window.open, pour un résultat analogue à celui de lancerstart
Désolé, mais je ne me sers pas de OpenOffice. Donc je n'ai aucun moyen de vérifier.
Je dirai que pour lancer l'application, il ne doit pas y avoir de problème avec "lancerstart()" avec le nom de l'appli en paramètre, genre onclick="lancerstart('winword')".
Mais pour ouvrir un fichier, je ne peux pas vous le confirmer, d'autant que le ".doc" n'est pas un natif de OO.