EXPORTAR A OTRO PROGRAMA

y programas personales para otros como tu, puede que te corrijan ;)
Responder
tirapi
Mensajes: 4
Registrado: 15 Jul 2014, 10:40

EXPORTAR A OTRO PROGRAMA

Mensaje por tirapi »

Hola soy nuevo con autoit y me he encontrado con una duda, espero me puedan ayudar.
Con el grabador he creado un proceso sencillo, intentaré explicarme lo mejor posible.
En un fichero C:\PRUEBA, tengo una serie de archivos 20 aprox. de acrobat (extensón pdf)
Lo primero que hago es seleccionar el primer archivo pdf y copiar el nombre sin la extensión. (CONTROL+C)
Ejecuto el primer archivo pdf , lo abre el programa y lo exporta a otro tipo de programa en este caso a word.
Guardo el word creado con el nombre del fichero (CONTROL+V)
Cierro los dos archivos el PDF y el WORD
Borro de los 20 archivos, el que he abierto para que salte al siguiente PDF.
Pero me da error.

Como veis es muy sencillo lo que necesito. (abrir un archivo, exportarlo a otro programa y borrar el archivo original quedandome solo con el exportado)

Pero no me funciona, siempre renombra con el mismo nombre, se queda en el portapapeles y no consigo que pase al resto de archivos para cambiar

Por favor, alguien puede darme una solución.
Muchas gracias
PDF
Hacker del Foro
Mensajes: 152
Registrado: 18 Ene 2013, 23:23

Re: EXPORTAR A OTRO PROGRAMA

Mensaje por PDF »

Hola y Bienvenido!

Muestra el código que llevas, así podremos ayudarte mejor..

Saludos..
tirapi
Mensajes: 4
Registrado: 15 Jul 2014, 10:40

Re: EXPORTAR A OTRO PROGRAMA

Mensaje por tirapi »

Muchas gracias, he probado cambiando los archivos PDF por los del programa PRESTO.
Pero nada.
Este es el listado




_WinWaitActivate("OBRA PRESTO","")
MouseClick("left",577,142,1)
Send("{F2}")
MouseMove(577,145)
MouseDown("left")
MouseMove(455,145)
MouseUp("left")
Send("{CTRLDOWN}c{CTRLUP}")
MouseClick("left",503,144,1)
MouseClick("left",499,144,2)
_WinWaitActivate("Acerca de Presto","")
MouseClick("left",222,210,1)
_WinWaitActivate("001.14 PENIT Presto[1]-C:\Documents and Settings\A\Escritorio\LUIS\OBRA PRESTO\001.14 PENIT.pzh","")
MouseMove(151,17)
MouseDown("left")
MouseMove(222,19)
MouseUp("left")
MouseMove(1649,11)
MouseDown("left")
MouseMove(951,12)
MouseUp("left")
MouseMove(301,8)
MouseDown("left")
MouseMove(460,4)
MouseUp("left")
MouseClick("left",21,41,1)
MouseMove(108,295)
MouseDown("left")
MouseMove(109,296)
MouseUp("left")
MouseClick("left",996,307,1)
MouseClick("left",1369,405,1)
_WinWaitActivate("Excel","")
MouseClick("left",130,363,1)
_WinWaitActivate("Microsoft Excel - Libro1","")
MouseClick("left",1643,12,1)
MouseMove(60,36)
MouseDown("left")
MouseMove(58,46)
MouseUp("left")
MouseClick("left",115,135,1)
_WinWaitActivate("Guardar como","")
MouseMove(620,127)
MouseDown("left")
MouseMove(607,240)
MouseUp("left")
MouseClick("left",43,160,1)
MouseMove(618,130)
MouseDown("left")
MouseMove(608,212)
MouseUp("left")
MouseClick("left",144,174,2)
MouseClick("left",174,93,1)
MouseMove(364,390)
MouseDown("left")
MouseMove(-117,359)
MouseUp("left")
Send("{CTRLDOWN}v{CTRLUP}")
MouseClick("left",616,383,1)
_WinWaitActivate("Microsoft Excel - 001.14 PENIT.xls","")
PDF
Hacker del Foro
Mensajes: 152
Registrado: 18 Ene 2013, 23:23

Re: EXPORTAR A OTRO PROGRAMA

Mensaje por PDF »

La verdad, esto que quieres hacer es mucho más sencillo en AutoIt utilizando otras funciones, por ejemplo FileFindFirstFilestFile, con esto puedes buscar los archivos pdf ubicados en la carpeta que quieras, obtienes el nombre del primer archivo con FileFindNextFile y le quitas la extensión utilizando un StringTrimRigth luego lo cambias de pdf a word (no sé si utilizas algún software en particular), y al realizar todo esto luego de guardarlo eliminas el pdf con FileDelete y pasamos al siguiente pdf...

