consulta sobre programa uploader que hago

Tus preguntas. Algoritmos o Grupos de Comandos formando Programas Escripts.
Responder
AnC4Lu
Mensajes: 2
Registrado: 12 Ene 2013, 08:18

consulta sobre programa uploader que hago

Mensaje por AnC4Lu »

bueno estoy haciendo un uploader para tinypic. el programa carga la web, ingresa la ruta donde esta la imagen y luego envia el formulario.
esto lo tuve que hacer haciendo una aplicación que verifique que cargue la ventana de selección de archivo y que le ingrese la ruta y le de enter. intente hacerlo en el mismo archivo principal pero no me modifica el contenido de la ventana donde pide la ubicación del archivo a subir.
luego me muestra la url de la imagen subida. hasta ahi nomas puedo llegar.

lo que quiero es obtener la url, ponerla en una variable y luego guardarla en un archivo de texto.
tambien si se puede poder unir los 2 codigos.


el codigo del programa principal es:

Código: Seleccionar todo

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <IE.au3>
TraySetClick(0)

Run("rellenar.exe")
_IEErrorHandlerRegister()

Local $oIE = _IECreateEmbedded()
GUICreate("Subir imagen", 300, 550)
GUICtrlCreateObj($oIE, 10, 40, 280, 350)
GUISetState(@SW_SHOW)
_IENavigate($oIE, "http://plugin.tinypic.com/plugin/index.php?popts=l,narrow|t,images|c,url|i,es|s,false|cu,|ct,")
; get pointers to the login form and username and password fields
$o_form = _IEFormGetObjByName($oIE, "uploadForm")
Local $oSubmit = _IEGetObjByName($oIE, "the_file")
_IEAction($oSubmit, "click")
while ProcessExists("rellenar.exe")
WEnd
_IEFormSubmit($o_form)
exit

codigo del programa que pone la ruta en la ventana donde te pide que selecciones el archivo:

Código: Seleccionar todo

Func _Au3RecordSetup()
Opt('WinWaitDelay',100)
Opt('WinDetectHiddenText',1)
Opt('MouseCoordMode',0)
EndFunc

Func _WinWaitActivate($title,$text,$timeout=0)
	WinWait($title,$text,$timeout)
	If Not WinActive($title,$text) Then WinActivate($title,$text)
	WinWaitActive($title,$text,$timeout)
EndFunc

_AU3RecordSetup()

_WinWaitActivate("Elegir archivos para cargar","")
Send("C:\a.jpg")
Send ("{ENTER}")
me olvidaba no puedo cerrar el programa principal. solo puedo cerrarlo usando el administrador de tareas. con o sin "TraySetClick(0)" no logro cerrarlo. parece que se detiene en _IEFormSubmit($o_form). las funciones que le coloques luego no se ejecutan. no se ejecuta el exit que le puse. :smt017

espero me puedan ayudar :smt003
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: consulta sobre programa uploader que hago

Mensaje por Chefito »

Eso lo puedes hacer en un mismo script. Mírate los dos enlaces que te dejo en este post (utiliza la búsqueda del foro para encontrar posibles soluciones a tus problemas).

http://www.emesn.com/autoitforum/viewto ... ile#p13927

Ahí te dicen como puedes acceder al objeto input type="file" con bastante detalle, que creo que es lo que tu necesitas.

Hay otras formas de mandar formularios más directamente, pero son más complicadas, y más cuando hay archivos binarios de por medio como pueden ser las fotos.

Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
AnC4Lu
Mensajes: 2
Registrado: 12 Ene 2013, 08:18

Re: consulta sobre programa uploader que hago

Mensaje por AnC4Lu »

modifique el codigo del programa principal con los ejemplos que vi en el link q publicaste. pero no logra cambiar el texto del control file. puse el sleep para ver si cambiaba el texto pero no lo hacia. no lo cambia y mucho menos sale el cuadro para elegir el archivo.

Código: Seleccionar todo

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <IE.au3>
TraySetClick(0)

_IEErrorHandlerRegister()

Local $oIE = _IECreateEmbedded()
GUICreate("Subir imagen", 300, 550)
GUICtrlCreateObj($oIE, 10, 40, 280, 350)
GUISetState(@SW_SHOW)
_IENavigate($oIE, "http://plugin.tinypic.com/plugin/index.php?popts=l,narrow|t,images|c,url|i,es|s,false|cu,|ct,")
; get pointers to the login form and username and password fields
$oForm = _IEFormGetObjByName($oIE, "uploadForm")
$oInputFile = _IEFormElementGetObjByName($oForm, "the_file")

; Assign input focus to the field and then send the text string
_IEAction($oInputFile, "focus")
$hIE = _IEPropertyGet($oIE, "hwnd")
ControlSend($hIE, "", "[CLASS:Internet Explorer_Server; INSTANCE:1]", "C:\a.jpg")
sleep(10000)
exit

tambien encontre un script. le cambie la url y algunos datos y me funciona bien pero abre una ventana de navegador y yo quiero que sea en un gui:

Código: Seleccionar todo

#include <IE.au3>
$oIE = _IECreate()
_IENavigate($oIE, "http://plugin.tinypic.com/plugin/index.php?popts=l,narrow|t,images|c,url|i,es|s,false|cu,|ct,")
$o_form = _IEFormGetObjByName ($oIE, 0) ; First Form Object
$oUpload = _IEGetObjByName($o_form, "the_file")
_IEAction($oUpload, "focus")
Send("{SPACE}")
Sleep(1000)
Send("C:\a.jpg") ; C:/Folder/File.txt
Sleep(1000)
Send("{Enter}")
Sleep(1000)
lo puse en un gui pero solo me muestra la ventana para seleccionar el archivo y no ingresa la ruta del archivo como el codigo anterior.

Código: Seleccionar todo

#include <WindowsConstants.au3>
#include <IE.au3>
#include <GUIConstants.au3>; GUI

Opt('GUIOnEventMode' , 1); Change to OnEvent mode

_IEErrorHandlerRegister()
$oIE = _IECreateEmbedded()

$oWin = GUICreate('Temp IE Window', 700, 620, _
  (@DesktopWidth - 700) / 2, (@DesktopHeight - 620) / 2)

GUISetOnEvent($GUI_EVENT_CLOSE, 'CloseWin')
GUISetState()
$GUIActiveX = GUICtrlCreateObj($oIE, 10, 50, 680, 560)

_IENavigate($oIE, "http://plugin.tinypic.com/plugin/index.php?popts=l,narrow|t,images|c,url|i,es|s,false|cu,|ct,")
$o_form = _IEFormGetObjByName ($oIE, 0) ; First Form Object
$oUpload = _IEGetObjByName($o_form, "the_file")
_IEAction($oUpload, "focus")
Send("{SPACE}")
Sleep(1000)
Send("C:\a.jpg") ; C:/Folder/File.txt
Sleep(1000)
Send("{Enter}")
Sleep(1000)
While 1
WEnd

Func CloseWin()
  Exit
EndFunc
Responder