166 lines
8.0 KiB
JavaScript
166 lines
8.0 KiB
JavaScript
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
|
|
// Especifica el nombre del archivo que deseas generar
|
|
const nombreArchivo = path.join('C:', 'RpaClaro', 'macrologin.mac');
|
|
|
|
|
|
// Función para verificar y eliminar el archivo
|
|
function verificarYEliminarArchivo(nombreArchivo) {
|
|
if (fs.existsSync(nombreArchivo)) {
|
|
try {
|
|
// fs.unlinkSync(nombreArchivo); // Descomentar para eliminar el archivo
|
|
console.log(`Se ha eliminado el archivo '${nombreArchivo}'.`);
|
|
} catch (e) {
|
|
console.log(`Error al eliminar el archivo '${nombreArchivo}': ${e}`);
|
|
}
|
|
} else {
|
|
console.log(`El archivo '${nombreArchivo}' no existe.`);
|
|
}
|
|
}
|
|
|
|
// Función para generar el archivo
|
|
function generarArchivo(nombreArchivo, contenido) {
|
|
try {
|
|
// Crea el archivo y escribe el contenido
|
|
fs.writeFileSync(nombreArchivo, contenido, 'utf8');
|
|
console.log(`Se ha generado el archivo '${nombreArchivo}' con éxito.`);
|
|
} catch (e) {
|
|
console.log(`Error al generar el archivo '${nombreArchivo}': ${e}`);
|
|
}
|
|
}
|
|
|
|
function rr(usuario, password) {
|
|
|
|
// Ahora, formateamos el texto para insertar el valor de "valor_variable" en el lugar correcto.
|
|
const texto = `<HAScript name="macrologin" description="" timeout="60000" pausetime="300" promptall="true" blockinput="true" author="Usuario" creationdate="19/07/2023 07:57:48 PM" supressclearevents="false" usevars="true" ignorepauseforenhancedtn="true" delayifnotenhancedtn="0" ignorepausetimeforenhancedtn="true" continueontimeout="false">
|
|
<screen name="Pantalla1" entryscreen="true" exitscreen="true" transient="false">
|
|
<description >
|
|
<oia status="NOTINHIBITED" optional="false" invertmatch="false" />
|
|
<numfields number="184" optional="true" invertmatch="false" />
|
|
<numinputfields number="6" optional="true" invertmatch="false" />
|
|
</description>
|
|
<actions>
|
|
<input value="'${usuario}[tab]'" row="0" col="0" movecursor="true" xlatehostkeys="true" encrypted="false" />
|
|
<input value="'${password}'" row="0" col="0" movecursor="true" xlatehostkeys="true" encrypted="false" />
|
|
<input value="'[enter]'" row="0" col="0" movecursor="true" xlatehostkeys="true" encrypted="false" />
|
|
<input value="'[sysreq]'" row="0" col="0" movecursor="true" xlatehostkeys="true" encrypted="false" />
|
|
<input value="'1'" row="0" col="0" movecursor="true" xlatehostkeys="true" encrypted="false" />
|
|
<input value="'[enter]'" row="0" col="0" movecursor="true" xlatehostkeys="true" encrypted="false" />
|
|
<input value="'${usuario}[tab]'" row="0" col="0" movecursor="true" xlatehostkeys="true" encrypted="false" />
|
|
<input value="'${password}'" row="0" col="0" movecursor="true" xlatehostkeys="true" encrypted="false" />
|
|
<input value="'[enter]'" row="0" col="0" movecursor="true" xlatehostkeys="true" encrypted="false" />
|
|
<input value="'[sysreq]'" row="0" col="0" movecursor="true" xlatehostkeys="true" encrypted="false" />
|
|
<input value="'1'" row="0" col="0" movecursor="true" xlatehostkeys="true" encrypted="false" />
|
|
<input value="'[enter]'" row="0" col="0" movecursor="true" xlatehostkeys="true" encrypted="false" />
|
|
</actions>
|
|
<nextscreens timeout="0" >
|
|
</nextscreens>
|
|
</screen>
|
|
</HAScript>`;
|
|
|
|
// Llamada para verificar y eliminar el archivo si existe
|
|
verificarYEliminarArchivo(nombreArchivo);
|
|
|
|
// Llamada para generar el nuevo archivo
|
|
generarArchivo(nombreArchivo, texto);
|
|
|
|
|
|
async function runAS400Launcher() {
|
|
const autoit = require("node-autoit-koffi");
|
|
const koffi = require("koffi");
|
|
autoit.lib = koffi.load('C:/RpaClaro/AutoItX3_x64.dll');
|
|
await autoit.run('C:/Users/Public/IBM/ClientSolutions/Start_Programs/Windows_i386-32/acslaunch_win-32.exe C:/RpaClaro/AS400.hod');
|
|
try {
|
|
const result = await autoit.winWait("Iniciar sesión en IBM i", "", 35);
|
|
|
|
if (result) {
|
|
let ventana_error = 0;
|
|
let ventana_contrasena = 0;
|
|
let ventana_mensaje1 = 0;
|
|
let ventana_mensaje2 = 0;
|
|
console.log("El programa se ha abierto correctamente.");
|
|
await autoit.winActivate("Iniciar sesión en IBM i");
|
|
await autoit.winSetState("A - ", '', 3)
|
|
await autoit.controlSend("Iniciar sesión en IBM i", '', null, usuario);
|
|
await autoit.winActivate("Iniciar sesión en IBM i");
|
|
await autoit.controlSend("Iniciar sesión en IBM i", '', null, "{TAB}");
|
|
await autoit.winActivate("Iniciar sesión en IBM i");
|
|
await autoit.controlSend("Iniciar sesión en IBM i", '', null, password);
|
|
await autoit.controlSend("Iniciar sesión en IBM i", '', null, "{ENTER}");
|
|
ventana_error = await autoit.winWait("Mensaje de error", "", 8);
|
|
if (ventana_error == 1) {
|
|
console.log("Aparecio mensaje de error");
|
|
} else {
|
|
console.log("No aparecio mensaje de error");
|
|
}
|
|
|
|
ventana_contrasena = await autoit.winWait("Cambiar contraseña de IBM i", "", 1);
|
|
if (ventana_contrasena == 1) {
|
|
console.log("Aparecio mensaje de contrasena");
|
|
} else {
|
|
console.log("No aparecio mensaje de contrasena");
|
|
}
|
|
|
|
ventana_mensaje1 = await autoit.winWait("Mensaje de consulta", "", 1);
|
|
if (ventana_mensaje1 == 1) {
|
|
await autoit.controlSend("Mensaje de consulta", '', null, "{ENTER}");
|
|
console.log("Aparecio mensaje 1");
|
|
} else {
|
|
console.log("No aparecio mensaje 1");
|
|
}
|
|
|
|
ventana_mensaje2 = await autoit.winWait("Mensaje de consulta", "", 1);
|
|
if (ventana_mensaje2 == 1) {
|
|
await autoit.controlSend("Mensaje de consulta", '', null, "{ENTER}");
|
|
console.log("Aparecio mensaje 2");
|
|
} else {
|
|
console.log("No aparecio mensaje 2");
|
|
}
|
|
|
|
console.log(ventana_contrasena);
|
|
console.log(ventana_error);
|
|
|
|
if (ventana_contrasena == 0 && ventana_error == 0) {
|
|
console.log('diferentes');
|
|
await new Promise((resolve) => setTimeout(resolve, 3000));
|
|
let segundo_login = await autoit.winGetText('A - ');
|
|
console.log(segundo_login);
|
|
if (segundo_login == 128) {
|
|
console.log('Se encontro segundo login');
|
|
await autoit.winActivate("A - ");
|
|
await new Promise((resolve) => setTimeout(resolve, 2000));
|
|
try {
|
|
await autoit.controlSend("A - ", '', null, "+^w");
|
|
console.log('Se ejecuto hotkey');
|
|
await autoit.controlSend("A - ", '', null, usuario);
|
|
await autoit.winActivate("A - ");
|
|
await autoit.controlSend("A - ", '', null, "{TAB}");
|
|
await autoit.winActivate("A - ");
|
|
await autoit.controlSend("A - ", '', null, password);
|
|
await autoit.controlSend("A - ", '', null, "{ENTER}");
|
|
} catch (error) {
|
|
console.log('No se ejecuto hotkey: ' + error);
|
|
}
|
|
} else {
|
|
console.log('No se encontro segundo login');
|
|
}
|
|
|
|
}
|
|
} else {
|
|
console.log("El programa no se ha abierto dentro del tiempo de espera.");
|
|
}
|
|
|
|
} catch (error) {
|
|
console.error("Error:", error);
|
|
}
|
|
}
|
|
|
|
runAS400Launcher();
|
|
|
|
return 'test';
|
|
}
|
|
|
|
module.exports = { rr };
|