Newsgroup: it.comp.lang.javascript
Titolo: testare un file o una directory su C:\

ciao a tutti
forse l'argomento è già stato dibattuto ma ci provo di nuovo.
1) E' possibile con Javascript fare il test se un file è presente su C:\
????
2) E' possibile sapere se una determinata stampante è installata sul PC ?
Se si' avete degli esempi ? (facili)
complimenti al newsgroup , è bellissimo
saluti a tutti

 2) E' possibile sapere se una determinata stampante è installata sul
PC ?
Questo credo che non si possa fare neanche in una intranet...

Questo credo che non si possa fare neanche in una intranet...
Forse qualcosa con Mozilla ma non garantisco nulla, non mi sono
studiato l'XPCOM per la stampa tanto da poter rispondere.
'bye

 iframe nascosto e dopo fare i tuoi controlli...
il mio problema è di verificare su una Intranet che esista un file .exe
sempre nella stessa cartella del PC locale dell'utente.
La domanda è correlata alla seconda domanda.
Si tratta di una stampante "virtuale" che crea dei files .PDF (CutePDF).
Dato che non ho voglia (e tempo) di girare 200 PC per installare il driver,
vorrei testare
l'esistenza del .EXE in locale sul PC dell'utente e, se non esiste fare
partire in automatico l'installazione
richiamando un url sul server.
Avete degli esempi pratici ?
"PS" <p...@t.it.invalid> ha scritto nel messaggio
news:c7gibe$gjb$1...@lacerta.tiscalinet.it...


 2) E' possibile sapere se una determinata stampante è installata sul PC ?
stessa risposta.
-- 
Splendente in eta` acerba di passione
Rosso fiammante
Ma senza eta` matura
Marcia impostura

Avete degli esempi pratici ?
Solo per la verifica che esista un file (testato su Mozilla e IE6):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html 
     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
">
<html xmlns="
http://www.w3.org/1999/xhtml
" xml:lang="en" lang="en">
<head>
<script type="text/javascript">
function testfile(filename){
 if(typeof(document.all)=="object"){
	fso = new ActiveXObject("Scripting.FileSystemObject");
	try{
	 if(fso.FileExists(filename)){
		alert("Il file esiste");
	 } else {
		alert("il file non esiste");
	 }	
	} catch(e){ alert("ActiveX error: "+e.message); }  	
 } else if(typeof(netscape)=="object"){
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
	 try{
	  var classes = Components.classes;
	  var interfaces = Components.interfaces;
	  var LOCALFILE_CTRID = "@
mozilla.org/file/local;1
";
	  var nsILocalFile = interfaces.nsILocalFile;
	 } catch(e){ alert("XPCOM error: "+e.message); }  
	 try{
	  localFile =
classes[LOCALFILE_CTRID].createInstance(nsILocalFile);
	  localFile.initWithPath(filename);
	 } catch(e){ alert("init nsILocalFile: "+e.message); }
	 try{
	  if(this.localFile.exists()){
		alert("Il file esiste");
	  } else {
		alert("il file non esiste");
	  }
	 } catch(e){ alert("error: "+e.message); }
 } else {
	alert("impossibile determinare l'esistenza del file");
 }
}
</script>
</head>
<body>
<a href="#" onclick="testfile('c:\\pippo.txt');return
false;">test</a><br/>
</body>
</html>
*NB*: 
1)
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
Visualizza un dialog che richiede all'utente la conferma all'utilizzo
di XPCOM. Se l'utente risponde di no allora lo script non funziona.
Per evitare questo devi lavorare con signed scripts oppure con
un'applicazione in XUL installata nel chrome system.
2) 
  new ActiveXObject("Scripting.FileSystemObject");
Se IE e' configurato bene visualizza un dialog che richiede all'utente
la conferma all'utilizzo di ActiveX ("...potenzialmente dannosa"). Se
l'utente risponde di no allora lo script non funziona.
'bye

 ha scritto nel
messaggio news:mvlp90tecdn7eutr3...@4ax.com...


 	  if(this.localFile.exists()){
Questo "this" ti e' rimasto come "rimasuglio" da qualche parte, suppongo. 
:) 
Un altro dubbio e': Come mai tutto questi try/catch? Potrebbero andar bene 
in fase di debugging, magari, ma - IMVHO - ne basta al massimo un paio, 
giusto per differenziare, in caso, tra errore IE e errore Gecko.
Riassumendo, qualcosa tipo:
function fileExists(filename){
	var file;
 
	if (typeof window.ActiveXObject=="function"){		
		try{
			file = new ActiveXObject("Scripting.FileSystemObject");
			return file.FileExists(filename);
		}catch(e){
			alert("ActiveX error: "+e.message);
			return false;
		}
	}else if (typeof netscape=="object" && netscape!=null){		
	    try{
 
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
 
			with 
(Components.classes["@
mozilla.org/file/local;1
"].createInstance(Components.interfaces.nsILocalFile) 
){
				initWithPath(filename);
				return exists();
			}
		}catch(e){
			alert("XPCOM error: "+ (e.message||e) );
			return false;
		}
	}
}
Che ne pensi?
-- 
C'ya,
  ZER0 :: coder.gfxer.webDesigner();
"Lo dice il buon senso, ma il buon senso non e' uno standard".
(Jeffrey Zeldman)

Che ne pensi?
Che va bene, ottimo :-)
'bye

 Che va bene, ottimo :-)
:)