Te dejo este ejemplo:

Código: Seleccionar todo

$Carpeta = "C:\Documents and Settings\A\Escritorio\LUIS\OBRA PRESTO\"

$Busqueda = FileFindFirstFile($Carpeta & "*.pdf") ; Buscar archivos pdf
If $Busqueda = -1 Then Exit ; No hay archivos!

While 1
	$Nombre = FileFindNextFile($Busqueda) ; Archivo encontrado
	If @error Then ExitLoop ; No hay mas archivos
	$NombreSinExtension = StringTrimRight($Nombre, 4) ; Retorna el nombre sin extension
	;==================================================================================
	; Aqui haces la conversion
	; Lo guardas
	;==================================================================================
	;FileDelete($Carpeta & $Nombre) Eliminas el pdf
WEnd

FileClose($Busqueda) ; Cerrar busqueda
Cualquier duda estamos para ayudar, saludos..
tirapi
Mensajes: 4
Registrado: 15 Jul 2014, 10:40

Re: EXPORTAR A OTRO PROGRAMA

Mensaje por tirapi »

Muchas gracias, lo he probado y no consigo nada, seguro que es por mis nulos conocimientos de este programa.
Os pongo el proceso que tengo grabado y que funciona para una obra y donde me atasco
Muchas gracias

(Comiezo teniendo solo abierto el explorador de Windows, en el fichero C:\Documents and Settings\A\Escritorio\LUIS\OBRA PRESTO\
Aquí tengo 5 archivos con extensión pzh y el ejecutable de autoit siguiente.)


#region --- Au3Recorder generated code Start (v3.3.9.5 KeyboardLayout=0000040A) ---

#region --- Internal functions Au3Recorder Start ---
Func _Au3RecordSetup()
Opt('WinWaitDelay',100)
Opt('WinDetectHiddenText',1)
Opt('MouseCoordMode',0)
Local $aResult = DllCall('User32.dll', 'int', 'GetKeyboardLayoutNameW', 'wstr', '')
If $aResult[1] <> '0000040A' Then
MsgBox(64, 'Warning', 'Recording has been done under a different Keyboard layout' & @CRLF & '(0000040A->' & $aResult[1] & ')')
EndIf

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()
#endregion --- Internal functions Au3Recorder End ---

_WinWaitActivate("OBRA PRESTO","") (Pincho dos veces sobre el primert archivo que quiero abrir)
MouseMove(523,145)
MouseDown("left")
MouseMove(524,145)
MouseClick("left",524,145,2)
_WinWaitActivate("Acerca de Presto","") (Se abre el programa y sale una pantalla de confirmación de que quieres abrir el programa)
MouseClick("left",190,208,1)
_WinWaitActivate("004.14 CIRCUITOS EMERGENCIA Presto[1]-C:\Documents and Settings\A\Escritorio\LUIS\OBRA PRESTO\004.14 CIRCUITOS EMERGENCIA.pzh","") (Abre la obra solicitada, creo que aquí tengo el problema, designa el nombre de una obra en concreto, por lo que la segunda vez que quiero correr la aplicación esta se para al no encontrar el fichero)
(supongo que aquí es donde tengo que poner la orden generica de abrir cualquier fichero con extensión .pzh)

