P1: Notas.
ActiveX es una tenología que permite utilizar objetos OLE dentro de páginas web, siendo creados por Microsoft y siendo válidos desde la versión 3.0 del IE.
Es una tecnología que en el mundo web está bastante mal usada, y es la fuente de incursión de muchos tipos de datos peligrosos en nuestro PC por tener acceso al sistema de fichero de la persona que ejecuta el ActiveX, por lo que por seguridad siempre se encuentra desactivada la opción de ejecutar ActiveX. No obstante, los antivirus y antytroyanos ayudan a que ningún código peligros pudiera entrar.
No obstante, tiene sus ventajas el acceder a dichas propiedades de la colección de ActiveX, y yo, voy a poner algún ejemplo de ello.
-------------------------------
P2: Apertura, Lectura y Cierra de un fichero.
La función a la que llamaremos es:
Código PHP:
function lecturaActiveX(directorio,archivo)
{
// Creamos objeto a la librería FileSystemObject
var objSystem = new ActiveXObject("Scripting.FileSystemObject");
// Comprobamos que el directorio exista
if (fso.folderexists(directorio) == false)
return false;
else
{
var rutaCompleta = directorio + fichero;
// Comprobamos que el fichero exista
if(objSystem.FileExists(rutaCompleta ) == false)
return false;
else
{
// Abrimos el fichero con la ruta seleccionada
var objFichero = objSystem.OpenTextFile(rutaCompleta ,1);
// Método para leer el contenido del fichero
var datosFichero = objFichero.readall();
// Cierra de fichero
objFichero.close();
// Envío de la información, por ejemplo a un TextArea
return datosFichero ;
}
}
}
-------------------------------
P3: Apertura, Modificación y Cierre de un fichero.
Ahora lo mismo, pero modificando la información de un fichero con alguna nueva, es decir, haciendo una operación de agregación de datos, esta vez pondré un ejemplo tal cual tengo en un HTML:
Código PHP:
function guardadoInfo()
// Arreglo temporal con ActiveX para guardar el codigo en el fichero
modo = 1;
// Esta línea la podéis quitar :P
rutaCompleta = rTrim(app.replace(/Ç/g, '\\')) + nomFich;
// Creamos objeto FileSystemObject
var fso = new ActiveXObject("Scripting.FileSystemObject");
// Caso de que no exista el fichero
if(fso.FileExists(rutaCompleta) == false && modo==0)
return false;
// Si estamos en modo append guardamos todo el contenido del fichero
if(fso.FileExists(rutaCompleta) != false && modo==2)
{
fich = fso.OpenTextFile(rutaCompleta,1);
temporal = fich.readall();
fich.close();
}
else
temporal = "";
// Objeto para crear un nuevo fichero con la info del antiguo más lo que queremos agregar
fich = fso.CreateTextFile(rutaCompleta,2);
// Escribimos dicho contenido en el objeto fich
fich.write(temporal + document.getElementById("codigo").innerText);
// Cierra del fichero
fich.close();
}
P4: Ejecución de comandos mediante ActiveX.
Código PHP:
function ejecutaComando()
{
// Creamos objeto shell
var objShell= new ActiveXObject("WScript.Shell");
// Parámetro 1 -> Ruta: Ruta completa con el comando a ejecutar
// Parámetro 2 -> Modo: 0: Oculto, 1: normal, 2: minimizado, 3: maximizado, 4: normal sin foco
// Parámetro 3 -> Instancia: false:Múltiples instancias, true: Solo una.
var ejecuta = objShell.run("C:\\ARCHIV~1\\OFFICE\\WORD.EXE, 2, true);
return ejecuta;
}
Como véis, lo que se puede hacer es realmente grande, pero exige que el administrador de la máquina tiene una configuración bien realizada para que solamente ejecute ActiveX de confianza, bien de una determinada web, o bien de una determinada intraner, o bien de un determinado grupo de dominios.
Saludos