Problema al iniciar el Robot con la librería Jcob

Hola a todos, no sé si sólo me pasa a mi, la cuestión es la siguiente.
Al iniciar una automatización, se valida que esté ejecutándose el robot cartes, si no está el proceso iniciado, se inicia con ayuda de la librería de java JCOB. hasta aquí todo bien, el problema está cuando comienza a tratar de reconocer elementos ya que no lo hace, no reconoce nada y la automatización no funciona
Dispatch.call(shell, “run”, “HKLM\SOFTWARE\Cartes\Cartes Client”, 1, false);
alguien tiene alguna idea de que puede ser?

Hola Juan,

qué excepción te salta exactamente? podrías incluir el stacktrace?

Saludos.

Hola:

“HKLM\SOFTWARE\Cartes\Cartes Client” es la clave del registro de Windows donde se encuentra la ruta completa del ejecutable de Cartes. Debes leer la ruta del registro, luego podrás hacer la llamada del Shell con la ruta que recuperaste.

@amartinez
el robot simplemente no encuentra componentes y manda un error como
$RemedyNINotasTxt.waitforcomponent(20);

Char : 39
I can not find the component

@xavier
Entocnes, lo que debería de hacer primero es obtener la ruta de registro, no escribirla porque la que tiene podría no ser la indicada?

Lo que quiero decir es que no tienes la ruta de Cartes. Solo tienes la ruta de dónde está esa información en el registro. Aquí tienes el código para máquinas de 32 y 64 bits

	String res32;
	String res64;
	String ruta32 = "HKLM\\SOFTWARE\\Cartes\\Cartes Client";//Registro de Windows
	String ruta64 = "HKLM\\SOFTWARE\\Wow6432Node\\Cartes\\Cartes Client";//Registro de Windows
	ActiveXComponent sh;
	Dispatch shell;

	sh = new ActiveXComponent("WScript.Shell");
	shell = (Dispatch) sh.getObject();
	try {
		res32 = Dispatch.call(shell, "RegRead", ruta32).toString();
	} catch (Exception e) {
		res32 = "";
	}
	if (res32.endsWith("artes.exe"))
		Dispatch.call(shell, "run", "\"" + res32 + "\"", 1, false);
	else {
		res64 = Dispatch.call(shell, "RegRead", ruta64).toString();
		if (res64.endsWith("artes.exe"))
			Dispatch.call(shell, "run", "\"" + res64 + "\"", 1, false);
		else {
			System.out.println("Cartes no está instalado");
			System.exit(1);
		}
	}