MouseClick("left",31,37,1)
MouseClick("left",106,297,1)
MouseClick("left",1047,405,1)
_WinWaitActivate("Excel","")
MouseClick("left",156,362,1)
_WinWaitActivate("Microsoft Excel - Libro1","") (Después de pinchar en ciertas pestañas, el programa exporta el documento a un fichero excel, es decir, abre una hoja excel y copia los datos en un fichero llamado Libro 1)
MouseClick("left",48,42,1)
MouseClick("left",104,140,1)
_WinWaitActivate("Guardar como","") (Ordeno al fichero excel que “guarde como” el libro creado, la dirección donde guardarlo creo que son todas las ordenes siguientes)
MouseClick("left",72,166,1)
MouseMove(626,114)
MouseDown("left")
MouseMove(623,169)
MouseUp("left")
MouseClick("left",138,274,2)
MouseClick("left",181,89,2)
MouseMove(274,385)
MouseDown("left")
MouseMove(140,387)
MouseUp("left")
Send("{SHIFTDOWN}nuevo{SPACE}excel{SHIFTUP}")
MouseClick("left",554,386,1)
_WinWaitActivate("Microsoft Excel - NUEVO EXCEL.xls","") (Aquí ya he llegado a la carpeta donde quiero guardar el fichero, que es la misma que donde esta el archivo de presto, “OBRA PRESTO”, pero en lugar de llamarlo NUEVO EXCEL.xls que se lo he tenido que poner yo a mano, lo que quisiera es que automaticamente me ponga el nombre del fichero origen es decir 004.14 CIRCUITOS EMERGENCIA.xls
MouseClick("left",869,16,1) (Aqui cierro el archivo excel)
_WinWaitActivate("004.14 CIRCUITOS EMERGENCIA Presto[1]-C:\Documents and Settings\A\Escritorio\LUIS\OBRA PRESTO\004.14 CIRCUITOS EMERGENCIA.pzh","") (Paso al archivo de presto y lo cierro con los comandos siguientes)
MouseMove(949,18)
MouseDown("left")
MouseMove(949,19)
MouseUp("left")
#endregion --- Au3Recorder generated code End ---

(y aqui solo me queda en pantalla, el explorador de Windows del principio, en el que veo el fichero OBRA PRESTO, con el nuevo archivo excel creado, me quedaria borrar el archivo presto que he utilizado y que pase al siguiente archivo

No sé si me he explicado, lo que os pediria si es posible cambiar los líneas de comandos donde tengo problemas por las genericas para la orden necesaria
Muchas gracias por la ayuda.
PDF
Hacker del Foro
Mensajes: 152
Registrado: 18 Ene 2013, 23:23

Re: EXPORTAR A OTRO PROGRAMA

Mensaje por PDF »

Lo que pasa es que el Au3Recorder es solo una herramienta, no hace todo el trabajo, tu puedes ir mirando la ayuda de AutoIt para ir aprendiendo, también puedes mirar el AU3WinInfo te puede servir en esto..

Voy a tratar de explicarte que es lo que hace el codigo que te mostré y como lo puedes implementar en tu código:
Primero dices que tienes una carpeta "C:\Documents and Settings\A\Escritorio\LUIS\OBRA PRESTO", no la abrimos solo la almacenamos en una variable:

Código: Seleccionar todo

$Carpeta = "C:\Documents and Settings\A\Escritorio\LUIS\OBRA PRESTO"
Luego usamos FileFindFirstFile, para buscar los ficheros .pzh (La verdad no conozco este tipo de ficheros) utilizamos un comodín: "*.pzh"

Código: Seleccionar todo

$Busqueda = FileFindFirstFile($Carpeta & "*.pzh") ; Obtener identificador de búsqueda de archivos pzh
If $Busqueda = -1 Then Exit ; Si no hay archivos Sale
Luego teniendo el identificador de la búsqueda almacenado en la variable "$Busqueda" obtenemos los ficheros, pero utilizamos un bucle While ... Wend para trabajar con todos lo ficheros pzh
A partir de aquí tienes que mirar los comentarios del codigo, allí te explico el proceso que debes seguir

Código: Seleccionar todo

#region --- Internal functions Au3Recorder Start ---
Func _Au3RecordSetup()
     Opt('WinWaitDelay',100)
     Opt('WinDetectHiddenText',1)
     Opt('MouseCoordMode',0)
     Local $aResult = DllCall('User32.dll', 'int', 'GetKeyboardLayoutNameW', 'wstr', '')
     If $aResult[1] <> '0000040A' Then
          MsgBox(64, 'Warning', 'Recording has been done under a different Keyboard layout' & @CRLF & '(0000040A->' & $aResult[1] & ')')
     EndIf
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()
#endregion --- Internal functions Au3Recorder End ---

$Carpeta = "$Carpeta = "C:\Documents and Settings\A\Escritorio\LUIS\OBRA PRESTO"

$Busqueda = FileFindFirstFile($Carpeta & "*.pzh") ; Obtener identificador de búsqueda de archivos pzh
If $Busqueda = -1 Then Exit ; Si no hay archivos sale

While 1
     $Nombre = FileFindNextFile($Busqueda) ; Archivo encontrado
     If @error Then ExitLoop ; Sale si no hay mas archivos
     $NombreSinExtension = StringTrimRight($Nombre, 4) ; Retorna el nombre sin extension
     ; La siguiente linea hace lo mismo que hubieras hecho con hacer doble clic sobre el fichero, abrir el fichero
     ShellExecute($Carpeta & $Nombre)
 ;==================================================================================
     ; A partir de aquí podemos utilizar las herramientas  Au3Recorder y el AU3WinInfo
     ; Ten en cuenta que si las coordenadas del mouse no son correctas el script va a fallar, por lo que tendrás que revisarlo..
;==================================================================================
     ; Se abre el programa y sale una pantalla de confirmación de que quieres abrir el programa
     _WinWaitActivate("Acerca de Presto","") 
     MouseClick("left",190,208,1) ; o también puedes usar combinaciones de téclas como Send({enter})

     ; Luego tienes la siguiente linea:
     ; _WinWaitActivate("004.14 CIRCUITOS EMERGENCIA Presto[1]-C:\Documents and Settings\A\Escritorio\LUIS\OBRA PRESTO\004.14 CIRCUITOS EMERGENCIA.pzh","") ; En realidad esto no abre la obra, solo espera que se abra
     ; Aquí debes de utilizar el identificador de ventana en lugar del nombre del fichero o su clase 
     ; LO OBTIENES CON EL AU3WININFO, busca el ejecutable "AU3WinInfo.exe" entre las herramientas de autoit, abrelo y pasa el pequeño cursor sobre una ventana abierta del presto, automáticamente te mostrara los datos de la ventana..
     ; Tu puedes utilizar la clase reemplazas LACLASE por la cadena de texto que te indica el Au3WinInfo
_WinWaitActivate("[CLASS:LACLASE]","")
     ; Luego clickeas en varias partes del programa
     ; Puedes usar comandos del teclado aquí, solo tienes que ver si están disponibles por ej: Ctrl+S, Send('^s')
     MouseClick("left",31,37,1)
     MouseClick("left",106,297,1)
     MouseClick("left",1047,405,1)
     _WinWaitActivate("Excel","")
     MouseClick("left",156,362,1)
     _WinWaitActivate("Microsoft Excel - Libro1","") 

     ; Aquí creo que en Excel al presionar Ctrl+Shift+S se abre la ventana de Guardar como..puedes reemplazar estas lineas:
     MouseClick("left",48,42,1)
     MouseClick("left",104,140,1)
     ; Send('^+s') ;Por esta
     _WinWaitActivate("Guardar como","") 
     MouseClick("left",72,166,1)
     MouseMove(626,114)
     MouseDown("left")
     MouseMove(623,169)
     MouseUp("left")
     MouseClick("left",138,274,2)
     MouseClick("left",181,89,2)
     MouseMove(274,385)
     MouseDown("left")
     MouseMove(140,387)
     MouseUp("left")
     ; Aqui le ponemos el nombre sin extensión para ello utilizamos la variable en la cual almacenamos esa cadena 
     Send($NombreSinExtension)
     MouseClick("left",554,386,1) ; Creo que basta con presionar enter "Send({Enter})"
     _WinWaitActivate("Microsoft Excel - "&$NombreSinExtension&".xls","")
     ; En lugar de MouseClick("left",869,16,1) para cerrar la ventana usamos:
     WinClose("Microsoft Excel - "&$NombreSinExtension&".xls","")
     WinClose("[CLASS:LACLASE]","") ; aquí usas de nuevo la clase
     FileRecycle($Carpeta & $Nombre) Envía a la papelera puedes resturarlo si algo funciona mal, si quieres eliminarlo definitivamente usas FileDelete
     WEnd ; Pasa al siguiente archivo
     FileClose($Busqueda) ; Cerrar busqueda
Espero que entiendas, mirando la ayuda y los códigos de ejemplo podrás ir aumentando tus conocimientos sobre este lenguaje..
Saludos..
tirapi
Mensajes: 4
Registrado: 15 Jul 2014, 10:40

Re: EXPORTAR A OTRO PROGRAMA

Mensaje por tirapi »

Muchas gracias, intentare seguir tus indicaciones.
Un saludo
Jonny
Profesional del Autoit
Mensajes: 1042
Registrado: 30 Jun 2008, 20:08

Re: EXPORTAR A OTRO PROGRAMA

Mensaje por Jonny »

No entiendo bien qué quieres hacer: ¿Cambiar la extensión a los archivos? ¿Pasar el contenido de un archivo a otro?.

Creo que no sabes programar, al menos en AutoIt. Deberías aprender primero: Algo de teoría te iría bien si no la tienes ya, y luego mirar la ayuda de AutoIT, hasta casi aprenderte las funciones del lenguaje (para saber cual usar en cada caso), además de sus macros ETC.

Vaya, aprender AutoIT :)

Si lo que quieres es, realmente exportar archivos PDF a archivos de Word, podrías buscar librerías para manejar PDF en el foro inglés, y con eso y una librería para archivos de Word (creo recordar que AutoIT lleva una por defecto), debería ser suficiente.

Salu2!
Responder