Intentaba hacer un programa que me logeara en paginas, resolví hacerlo de la siguiente forma:
> Un método que escribe archivos, lo uso para escribir un vbs que envíe pulsaciones de teclas, como no supe llamar al vbs desde java resolvi usar este mismo metodo para escribir un bat que llame al vbs y le pase los argumentos con cscript
> Un metodo que reciba los argumentos necesarios para escribir el bat y que llame al vbs
> Esop, el resto lo hace el vbs, luego de abrir el navegador con la url especificada, muestra un msgbox y cuando se le da aceptar espera tres segundos y envía las pulsaciones de teclas.
Dejo el code de los métodos que uso, dejaría el code completo pero la gui la hice en netbeans, ya no me da el ánimo para codear en bloc de notas Xd
para escribir un archivo:
void writer
(String[] args,
String file,
boolean rewrite,
boolean delete_on_exit
){
/**
*
* El primer argumento indica
* las palabras que se agregaran al archivo de
* texto plano.
*
* El segundo argumento indica la ruta de
* dicho archivo.
*
* Si el tercer argumento
* es true el archivo
* se sobreescribe
*
* Si el cuarto argumento es true
* el archivo se borra al cerrar
* el programa
*
*
*/
String[] in
=this.
reader(file
).
split("\n");
if(rewrite){
w.touch();
}else{
w.write(val);
}
}
w.write(val);
}
w.close();
}
Y la clase writer:
this.file=foo;
try{
if(delete){
f.deleteOnExit();
}
}
}
public void write
(String line
){
try{
bw.append(line);
bw.newLine();
ex.printStackTrace();
}
}
public void touch(){
try{
if(f.exists()){
f.delete();
f.createNewFile();
}else{
f.createNewFile();
}
}
}
public void touch
(String foo
){
try{
if(fi.exists()){
fi.delete();
fi.createNewFile();
}else{
fi.createNewFile();
}
}
}
public void close(){
try{
this.bw.close();
}
}
}
El vbs, este no cambia
set wss=createobject("wscript.shell")
dim com
com=""""
wss.run("cmd /c start " + com + com + " " + wscript.arguments(0))
msgbox "pulsa aceptar para logear"
wscript.sleep 3000
wss.sendkeys wscript.arguments(1)
wscript.sleep 200
wss.sendkeys "{tab}"
wscript.sleep 200
wss.sendkeys wscript.arguments(2)
El bat, este se escribe con el método writer de java:
cscript /nologo "C:\Users\Zero\desktop\temp.vbs" "http://foro.elhacker.net/login.html" "user" "pass"
El metodo que llama al writer y escribe el bat (no recuerdo si fue este es que lo hice varias veces)
if (new File(System.
getProperty("user.home") + "\\desktop").
isDirectory()) {
temp
= System.
getProperty("user.home") + "\\desktop\\temp.bat";
} else if (new File(System.
getProperty("user.home") + "\\escritorio").
isDirectory()) {
temp
= System.
getProperty("user.home") + "\\escritorio\\temp.bat";
} else {
temp
= JOptionPane.
showInputDialog("Dame el path de tu escritorio");
}
args2 += " " + "\"" + val + "\"";
}
String[] bat
= {"@echo off",
"cscript /nologo " + com
+ vbs
+ com
+ args2
};
this.writer(bat, temp, true, true);
try {
Runtime.
getRuntime().
exec("cmd /c " + temp
);
}
}
Y bueno, el programa me salió, pero dependo mucho de estos archivos temporales, si hay otra solución sería genial, desde ya gracias por leer este tema.
Saludos