Avanzado - librerias adicionales, dlls y programas externos
- BasicOs
- Site Admin
- Mensajes: 2091
- Registrado: 21 Nov 2006, 19:24
- Ubicación: El Internet - (Canarias, España)
- Contactar:
Avanzado - librerias adicionales, dlls y programas externos
Aunque Autoit ya incluye de fábrica todas las funciones y librerías que necesitamos en el día a dían normalmente en el código al compilarlo en el ejecutable.
Algunas utilidades, unas interesantes como el The PCRE ToolKit for AutoIt que es un programa que ayuda y cuenta con tutoriales para manejar la Expresiones Regulares: http://dundats.mvps.org/AutoIt/default.aspx
Algunas veces necesitamos librerias au3 (que se incluyen compiladas dentro del .exe), o bien dlls que incluyen funciones más especializadas con otras características más avanzadas copiandolas junto con el ejecutable (si lo deseamos incluiremos con un fileinstall()).
En el programa SMF podemos ver una colección actualizada muy util de librerías y uso de las dlls que podemos incluir en cualquier programa, y también programas externos, con una demostración práctica de como funcionan en cada caso mirando el código del main.au3 del programa smf.
Solo descomprimir el fichero fuente que está para descargar, y dentro tendremos en archivos .au3 separados librerías muy útiles como la de CompInfo de identificación de hardware del pc, la de manejo de ficheros zip, y otras etc.. En el zip están todas la FUNCiones y librerías au3. Los nombres de cada archivo son muy ilustrativos de la librería que contienen quitando SMF_Func_ del nombre.
http://www.emesn.com/autoitforum/viewto ... f=4&t=2531
Estas librerias son de sus autores, y existen otras muchas librerías avanzadas que podemos incluirlas en este hilo.
Créditos a los autores y a Ximorro que aportó la info.
Falta la carpeta de includes para las dlls y programas externos que la pongo en el siguiente post.
Aquí unos pantallazos de lo que hay dentro del fichero:
Algunas utilidades, unas interesantes como el The PCRE ToolKit for AutoIt que es un programa que ayuda y cuenta con tutoriales para manejar la Expresiones Regulares: http://dundats.mvps.org/AutoIt/default.aspx
Algunas veces necesitamos librerias au3 (que se incluyen compiladas dentro del .exe), o bien dlls que incluyen funciones más especializadas con otras características más avanzadas copiandolas junto con el ejecutable (si lo deseamos incluiremos con un fileinstall()).
En el programa SMF podemos ver una colección actualizada muy util de librerías y uso de las dlls que podemos incluir en cualquier programa, y también programas externos, con una demostración práctica de como funcionan en cada caso mirando el código del main.au3 del programa smf.
Solo descomprimir el fichero fuente que está para descargar, y dentro tendremos en archivos .au3 separados librerías muy útiles como la de CompInfo de identificación de hardware del pc, la de manejo de ficheros zip, y otras etc.. En el zip están todas la FUNCiones y librerías au3. Los nombres de cada archivo son muy ilustrativos de la librería que contienen quitando SMF_Func_ del nombre.
http://www.emesn.com/autoitforum/viewto ... f=4&t=2531
Estas librerias son de sus autores, y existen otras muchas librerías avanzadas que podemos incluirlas en este hilo.
Créditos a los autores y a Ximorro que aportó la info.
Falta la carpeta de includes para las dlls y programas externos que la pongo en el siguiente post.
Aquí unos pantallazos de lo que hay dentro del fichero:
- Adjuntos
-
- SMF_v1_5.source_sinIncludes.zip
- Fuentes SMF + librerias especiales + Autoit Objetos - No includes
- (540.07 KiB) Descargado 936 veces
-
- AutoitObject y otros
- AutoitObjetct.jpg (14.05 KiB) Visto 40093 veces
-
- Funciones especiales
- autoit1.jpg (59 KiB) Visto 40093 veces
- BasicOs
- Site Admin
- Mensajes: 2091
- Registrado: 21 Nov 2006, 19:24
- Ubicación: El Internet - (Canarias, España)
- Contactar:
Re: Avanzado
Como por ejemplo gestión de ficheros zip, sqlite,
Las funciones que las usan están en el fichero del post anterior.
Si alguien tiene alguna librería más genérica sobre algún tema puede incluirla por aquí.
Salu22:)
- Adjuntos
-
- LIstado de dlls y programas externos
- dllyexes.jpg (77.18 KiB) Visto 40080 veces
- BasicOs
- Site Admin
- Mensajes: 2091
- Registrado: 21 Nov 2006, 19:24
- Ubicación: El Internet - (Canarias, España)
- Contactar:
Re: Avanzado - librerias adicionales, dlls y programas exter
Librerías de busqueda de busqueda de imágenes (en pantalla o en fichero).
Como grupos de pixeles grabados en un fichero.
Funcs ImageSearch, Waitfor y FindBmp. Mejorando los _Pixelxx
Hoy público otra librería especial que puede hacer volar la imaginación.
Libería ImageSearch Autoit para buscar un trozo de una imagen bmp entre los pixeles actuales de la pantalla ImageSearch creditos a Sven:
_Imagesearch($file, $x1 = 0, $y1 = 0, $x2 = @DesktopWidth, $y2 = @DesktopHeight, $trans = "transblack", $variation = 60, $runs = 1, $behavior = 1)
Con datos:
_imagesearch("papeleradereciclaje", 0, 0, @DesktopWidth, @DesktopHeight, "transwhite", 50, 3, 1)
papeleradereciclaje es el nombre de un fichero en formato BMP, que va a buscar la papelera en la pantalla en las coordenadas marcadas y con las opciones.
Versi´n modificada por Sven (nombre fichero sin extensión)
Como todas las librerías especiales:
Hay que usar la librería Imagesearch que se puede dejar con el programa (o bien copiar al directorio INclude).
La dll tiene que estar con el programa (o bien en la carpeta de Windows). (e.g. Fileinstall())
Fuentes: http://www.autoitscript.com/forum/topic ... nload-pls/
http://www.autoitscript.com/forum/topic ... _p__551948
Pueden descargar también un fichero ImageSearch.au3 con un ejemplo.
Otra función similar: _wait_for
Espera a que una imagen surja en la pantalla o bien que desaparezca:
Hay tres maneras de utilizarla:
Función Waitfor (espera por las imágenes estén o desparezcan)
Explicación o explicación de paramátros. Hay tres maneras o metodos para funcionalidades diferentes usarla:
http://www.autoitscript.com/forum/topic ... _p__868423
http://www.autoitscript.com/forum/topic ... _p__868798
===============================================================================================
Otra función de imágenes:
FindBmp - Busca una imagen.bmp dentro de otra imagen.bmp
http://www.autoitscript.com/forum/topic ... agesearch/
Salu22)
PD:
Uso de otras librerias con OCR:
GoOcr, convierte en modo batch una imagen escaneada en su text: http://jocr.sourceforge.net/index.html
Busqueda de objetos especiales: http://www.autoitscript.com/forum/topic ... m-objects/
http://www.autoitscript.com/forum/topic ... erful-ocr/
http://www.autoitscript.com/forum/topic ... _p__836866
Como grupos de pixeles grabados en un fichero.
Funcs ImageSearch, Waitfor y FindBmp. Mejorando los _Pixelxx
Hoy público otra librería especial que puede hacer volar la imaginación.
Libería ImageSearch Autoit para buscar un trozo de una imagen bmp entre los pixeles actuales de la pantalla ImageSearch creditos a Sven:
_Imagesearch($file, $x1 = 0, $y1 = 0, $x2 = @DesktopWidth, $y2 = @DesktopHeight, $trans = "transblack", $variation = 60, $runs = 1, $behavior = 1)
Con datos:
_imagesearch("papeleradereciclaje", 0, 0, @DesktopWidth, @DesktopHeight, "transwhite", 50, 3, 1)
papeleradereciclaje es el nombre de un fichero en formato BMP, que va a buscar la papelera en la pantalla en las coordenadas marcadas y con las opciones.
Versi´n modificada por Sven (nombre fichero sin extensión)
Código: Seleccionar todo
#include <array.au3>
_test()
Func _test()
$test = _imagesearch("test6w", 0, 0, @DesktopWidth, @DesktopHeight, "transwhite", 50, 3, 1)
If IsArray($test) Then
_ArrayDisplay($test, "test")
Else
MsgBox(0, "test", $test)
EndIf
EndFunc ;==>_test
;===============================================================================
; Description: Searches for the specified template contained in an image
;
; Syntax: _ImageSearch
; Parameters:
; $file - the .BMP file containing the template to look for
; $x1 - leftmost coordinate of the search area
; $y1 - topmost coordinate of the search area
; $x2 - rightmost coordinate of the search area
; $y2 - bottommost coordinate of the search area
; $transparent - "TRANSBLACK" or "TRANSWHITE", including the '"'
; for hex values, use e.g. "TRANS00FF00"
; $variation - 0 to 255. Used when real colors differ a bit from
; what is used in the template
; $runs - how often the template should be looked for until a result
; is returned; depends on $behavior
; $behavior - 0 = exit on any find
; 1 = exit on first positive find
; 2 = exit after $runs consecutive finds
;
;
; Return Values: success - Returns an array of the coordinate set found
; $array[1] & $array[2] = coordinate set of the top / left position where the template was found
; $array[3] & $array[4] = coordinate set of the center of where the template was found
;
; failure - Returns string 0
;===============================================================================
Func _Imagesearch($file, $x1 = 0, $y1 = 0, $x2 = @DesktopWidth, $y2 = @DesktopHeight, $trans = "transblack", $variation = 60, $runs = 1, $behavior = 1)
If $behavior > 3 Or $behavior < 0 Then $behavior = 1
If $runs < 1 Or $behavior = 0 Then $runs = 1
Dim $aCoords[$runs] = [99999]; just some number to make the _ArrayMax <-> _ArrayMin comparison work on it's first run
$findImage = '*' & $trans & ' ' & '*' & $variation & ' ' & $file & ".bmp"
$dll = DllOpen("imagesearchdll.dll")
While 1
$result = DllCall($dll, "str", "ImageSearch", "int", $x1, "int", $y1, "int", $x2, "int", $y2, "str", $findImage)
If $result[0] = "0" Then
_ArrayPush($aCoords, 0, 1)
Else
_ArrayPush($aCoords, 1, 1)
If $behavior = 1 Then ExitLoop
EndIf
If _ArrayMax($aCoords) == _ArrayMin($aCoords) Then ExitLoop
Sleep(40)
WEnd
DllClose($dll)
If $aCoords[0] = 1 Then
$array = StringSplit($result[0], "|")
Dim $aCoords[5] = [4, Int(Number($array[2])), Int(Number($array[3])), Int(Number($array[2])) + Int(Number($array[4]) / 2), Int(Number($array[3])) + Int(Number($array[5]) / 2)]
Return ($aCoords)
Else
Return (0)
EndIf
EndFunc ;==>_Imagesearch
Hay que usar la librería Imagesearch que se puede dejar con el programa (o bien copiar al directorio INclude).
La dll tiene que estar con el programa (o bien en la carpeta de Windows). (e.g. Fileinstall())
Fuentes: http://www.autoitscript.com/forum/topic ... nload-pls/
http://www.autoitscript.com/forum/topic ... _p__551948
Pueden descargar también un fichero ImageSearch.au3 con un ejemplo.
Otra función similar: _wait_for
Espera a que una imagen surja en la pantalla o bien que desaparezca:
Hay tres maneras de utilizarla:
Código: Seleccionar todo
; #FUNCTION# =======================================================================================================================================================================================================================================================
; Name...........: _Wait_For()
;
; Description ...: Waits for images, symbols or other graphics to be or to not be on the screen according to user definition
; This can be done by utilizing three different methods:
;
; Method 1 ...:
;
; Syntax ........: _Wait_For($file, $left, $top , $right, $bottom, $duration, $not, $any_or_all)
;
; Parameters ....: $file - name of the file holding the template
; $left - left coordinate of search rectangle
; $top - top coordinate of search rectangle
; $right - right coordinate of search rectangle
; $bottom - bottom coordinate of search rectangle
; $duration - the duration for the timeout in milliseconds
; $not - "not" or anything else; waits for an object to "not" be present in the search rectangle or to (anything else) be present in the search rectangle
; $any_or_all - can be omitted because it's irrelevant when searching for only one object
;
; Return values .: Success - returns 1 if the object was found; this is what you'd want if you go with $not = 0
; - returns -1 if the object was not found; this is what you'd want if you go with $not = "not"
;
; Examples ......: $result = _Wait_For("recycle_bin", 0, 0, 100, @DesktopHeight, 10000, 0); waits for the template in "recycle_bin" to appear within the specified rectangle during a 10 second timeout
; $result = _Wait_For("recycle_bin", 0, 0, 100, @DesktopHeight, 20000, 1); waits for the template in "recycle_bin" to NOT appear within the specified rectangle during a 20 second timeout
;
; Failure - returns 0 if the function timed out
;
;
;
; Method 2 ...:
;
; Syntax.........: _Wait_For("file 1, ..., file n", $top , $left, $bottom, $right, $duration, $not, $all)
;
; Parameters ....: $file - name of the files holding the templates
; $left - left coordinate of search rectangle
; $top - top coordinate of search rectangle
; $right - right coordinate of search rectangle
; $bottom - bottom coordinate of search rectangle
; $duration - the duration for the timeout in milliseconds
; $not - "not" or anything else; waits for the objects to "not" be present in the search rectangle or to (anything else) be present in the search rectangle
; $any_or_all - "any" or "all"; specifies whether to wait for "all" the objects on the screen to be gone or present, or "any" of the objects to be gone or present
;
; Return values .: Success - returns 1 if the object was found; this is what you'd want if you go with $not = 0
; - returns -1 if the object was not found; this is what you'd want if you go with $not = "not"
;
; Examples ......: $result = _Wait_For("recycle_bin, control_panel", 0, 0, 100, @DesktopHeight, 10000, 0, "any"); waits for the templates in "recycle_bin" OR "control_panel" to appear within the specified rectangle during a 10 second timeout
; $result = _Wait_For("recycle_bin, control_panel", 0, 0, 100, @DesktopHeight, 20000, 0, "all"); waits for the templates in "recycle_bin" AND "control_panel" to appear within the specified rectangle during a 20 second timeout
; $result = _Wait_For("recycle_bin, control_panel", 0, 0, 100, @DesktopHeight, 30000, 1, "any"); waits for the templates in "recycle_bin" OR "control_panel" to NOT appear within the specified rectangle during a 30 second timeout
; $result = _Wait_For("recycle_bin, control_panel", 0, 0, 100, @DesktopHeight, 40000, 1, "all"); waits for the templates in "recycle_bin" AND "control_panel" to NOT appear within the specified rectangle during a 40 second timeout
;
; Failure - returns 0 if the function timed out
;
;
;
; Method 3 ...:
;
; Syntax.........: Dim $aFiles[n][10] = [[$file 1, $top, $left, $bottom, $right, $transparency, $shade_variation, $runs, $behavior, $not], _
; [ ... , $top, $left, $bottom, $right, $transparency, $shade_variation, $runs, $behavior, $not], _
; [$file n, $top, $left, $bottom, $right, $transparency, $shade_variation, $runs, $behavior, $not]]
; $result = _Wait_For($aFiles, $duration, $any_or_all)
;
; Parameters ....: $aFiles - an array of file names of .BMP files containing the templates to look for
; $file = name of the file holding the template
; $left = left coordinate of search rectangle
; $top = top coordinate of search rectangle
; $right = right coordinate of search rectangle
; $bottom = bottom coordinate of search rectangle
; $transparency = "TRANSBLACK" or "TRANSWHITE", including the '"'; for hex values, use e.g. "TRANS00FF00"
; $shade_variation = a number between 0 and 255 to indicate the allowed number of shades of variation of the red, green, and blue components of the object
; $runs = how often the template should be looked for until a result is returned; depends on $behavior
; $behavior = 0: exit on any find
; 1: exit on first positive find
; 2: exit after $runs consecutive finds
; $not = "not" or anything else; waits for the objects to "not" be present in the search rectangle or to (anything else) be present in the search rectangle
;
; $duration - the duration for the timeout in milliseconds
; $any_or_all - "any" or "all"; specifies whether to wait for "all" the objects on the screen to be gone or present, or "any" of the objects to be gone or present
;
; Examples ......: Dim $aFiles[2][10] = [["recycle_bin", 0, 0, 200, 200, "transblack", 10, 3, 1, "0", "all"], _ ; requires "recycle_bin" to be present for the function to report success
; ["control_panel", 800, 600, 1024, 768, "transblack", 10, 3, 1, "not", "all"]] ; requires "control_panel" to not be present for the function to report success
; $result = _Wait_For($aFiles, 30000, "all")
;
; Return values .: Success - returns the input array expanded by 5 result columns
; $result[n][0] = name of the file holding the template
; $result[n][1] = left coordinate of search rectangle
; $result[n][2] = top coordinate of search rectangle
; $result[n][3] = right coordinate of search rectangle
; $result[n][4] = bottom coordinate of search rectangle
; $result[n][5] = "TRANSBLACK" or "TRANSWHITE", including the '"'; for hex values, use e.g. "TRANS00FF00"
; $result[n][6] = a number between 0 and 255 to indicate the allowed number of shades of variation of the red, green, and blue components of the object
; $result[n][7] = how often the template should be looked for until a result is returned; depends on $behavior
; $result[n][8] = behavior used
; $result[n][9] = "not" or not ;)
; $result[n][10] = 1 if template was found
; 0 if template was not found
; $result[n][11] = 0 if template was not found
; leftmost coordinate of the template if template was found
; $result[n][12] = 0 if template was not found
; topmost coordinate of the template if template was found
; $result[n][13] = 0 if template was not found
; x axis center of the template if template was found
; $result[n][14] = 0 if template was not found
; y axis center of the template if template was found
;
; Failure - returns 0 if the function timed out
;
; Author ........: Sven
; Dependencies...: _Imagesearch(); imagesearchdll.dll
; ==================================================================================================================================================================================================================================================================
Explicación o explicación de paramátros. Hay tres maneras o metodos para funcionalidades diferentes usarla:
Código: Seleccionar todo
; Author ........: Sven
; Dependencies...: _Imagesearch(); imagesearchdll.dll
; WAITFOR
Func _Wait_For($file, $left = 0, $top = 0, $right = @DesktopWidth, $bottom = @DesktopHeight, $duration = 30000, $not = 0, $any_or_all = "all")
Local $done = 0
Local $not_done = 0
$begin = TimerInit()
If IsArray($file) Then
If not ($left = 0) Then $duration = $left; in case the function is fed with an array, $left serves the purpose of $duration
If $top == "any" Or $top = "all" Then $any_or_all = $top; in case the function is fed with an array, $top serves the purpose of $any_or_all
ReDim $file[UBound($file, 1)][UBound($file, 2) + 5]
While 1
$done = 0
For $i = 0 To UBound($file) - 1
$return = _imagesearch($file[$i][0], $file[$i][1], $file[$i][2], $file[$i][3], $file[$i][4], $file[$i][5], $file[$i][6], $file[$i][7], $file[$i][8])
If IsArray($return) Then
$file[$i][10] = 1
$file[$i][11] = $return[1]
$file[$i][12] = $return[2]
$file[$i][13] = $return[3]
$file[$i][14] = $return[4]
Else
$file[$i][10] = -1
$file[$i][11] = 0
$file[$i][12] = 0
$file[$i][13] = 0
$file[$i][14] = 0
EndIf
Next
For $i = 0 To UBound($file) - 1
If $any_or_all == "all" Then
If $file[$i][9] == "not" Then
If $file[$i][10] = -1 Then $done += 1
Else
If $file[$i][10] = 1 Then $done += 1
EndIf
EndIf
If $any_or_all = "any" Then
If $file[$i][9] == "not" Then
If $file[$i][10] = -1 Then $done = UBound($file)
Else
If $file[$i][10] = 1 Then $done = UBound($file)
EndIf
EndIf
Next
If $done >= UBound($file) Then return ($file)
If TimerDiff($begin) >= $duration Then
SetError(1)
return ($file)
EndIf
WEnd
Else
$file = StringReplace($file, " ", "")
If StringInStr($file, ",") Then
$aFiles = StringSplit($file, ",")
While 1
$done = 0
$not_done = 0
For $i = 1 To $aFiles[0]
$return = _imagesearch($aFiles[$i], $left, $top, $right, $bottom, "transblack", 10, 3, 1)
Sleep(100)
If IsArray($return) Then
$done += 1
Else
$not_done += 1
EndIf
If $any_or_all == "any" And $not = 0 And $done >= 1 Then return (1)
If $any_or_all == "any" And $not = 1 And $not_done >= 1 Then return (-1)
If $any_or_all == "all" And $not = 0 And $done >= $aFiles[0] Then return (1)
If $any_or_all == "all" And $not = 1 And $not_done >= $aFiles[0] Then return (-1)
Next
If TimerDiff($begin) >= $duration Then return (0)
WEnd
Else
While 1
$return = _imagesearch($file, $left, $top, $right, $bottom, "transblack", 10, 3, 1)
If $not = 1 And Not IsArray($return) Then return (-1)
If $not = 0 And IsArray($return) Then return (1)
If TimerDiff($begin) >= $duration Then return (0)
Sleep(100)
WEnd
EndIf
EndIf
EndFunc ;==>_Wait_For
http://www.autoitscript.com/forum/topic ... _p__868798
===============================================================================================
Otra función de imágenes:
FindBmp - Busca una imagen.bmp dentro de otra imagen.bmp
http://www.autoitscript.com/forum/topic ... agesearch/
Código: Seleccionar todo
;===============================================================================
; Function Name: findBMP
; Description: Finds a bitmap (.BMP) in another BMP file (other formats BMP, GIF, JPEG, PNG, TIFF, Exif, WMF, and EMF should work but not tested)
; Syntax: findBMP($BMP1, $BMP2, $MatchType=TRUE)
;
; Parameter(s): $BMP1 = Filename of bitmap to search in
; $BMP2 = Filename of bitmap to search for
; $MatchType = c24RGBFullMatch, c24RGBPartialMatch, c16RGBFullMatch, c16RGBPartialMatch
;
; Return Value(s): On Success: = Returns Array List
; On Failure: = @error 1 (Control was found but there was an error with the DLLCall)
;
; Author(s): JunkEW
;
; Note(s):
; * Its never an exact match even with TRUE as last few bits are disposed in algorithm and lines below
; are not checked under assumption that those are 99.99% of the time correct
; * locking bits overview http://www.bobpowell.net/lockingbits.htm
; ToDo:
; * Transparency (when search letters on a different background) http://www.winprog.org/tutorial/transparency.html
; * Match quicker by doing a bitblt with srcinvert when first line is found (instead of checking line by line)
; * $BMP1 and $BMP2 to be HBITMAP handle as input instead of filenames (will make searching within partial screen easier)
; Example(s):
;
;===============================================================================
Func findBMP($BMP1, $BMP2, $MatchType=$c24RGBFullMatch)
Dim $fLine[1];Line number of found line(s), redimmed when second picture size is known
Dim $BMP1Data="", $BMP1Width=0, $BMP1Height=0, $BMP1LineWidth=0;
Dim $BMP2Data="", $BMP2Width=0, $BMP2Height=0, $BMP2LineWidth=0
Dim $foundAt = "", $matchPossible=FALSE, $matchedLines=0, $foundAtLeft=-1, $foundAtTop=-1
Dim $bestMatchLine=-1, $HighestMatchingLines=-1; For knowing when no match is found where best area is
Dim $iPos=1;
dim $imgBytes;
local $iFuzzyDist, $searchFor, $iAbove, $bMatchPossible, $aboveLine
local $j, $imgBits
if ($MatchType=$c24RGBFullMatch) or ($matchtype=$c24RGBPartialMatch) then
$imgBytes=3
Else
$imgBytes=2
endif
; Load the bitmap to search in
getImage($BMP1, $BMP1Data, $BMP1Width, $BMP1Height, $BMP1LineWidth, $imgBytes)
$BMP1Data = BinaryToString($BMP1Data)
; Load the bitmap to find
getImage($BMP2, $BMP2Data, $BMP2Width, $BMP2Height, $BMP2LineWidth, $imgBytes)
;Make it strings to be able to use string functions for searching
$BMP2Data = BinaryToString($BMP2Data)
;For reference of line where in BMP2FindIn a line of BMP2Find was found
If $BMP2Height = 0 Then
SetError(1,0,0)
Return False
EndIf
ReDim $fline[$BMP2Height]
;If exact match check every 1 line else do it more fuzzy (as most likely other lines are unique)
if ($MatchType=$c24RGBFullMatch) or ($matchtype=$c16RGBFullMatch) Then
$iFuzzyDist = 1
Else
;Check fuzzy every 10% of lines
$iFuzzyDist = ceiling(($bmp2height * 0.1))
endIf
$begin = TimerInit()
;Look for each line of the bitmap if it exists in the bitmap to find in
For $i = 0 To $BMP2Height - 1
;Minus imgbytes as last bits are padded with unpredictable bytes (24 bits image assumption) or 2 when 16 bits
$searchFor = StringMid($BMP2Data, 1 + ($i * $BMP2lineWidth), ($BMP2lineWidth - $imgBytes))
$iPos = StringInStr($BMP1Data, $searchFor, 2, 1, $iPos)
; $iPos = StringInStr($BMP1Data, $searchFor)
;Look for all lines above if there is also a match
;Not doing it for the lines below as speed is more important and risk of mismatch on lines below is small
$iAbove=1
if $iPos > 0 then
$bMatchPossible=True
$matchedLines=1;As first found line is matched we start counting
;Location of the match
$foundAtTop = Int($iPos / $BMP1lineWidth) -$i
$foundAtLeft = int(mod($iPos,$bmp1linewidth) / $imgBytes)
Else
$bMatchPossible=false
exitloop
endif
while (($i+$iAbove) <= ($BMP2Height -1)) and ($bMatchPossible=True)
$searchFor = StringMid($BMP2Data, 1 + (($i + $iAbove) * $BMP2lineWidth), ($BMP2lineWidth - $imgBytes))
$aboveLine = stringmid($BMP1Data,$iPos + ($iAbove * $BMP1LineWidth), ($BMP2LineWidth - $imgBytes))
if $aboveLine <> $searchFor Then
$bMatchPossible=False
;To remember the area with the best match
if $matchedLines >= $HighestMatchingLines Then
$HighestMatchingLines = $matchedLines
;Best guess of location
;~ $foundAtTop = $fline[$i] + $i - $BMP2Height
$foundAtTop = Int($iPos / $BMP1lineWidth);+ $i - $BMP2Height
$bestMatchLine = Int($iPos / $BMP1lineWidth)
EndIf
ExitLoop
EndIf
$matchedLines=$matchedLines + 1
$iAbove=$iAbove+$iFuzzyDist
WEnd
;If bMatchPossible is still true most likely we have found the bitmap
if $bmatchPossible = True then
;~ ConsoleWrite("Could match top: " & $foundAtTop & " left: " & $foundAtLeft & " in " & TimerDiff($begin) / 1000 & " seconds" & @LF)
; MouseMove($foundatleft,$foundatTop)
exitloop
else
;~ consolewrite("i not matched " & $ipos & " " & $matchedlines & @crlf )
EndIf
Next
;For some debugging of time
; if $bMatchPossible = True Then
; ConsoleWrite("Searching took " & TimerDiff($begin) / 1000 & " seconds " & @LF)
; Else
; ConsoleWrite("NOT FOUND Searching took " & TimerDiff($begin) / 1000 & " seconds" & @LF)
; endif
;Return an error if not found else return an array with all information
if $bMatchPossible = False Then
SetError(1, 0, 0)
endif
; return stringsplit($bMatchPossible & ";" & $matchedLines & ";" & $foundAtLeft & ";" & $foundAtTop & ";" & $bmp2width & ";" & $BMP2Height & ";" & $HighestMatchingLines & ";" & $bestMatchLine,";")
return $bMatchPossible & ";" & $matchedLines & ";" & $foundAtLeft & ";" & $foundAtTop & ";" & $bmp2width & ";" & $BMP2Height & ";" & $HighestMatchingLines & ";" & $bestMatchLine
EndFunc;==>findBMP
Func GetImage($BMPFile, byref $BMPDataStart, byref $Width, byRef $Height, byref $Stride, $imgBytes=3)
local $Scan0, $pixelData, $hbScreen, $pBitmap, $pBitmapCap, $handle
; Load the bitmap to search in
If $BMPFile="SCREEN" Then
$hbScreen=_ScreenCapture_Capture("",0,0,-1,-1,False)
$pBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hbScreen); returns memory bitmap
Else
;try to get a handle
$handle = WinGetHandle($BMPFile)
If @error Then
;Assume its an unknown handle so correct filename should be given
$pBitmap = _GDIPlus_BitmapCreateFromFile($BMPFile)
Else
$hbScreen=_ScreenCapture_CaptureWnd("",$handle,0,0,-1,-1,False)
$pBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hbScreen); returns memory bitmap
EndIf
EndIf
;Get $tagGDIPBITMAPDATA structure
;~ ConsoleWrite("Bitmap Width: " & _GDIPlus_ImageGetWidth($pBitmap) & @CRLF )
;~ ConsoleWrite("Bitmap Height: " & _GDIPlus_ImageGetHeight($pBitmap) & @CRLF)
;~ 24 bits (3 bytes) or 16 bits (2 bytes) comparison
if ($imgBytes=2) then
$BitmapData= _GDIPlus_BitmapLockBits($pBitmap, 0, 0, _GDIPlus_ImageGetWidth($pBitmap), _GDIPlus_ImageGetHeight($pBitmap), $GDIP_ILMREAD, $GDIP_PXF16RGB555)
Else
$BitmapData= _GDIPlus_BitmapLockBits($pBitmap, 0, 0, _GDIPlus_ImageGetWidth($pBitmap), _GDIPlus_ImageGetHeight($pBitmap), $GDIP_ILMREAD, $GDIP_PXF24RGB)
endIf
If @ERROR Then MsgBox(0,"","Error locking region " & @error)
$Stride = DllStructGetData($BitmapData, "Stride");Stride - Offset, in bytes, between consecutive scan lines of the bitmap. If the stride is positive, the bitmap is top-down. If the stride is negative, the bitmap is bottom-up.
$Width = DllStructGetData($BitmapData, "Width");Image width - Number of pixels in one scan line of the bitmap.
$Height = DllStructGetData($BitmapData, "Height");Image height - Number of scan lines in the bitmap.
$PixelFormat = DllStructGetData($BitmapData, "PixelFormat");Pixel format - Integer that specifies the pixel format of the bitmap
$Scan0 = DllStructGetData($BitmapData, "Scan0");Scan0 - Pointer to the first (index 0) scan line of the bitmap.
$pixelData = DllStructCreate("ubyte lData[" & (abs($Stride) * $Height-1) & "]", $Scan0)
$BMPDataStart = $BMPDataStart & DllStructGetData($pixeldata,"lData")
_GDIPlus_BitmapUnlockBits($pBitmap, $BitmapData)
_GDIPlus_ImageDispose ($pBitmap)
_WinAPI_DeleteObject ($pBitmap)
EndFunc;==>GetImage
PD:
Uso de otras librerias con OCR:
GoOcr, convierte en modo batch una imagen escaneada en su text: http://jocr.sourceforge.net/index.html
Busqueda de objetos especiales: http://www.autoitscript.com/forum/topic ... m-objects/
http://www.autoitscript.com/forum/topic ... erful-ocr/
http://www.autoitscript.com/forum/topic ... _p__836866
- Adjuntos
-
- test simple que funciona imagesearch.zip
- test simple que funciona imagesearch con una imagen
- (40.82 KiB) Descargado 628 veces
-
- ImageSearch.zip
- Ejemplo ImageSearch completo
- (83.97 KiB) Descargado 625 veces
-
- _wait_for.zip
- wait_for
- (2.33 KiB) Descargado 603 veces
- XPyro
- Profesional del Autoit
- Mensajes: 542
- Registrado: 04 Mar 2007, 10:12
- Ubicación: México
- Contactar:
Re: Avanzado - librerias adicionales, dlls y programas exter
Interesante, muchas gracias por compartirlo
- BasicOs
- Site Admin
- Mensajes: 2091
- Registrado: 21 Nov 2006, 19:24
- Ubicación: El Internet - (Canarias, España)
- Contactar:
Re: Avanzado - librerias adicionales, dlls y programas exter
Actual: Añadida libreria más completas y con ejemplos de 7zip y de otros compresores/decompresores:
http://www.autoitscript.com/forum/topic ... _p__821545
Edit: Grabación de pantallas.
http://www.autoitscript.com/forum/topic ... ebcam-udf/
Una librería para grabar de la cam: _WebcamSnapShot()
Edit:
Graba lo que sale en pantalla: CamStudio.org http://www.camstudio.es/
En modo comando: camstudiocl.exe -outputfile mivideo.avi -seconds 30
http://camstudio.org/blog/camstudio-com ... 1-released
Edit: Añadido Ocr batch convertir bmp en text: http://jocr.sourceforge.net/index.html
http://www.autoitscript.com/forum/topic ... _p__821545
Código: Seleccionar todo
ArcFile = FileSaveDialog("Crea nuevo fichero comprimido", "", "Archive Files (*.7z;*.zip;*.gzip;*.bzip2;*.tar)")
If @error Then Exit
$FileName = FileSelectFolder("Selecciona una carpeta", "")
If @error Then Exit
$retResult = _7ZipAdd(0, $ArcFile, $FileName)
If @error Then
MsgBox(64, "_7ZipAdd", "Error ocurrido")
Else
MsgBox(64, "_7ZipAdd", "Archive creación correcta" & @LF & _
$retResult)
EndIf
http://www.autoitscript.com/forum/topic ... ebcam-udf/
Una librería para grabar de la cam: _WebcamSnapShot()
Edit:
Graba lo que sale en pantalla: CamStudio.org http://www.camstudio.es/
En modo comando: camstudiocl.exe -outputfile mivideo.avi -seconds 30
http://camstudio.org/blog/camstudio-com ... 1-released
Edit: Añadido Ocr batch convertir bmp en text: http://jocr.sourceforge.net/index.html
- Adjuntos
-
- 7Zip_UDF.zip
- 7Zip_UDF
- (8.88 KiB) Descargado 600 veces
- BasicOs
- Site Admin
- Mensajes: 2091
- Registrado: 21 Nov 2006, 19:24
- Ubicación: El Internet - (Canarias, España)
- Contactar:
Re: Avanzado - librerias adicionales, dlls y programas exter
Enlace de base de datos(en textos) con un Iphone. (Solo librería php añadida, no hay librería Autoit en este momento, ¿si alguien la tiene, si lo desea puede publicarla?)
SimplenoteApi enviar datos a la "nube" y recuperarlos con la aplicación simplenote desde un Iphone.
Una librería en php para enviar altas bajas consultas, etc, hacia una base de datos de simplenote.
Posteriormente o en paralelo estos datos se usan en una aplicación para IPHONE (simplenote) que sirve para hacer y organizar notas de texto, como un WordPad-Notepad online.
La ventaja es enviar datos al IPHONE, y que se almacenan en un almacen en una carpeta facilmente recuperable desde el IPHONE, como en una base de datos.
Para usar php con Autoit se hará de las maneras usuales, con las funciones _IE(), (o bien las de comunicación por TCP, o http.)
Librería simplenote:
http://fletcherpenney.net/other_project ... enotesync/
https://github.com/abrahamvegh/simpleno ... oteapi.php
Ejemplo de Uso de la librería para un programa en Perl que sincroniza una carpeta con ficheros txt:
http://svn.habariproject.org/habari-ext ... ted/trunk/
https://github.com/abrahamvegh/simplenote-php
https://simple-note.appspot.com/api/ que consisten, Autoit :
Recuperar el texto de una nota online:
public function get_note($clave_delanota)
Guardar una nota en la nube:
public function save_note($content, $note_key = '')
Borrar una nota en la nube:
public function delete_note($note_key)
Login:
public function login($email, $password)
Busqueda en las notas:
public function search($search_term, $max_results = 10, $offset_index = 0)
LLamando a la función con un llamada a un php:
Simplenote es gratuito: http://simplenoteapp.com/features/
Salu22:)
Edit ejemplo Perl
SimplenoteApi enviar datos a la "nube" y recuperarlos con la aplicación simplenote desde un Iphone.
Una librería en php para enviar altas bajas consultas, etc, hacia una base de datos de simplenote.
Posteriormente o en paralelo estos datos se usan en una aplicación para IPHONE (simplenote) que sirve para hacer y organizar notas de texto, como un WordPad-Notepad online.
La ventaja es enviar datos al IPHONE, y que se almacenan en un almacen en una carpeta facilmente recuperable desde el IPHONE, como en una base de datos.
Para usar php con Autoit se hará de las maneras usuales, con las funciones _IE(), (o bien las de comunicación por TCP, o http.)
Librería simplenote:
http://fletcherpenney.net/other_project ... enotesync/
https://github.com/abrahamvegh/simpleno ... oteapi.php
Ejemplo de Uso de la librería para un programa en Perl que sincroniza una carpeta con ficheros txt:
http://svn.habariproject.org/habari-ext ... ted/trunk/
https://github.com/abrahamvegh/simplenote-php
Enviando consultas PHP hacia una URL:Como funcionan:
https://simple-note.appspot.com/api/ que consisten, Autoit :
Recuperar el texto de una nota online:
public function get_note($clave_delanota)
Guardar una nota en la nube:
public function save_note($content, $note_key = '')
Borrar una nota en la nube:
public function delete_note($note_key)
Login:
public function login($email, $password)
Busqueda en las notas:
public function search($search_term, $max_results = 10, $offset_index = 0)
LLamando a la función con un llamada a un php:
$url . "delete?key=$key&auth=$token&email=$email"
Código: Seleccionar todo
my $response = $ua->get($url . "delete?key=$key&auth=$token&email=$email");
return $response->content;
Un ejemplo de finalidad del programa, puede ser mantener en sync o hacer backups de unos ficheros de textos, o bien una base Sqlite, o bien archivos ini, o bien listas de links o enlaces http con otra información que se pueda acceder, telefonos, citas, facturación, etc.., con la base online (en la nube) accesible también por un botón de la barra del navegador en windows, por el iphone y por otros entornos que acceden a la base.Simple PHP interface for the Simplenote API (no pun intended)
* Created by Abraham Vegh
* http://github.com/abrahamvegh/simplenote-php/
Simplenote es gratuito: http://simplenoteapp.com/features/
Salu22:)
Edit ejemplo Perl
- BasicOs
- Site Admin
- Mensajes: 2091
- Registrado: 21 Nov 2006, 19:24
- Ubicación: El Internet - (Canarias, España)
- Contactar:
Re: Avanzado - librerias adicionales, dlls y programas exter
Fichero de prueba de una base de datos mysql, llamar test.php
Es un form html que pide los datos de conexión de la base de datos y comprueba que es correcta la conexión.
Es útil para cuando creamos el string _MySQLConnect("sa","sa","mydb","miSitioweb.com"):
Busqueda mysql del foro
Fichero test.php
subir a un servidor php y usar con su dirección http://www.miservidor.com/test.php
Salu22:)
Es un form html que pide los datos de conexión de la base de datos y comprueba que es correcta la conexión.
Es útil para cuando creamos el string _MySQLConnect("sa","sa","mydb","miSitioweb.com"):
Busqueda mysql del foro
Código: Seleccionar todo
#include "MySQL.au3"
$sql = _MySQLConnect("sa","sa","mydb","mywebsite.com") ;usando libreria mysql directamente
$var = _Query($sql,"SELECT * FROM mytable WHERE user = 'pepe'") ; creo un select para buscar los registros de mytable de pepe
;algun msgbox.. si quiero anunciar algo
While NOT $var.EOF ; hace el bucle hasta que llegue al final de la consulta del select
;=>> aqui alguna función que haga algo con los datos la manipulas como texto,
;=>> recuperas el valor de las variables/campos user y telefono con->
MsgBox(0,"Recupere mis datos del Sql","El usuario es " & $var.Fields("user").value & ", y este es su telefono" & $var.Fields("telefono").value)
$var.MoveNext ; mueve al siguiente registro del select
WEnd
_MySQLEnd($sql) ;cierra la conexión
subir a un servidor php y usar con su dirección http://www.miservidor.com/test.php
Código: Seleccionar todo
<?php
###################################### C O P Y R I G H T S ####################################
# THIS SCRIPT IS DISTRIBUTED BY WEBUNE.COM UNDER LICENSE UNDER THE GPL RULES
# PLEASE DO NOT REMOVE THIS MESSAGE IN SUPPORT OF OUR HARD WORK TO CONTINUE TO PROVIDE FREE SUPPORT
###############################################################################################
# OK, HERE WE GO
# Use this varialble if you are using an installation script
$step = $_GET['step'];
if (!$step) {
$page_title = 'Form';
}
else{
$page_title = 'Test MySQL step '.$step;
}
############## BEGIN FUNCTIONS ##############################
# FUNCTION TO TEST USERNAME AND PASSWORD IN MYSQL HOST
function db_connect($server, $username, $password, $link = 'db_link') {
global $$link, $db_error;
$db_error = false;
if (!$server) {
$db_error = 'No Server selected.';
return false;
}
$$link = @mysql_connect($server, $username, $password) or $db_error = mysql_error();
return $$link;
}
# FUNCTION TO SELECT DATABASE ACCESS
function db_select_db($database) {
echo mysql_error();
return mysql_select_db($database);
}
# FUNCTION TO TEST DATABASE ACCESS
function db_test_create_db_permission($database) {
global $db_error;
$db_created = false;
$db_error = false;
if (!$database) {
$db_error = 'No Database selected.';
return false;
}
if ($db_error) {
return false;
} else {
if (!@db_select_db($database)) {
$db_error = mysql_error();
return false;
}else {
return true;
}
return true;
}
}
function step1 ($error) {
echo '<h1 style="color:#FF0000">'.$error.'</h1><hr>';
?>
<form name="form1" method="post" action="<?php $_SERVER['PHP_SELF']; ?>?step=2">
<table border="0" cellspacing="5" cellpadding="5">
<tr>
<td><div align="right">mysql hostname:</div></td>
<td><input name="server" type="text" value="<?php echo $_REQUEST['server']; ?>">
(usually "localhost" or enter IP Address of MySQL Server)</td>
</tr>
<tr>
<td><div align="right">mysql username:</div></td>
<td><input type="text" name="username" value="<?php echo $_REQUEST['username']; ?>"></td>
</tr>
<tr>
<td><div align="right">mysql username password:</div></td>
<td><input type="text" name="password" value="<?php echo $_REQUEST['password']; ?>"></td>
</tr>
<tr>
<td><div align="right">mysql database name:</div></td>
<td><input type="text" name="database" value="<?php echo $_REQUEST['database']; ?>"></td>
</tr>
<tr>
<td colspan="2"><input type="submit" name="Submit" value="Submit"></td>
</tr>
</table>
</form>
<?php
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Webune MYSQL TEST - <?php echo $page_title; ?></title>
</head>
<body>
<h1><?php echo $page_title; ?></h1>
<?php
############## END FUNCTIONS ##############################
switch ($step) {
case '2':
if ($_REQUEST['server']) {
$db = array();
$db['DB_SERVER'] = trim(stripslashes($_REQUEST['server']));
$db['DB_SERVER_USERNAME'] = trim(stripslashes($_REQUEST['username']));
$db['DB_SERVER_PASSWORD'] = trim(stripslashes($_REQUEST['password']));
$db['DB_DATABASE'] = trim(stripslashes($_REQUEST['database']));
$db_error = false;
db_connect($db['DB_SERVER'], $db['DB_SERVER_USERNAME'], $db['DB_SERVER_PASSWORD']);
if ($db_error == false) {
if (!db_test_create_db_permission($db['DB_DATABASE'])) {
$error = $db_error;
}
} else {
$error = $db_error;
}
if ($db_error != false) {
$error = "failed";
echo step1($db_error);
} else {
echo '<h1 style="color:green">Congratulations!</h1>
Connected Successfuly to datbase <strong>
<a href="http://www.webune.com/forums/how-to-test-mysql-database-connection.html">Continue >> </a></strong>';
}
} else {
$error = "ERROR: please provide a hostanme";
echo step1($error);
}
break;
default:
echo step1('Step 1');
break;
}
?>
<div align="center">
<img src="http://www.webune.com/images/headers/default_logo.jpg">
</div>
<div align="center">
Script Courtesy of
<a href="http://www.webune.com">Webune PHP/Mysql Hosting</a></div>
</body>
</html>
- BasicOs
- Site Admin
- Mensajes: 2091
- Registrado: 21 Nov 2006, 19:24
- Ubicación: El Internet - (Canarias, España)
- Contactar:
Re: Avanzado - librerias adicionales, dlls y programas exter
Scite Hopper
Para programas extensos, un añadido del scite en autoit.au3:http://www.autoitscript.com/forum/topic ... one-click/
XMLGET()
Del programa de valenbisi de Jamaro viene un ejemplo de uso de las funciones de lectura del XML para xml remotos.
La función es megasencilla de usar, para conseguir un dato de un fichero xml remoto o local sería:
XMLget("nombredelFichero.xml","llave o ruta Del dato a Devolverel Valor")
con datos: XMLget("data.xml",'adc_database\currentconditions\realfeel')
con un mensaje: MsgBox(0, 'DONE!!!', XMLget($file, 'adc_database\currentconditions\realfeel'))
Por ejemplo:
la llave adc_database\currentconditions\realfeel' sería dentro del XML:
adc_database base de datos --> <adc_database xmlns="http://www.accuweather.com">
\currentconditions ---> otra clave con valores dentro
\realfeel' -----> Uno de los valores dentro de currentconditions que se llama realfeel y vale 26
Código con un ejemplo y con la función:
llamar data.xml
Para programas extensos, un añadido del scite en autoit.au3:http://www.autoitscript.com/forum/topic ... one-click/
XMLGET()
Del programa de valenbisi de Jamaro viene un ejemplo de uso de las funciones de lectura del XML para xml remotos.
La función es megasencilla de usar, para conseguir un dato de un fichero xml remoto o local sería:
XMLget("nombredelFichero.xml","llave o ruta Del dato a Devolverel Valor")
con datos: XMLget("data.xml",'adc_database\currentconditions\realfeel')
con un mensaje: MsgBox(0, 'DONE!!!', XMLget($file, 'adc_database\currentconditions\realfeel'))
Por ejemplo:
la llave adc_database\currentconditions\realfeel' sería dentro del XML:
adc_database base de datos --> <adc_database xmlns="http://www.accuweather.com">
\currentconditions ---> otra clave con valores dentro
\realfeel' -----> Uno de los valores dentro de currentconditions que se llama realfeel y vale 26
Salu22:)<currentconditions>
<url>http://www.accuweather.com/country/stat ... stbar</url>
<pressure state="Unavailable">1011.227</pressure>
<temperature>27</temperature>
<realfeel>26</realforefeel>
<humidity>43%</humidity>
<weathertext>Partly Sunny</weathertext>
<weathericon>03</weathericon>
<windgusts>3</windgusts>
<windspeed>2</windspeed>
<winddirection>SSE</winddirection>
<visibility>14</visibility>
<precip>0</precip>
<uvindex index="0">Low</uvindex>
</currentconditions>
Código con un ejemplo y con la función:
Base de datos en xml para usar en el ejemplo:Local $xmlPath = @ScriptDir & '\data.xml'
If Not FileExists($xmlPath) Then Exit
$file = FileRead($xmlPath)
$file = StringReplace($file, @LF, '')
$file = StringSplit($file, @CR, 1)
MsgBox(0, 'DONE!!!', XMLget($file, 'adc_database\currentconditions\realfeel'))
MsgBox(0, 'DONE!!!', XMLget($file, 'adc_database\planets\sun'))
MsgBox(0, 'DONE!!!', XMLget($file, 'adc_database\forecast\day number="1"\daytime\txtlong'))
MsgBox(0, 'DONE!!!', XMLget($file, 'adc_database\currentconditions\pressure'))
Func XMLget($file, $Path); XMLget($file,'adc_database\currentconditions\realfeel')
$Path = StringSplit($Path, '/\|', 0)
$lastline = 0
For $lvl = 1 To $Path[0] Step 1
For $line = $lastline To $file[0] Step 1
$lastline = $line
$hstart = StringInStr($file[$line], '<' & $Path[$lvl] & '>', 0)
$hstarta = StringInStr($file[$line], '<' & $Path[$lvl] & ' ', 0)
If $hstart Or $hstarta Then
If $lvl == $Path[0] Then
If $hstart Then
$end = StringInStr($file[$line], '</' & $Path[$lvl] & '>', 0)
If $end Then
$hstart = $hstart + StringLen('<' & $Path[$lvl] & '>')
Return StringMid($file[$line], $hstart, $end - $hstart)
EndIf
EndIf
If $hstarta Then
$end = StringInStr($file[$line], '/>', 0)
If $end Then
$hstarta = $hstarta + StringLen('<' & $Path[$lvl] & ' ')
$return = StringMid($file[$line], $hstarta, $end - $hstarta)
Return $return
EndIf
$ends = StringInStr($file[$line], '>', 0)
If $ends Then
$hstart = $ends + 1
$end = StringInStr($file[$line], '</' & $Path[$lvl] & '>', 0)
If $end Then
$return = StringMid($file[$line], $hstart, $end - $hstart)
Return $return
EndIf
EndIf
EndIf
EndIf
ContinueLoop 2
EndIf
Next
If $line == $file[0] Then ExitLoop
Next
Return 'not found'
EndFunc ;==>XMLget
llamar data.xml
<?xml version="1.0" ?>
<adc_database xmlns="http://www.accuweather.com">
<units>
<temp>C</temp>
<dist>km</dist>
<speed>m/s</speed>
<pres>mb</pres>
<prec>cm</prec>
</units>
<local>
<ufdb>DRHX</ufdb>
<city>Dearborn Heights</city>
<state>MI</state>
<lat>42.34</lat>
<lon>-83.28</lon>
<time>19:42</time>
<gmtdiff daylightsavings="1">-5</gmtdiff>
</local>
<watchwarnareas zone="MIZ076" county="MIC163" isactive="0">
<url> http://www.accuweather.com/watches-warn ... IZ076</url>
</watchwarnareas>
<currentconditions>
<url>http://www.accuweather.com/country/stat ... stbar</url>
<pressure state="Unavailable">1011.227</pressure>
<temperature>27</temperature>
<realfeel>26</realforefeel>
<humidity>43%</humidity>
<weathertext>Partly Sunny</weathertext>
<weathericon>03</weathericon>
<windgusts>3</windgusts>
<windspeed>2</windspeed>
<winddirection>SSE</winddirection>
<visibility>14</visibility>
<precip>0</precip>
<uvindex index="0">Low</uvindex>
<radurl>http://www.accuweather.com/radar-state. ... LL</radurl>
</currentconditions>
<airandpollen>
<tree>L(7)</tree>
<weed>L(5)</weed>
<grass>M(12)</grass>
<mold>H(14000)</mold>
<airquality>M(75)</airquality>
<airqualitytype>0</airqualitytype>
</airandpollen>
<planets>
<sun rise="05:59" set="21:14"/>
<moon rise="13:01" set="00:25"/>
<mercury rise="04:49" set="19:45"/>
<venus rise="03:27" set="17:31"/>
<mars rise="03:12" set="17:27"/>
<jupiter rise="23:55" set="10:23"/>
<saturn rise="11:54" set="00:55"/>
<uranus rise="01:04" set="12:57"/>
<neptune rise="23:52" set="10:21"/>
<pluto rise="20:23" set="06:16"/>
</planets>
<moon>
<phase date="6/27/2009" text="Waxing Crescent" >5</phase>
<phase date="6/28/2009" text="Waxing Crescent" >6</phase>
<phase date="6/29/2009" text="First" >7</phase>
<phase date="6/30/2009" text="Waxing Gibbous" >7</phase>
<phase date="7/1/2009" text="Waxing Gibbous" >8</phase>
<phase date="7/2/2009" text="Waxing Gibbous" >9</phase>
<phase date="7/3/2009" text="Waxing Gibbous" >10</phase>
<phase date="7/4/2009" text="Waxing Gibbous" >11</phase>
<phase date="7/5/2009" text="Waxing Gibbous" >12</phase>
<phase date="7/6/2009" text="Waxing Gibbous" >13</phase>
<phase date="7/7/2009" text="Full" >14</phase>
<phase date="7/8/2009" text="Waning Gibbous" >14</phase>
<phase date="7/9/2009" text="Waning Gibbous" >15</phase>
<phase date="7/10/2009" text="Waning Gibbous" >16</phase>
<phase date="7/11/2009" text="Waning Gibbous" >17</phase>
<phase date="7/12/2009" text="Waning Gibbous" >18</phase>
<phase date="7/13/2009" text="Waning Gibbous" >19</phase>
<phase date="7/14/2009" text="Waning Gibbous" >20</phase>
<phase date="7/15/2009" text="Last" >21</phase>
<phase date="7/16/2009" text="Waning Crescent" >22</phase>
<phase date="7/17/2009" text="Waning Crescent" >23</phase>
<phase date="7/18/2009" text="Waning Crescent" >24</phase>
<phase date="7/19/2009" text="Waning Crescent" >25</phase>
<phase date="7/20/2009" text="Waning Crescent" >26</phase>
<phase date="7/21/2009" text="Waxing Crescent" >26</phase>
<phase date="7/22/2009" text="New" >26</phase>
<phase date="7/23/2009" text="Waxing Crescent" >26</phase>
<phase date="7/24/2009" text="Waxing Crescent" >26</phase>
<phase date="7/25/2009" text="Waxing Crescent" >26</phase>
<phase date="7/26/2009" text="Waxing Crescent" >26</phase>
<phase date="7/27/2009" text="Waxing Crescent" >26</phase>
<phase date="7/28/2009" text="First" >26</phase>
</moon>
<images>
<radar>
http://sirocco.accuweather.com/nx_mosai ... gif</radar>
</images>
<forecast>
<url>http://www.accuweather.com/country/stat ... stbar</url>
<hbh>http://www.accuweather.com/forecast-hou ... ric=0</hbh>
<day number="1">
<url>http://www.accuweather.com/forecast-det ... day=1</url>
<obsdate>6/27/2009</obsdate>
<daycode>Saturday</daycode>
<sunrise>05:59</sunrise>
<sunset>21:14</sunset>
<daytime>
<txtshort>Partly sunny and warm</txtshort>
<txtlong>Warm with times of clouds and sun</txtlong>
<weathericon>04</weathericon>
<hightemperature>29</hightemperature>
<lowtemperature>17</lowtemperature>
<realfeelhigh>32</realfeelhigh>
<realfeellow>17</realfeellow>
<windspeed>0.834</windspeed>
<winddirection>SSE</winddirection>
<windgust>2.224</windgust>
<maxuv>7</maxuv>
<rainamount>0</rainamount>
<snowamount>0.00</snowamount>
<precipamount>0</precipamount>
<tstormprob>18</tstormprob>
</daytime>
<nighttime>
<txtshort>A late-night thunderstorm</txtshort>
<txtlong>Turning cloudy with a shower or thunderstorm around late</txtlong>
<weathericon>42</weathericon>
<hightemperature>29</hightemperature>
<lowtemperature>17</lowtemperature>
<realfeelhigh>32</realfeelhigh>
<realfeellow>17</realfeellow>
<windspeed>2.224</windspeed>
<winddirection>S</winddirection>
<windgust>3.892</windgust>
<maxuv></maxuv>
<rainamount>0</rainamount>
<snowamount>0.00</snowamount>
<precipamount>0</precipamount>
<tstormprob>40</tstormprob>
</nighttime>
</day>
<day number="2">
<url>http://www.accuweather.com/forecast-det ... day=2</url>
<obsdate>6/28/2009</obsdate>
<daycode>Sunday</daycode>
<sunrise>05:59</sunrise>
<sunset>21:14</sunset>
<daytime>
<txtshort>A morning shower or t-storm</txtshort>
<txtlong>A morning shower or thunderstorm around; otherwise, clouds breaking and breezy</txtlong>
<weathericon>16</weathericon>
<hightemperature>28</hightemperature>
<lowtemperature>15</lowtemperature>
<realfeelhigh>26</realfeelhigh>
<realfeellow>16</realfeellow>
<windspeed>6.672</windspeed>
<winddirection>W</winddirection>
<windgust>12.51</windgust>
<maxuv>6</maxuv>
<rainamount>0.41</rainamount>
<snowamount>0.00</snowamount>
<precipamount>0.41</precipamount>
<tstormprob>40</tstormprob>
</daytime>
<nighttime>
<txtshort>Partly cloudy</txtshort>
<txtlong>Partly cloudy</txtlong>
<weathericon>35</weathericon>
<hightemperature>28</hightemperature>
<lowtemperature>15</lowtemperature>
<realfeelhigh>26</realfeelhigh>
<realfeellow>16</realfeellow>
<windspeed>3.336</windspeed>
<winddirection>WSW</winddirection>
<windgust>9.174</windgust>
<maxuv></maxuv>
<rainamount>0</rainamount>
<snowamount>0.00</snowamount>
<precipamount>0</precipamount>
<tstormprob>9</tstormprob>
</nighttime>
</day>
<day number="3">
<url>http://www.accuweather.com/forecast-det ... day=3</url>
<obsdate>6/29/2009</obsdate>
<daycode>Monday</daycode>
<sunrise>05:59</sunrise>
<sunset>21:14</sunset>
<daytime>
<txtshort>Variable clouds, a t-storm</txtshort>
<txtlong>More clouds than sun; breezy with a shower or thunderstorm around</txtlong>
<weathericon>16</weathericon>
<hightemperature>24</hightemperature>
<lowtemperature>13</lowtemperature>
<realfeelhigh>23</realfeelhigh>
<realfeellow>10</realfeellow>
<windspeed>6.116</windspeed>
<winddirection>WSW</winddirection>
<windgust>11.954</windgust>
<maxuv>5</maxuv>
<rainamount>0.25</rainamount>
<snowamount>0.00</snowamount>
<precipamount>0.25</precipamount>
<tstormprob>40</tstormprob>
</daytime>
<nighttime>
<txtshort>Clouds, a thunderstorm</txtshort>
<txtlong>Considerable cloudiness with a shower or thunderstorm around</txtlong>
<weathericon>15</weathericon>
<hightemperature>24</hightemperature>
<lowtemperature>13</lowtemperature>
<realfeelhigh>23</realfeelhigh>
<realfeellow>10</realfeellow>
<windspeed>6.116</windspeed>
<winddirection>W</winddirection>
<windgust>8.896</windgust>
<maxuv></maxuv>
<rainamount>0.25</rainamount>
<snowamount>0.00</snowamount>
<precipamount>0.25</precipamount>
<tstormprob>40</tstormprob>
</nighttime>
</day>
<day number="4">
<url>http://www.accuweather.com/forecast-det ... day=4</url>
<obsdate>6/30/2009</obsdate>
<daycode>Tuesday</daycode>
<sunrise>05:59</sunrise>
<sunset>21:14</sunset>
<daytime>
<txtshort>A shower possible</txtshort>
<txtlong>Mostly cloudy with a shower possible</txtlong>
<weathericon>06</weathericon>
<hightemperature>21</hightemperature>
<lowtemperature>13</lowtemperature>
<realfeelhigh>21</realfeelhigh>
<realfeellow>11</realfeellow>
<windspeed>5.282</windspeed>
<winddirection>W</winddirection>
<windgust>8.896</windgust>
<maxuv>5</maxuv>
<rainamount>0.13</rainamount>
<snowamount>0.00</snowamount>
<precipamount>0.13</precipamount>
<tstormprob>15</tstormprob>
</daytime>
<nighttime>
<txtshort>Considerable cloudiness</txtshort>
<txtlong>Considerable cloudiness</txtlong>
<weathericon>07</weathericon>
<hightemperature>21</hightemperature>
<lowtemperature>13</lowtemperature>
<realfeelhigh>21</realfeelhigh>
<realfeellow>11</realfeellow>
<windspeed>5.282</windspeed>
<winddirection>W</winddirection>
<windgust>8.34</windgust>
<maxuv></maxuv>
<rainamount>0</rainamount>
<snowamount>0.00</snowamount>
<precipamount>0</precipamount>
<tstormprob>10</tstormprob>
</nighttime>
</day>
<day number="5">
<url>http://www.accuweather.com/forecast-det ... day=5</url>
<obsdate>7/1/2009</obsdate>
<daycode>Wednesday</daycode>
<sunrise>05:59</sunrise>
<sunset>21:14</sunset>
<daytime>
<txtshort>Some sun, a t-storm possible</txtshort>
<txtlong>Times of clouds and sun with a shower or thunderstorm possible</txtlong>
<weathericon>04</weathericon>
<hightemperature>23</hightemperature>
<lowtemperature>14</lowtemperature>
<realfeelhigh>23</realfeelhigh>
<realfeellow>13</realfeellow>
<windspeed>4.726</windspeed>
<winddirection>W</winddirection>
<windgust>7.506</windgust>
<maxuv>6</maxuv>
<rainamount>0</rainamount>
<snowamount>0.00</snowamount>
<precipamount>0</precipamount>
<tstormprob>35</tstormprob>
</daytime>
<nighttime>
<txtshort>Low clouds</txtshort>
<txtlong>Low clouds</txtlong>
<weathericon>08</weathericon>
<hightemperature>23</hightemperature>
<lowtemperature>14</lowtemperature>
<realfeelhigh>23</realfeelhigh>
<realfeellow>13</realfeellow>
<windspeed>4.726</windspeed>
<winddirection>WNW</winddirection>
<windgust>7.506</windgust>
<maxuv></maxuv>
<rainamount>0</rainamount>
<snowamount>0.00</snowamount>
<precipamount>0</precipamount>
<tstormprob>13</tstormprob>
</nighttime>
</day>
<day number="6">
<url>http://www.accuweather.com/forecast-det ... day=6</url>
<obsdate>7/2/2009</obsdate>
<daycode>Thursday</daycode>
<sunrise>05:59</sunrise>
<sunset>21:14</sunset>
<daytime>
<txtshort>A thunderstorm possible</txtshort>
<txtlong>Some sun with a thunderstorm possible</txtlong>
<weathericon>03</weathericon>
<hightemperature>25</hightemperature>
<lowtemperature>17</lowtemperature>
<realfeelhigh>26</realfeelhigh>
<realfeellow>16</realfeellow>
<windspeed>4.448</windspeed>
<winddirection>WNW</winddirection>
<windgust>6.95</windgust>
<maxuv>7</maxuv>
<rainamount>0</rainamount>
<snowamount>0.00</snowamount>
<precipamount>0</precipamount>
<tstormprob>35</tstormprob>
</daytime>
<nighttime>
<txtshort>Mainly clear</txtshort>
<txtlong>Mainly clear</txtlong>
<weathericon>34</weathericon>
<hightemperature>25</hightemperature>
<lowtemperature>17</lowtemperature>
<realfeelhigh>26</realfeelhigh>
<realfeellow>16</realfeellow>
<windspeed>4.726</windspeed>
<winddirection>NW</winddirection>
<windgust>7.784</windgust>
<maxuv></maxuv>
<rainamount>0</rainamount>
<snowamount>0.00</snowamount>
<precipamount>0</precipamount>
<tstormprob>13</tstormprob>
</nighttime>
</day>
<day number="7">
<url>http://www.accuweather.com/forecast-det ... day=7</url>
<obsdate>7/3/2009</obsdate>
<daycode>Friday</daycode>
<sunrise>05:59</sunrise>
<sunset>21:14</sunset>
<daytime>
<txtshort>Mostly sunny and beautiful</txtshort>
<txtlong>Mostly sunny and beautiful</txtlong>
<weathericon>02</weathericon>
<hightemperature>27</hightemperature>
<lowtemperature>17</lowtemperature>
<realfeelhigh>28</realfeelhigh>
<realfeellow>17</realfeellow>
<windspeed>4.448</windspeed>
<winddirection>NNW</winddirection>
<windgust>7.506</windgust>
<maxuv>7</maxuv>
<rainamount>0</rainamount>
<snowamount>0.00</snowamount>
<precipamount>0</precipamount>
<tstormprob>17</tstormprob>
</daytime>
<nighttime>
<txtshort>Partly cloudy</txtshort>
<txtlong>Partly cloudy</txtlong>
<weathericon>35</weathericon>
<hightemperature>27</hightemperature>
<lowtemperature>17</lowtemperature>
<realfeelhigh>28</realfeelhigh>
<realfeellow>17</realfeellow>
<windspeed>3.892</windspeed>
<winddirection>N</winddirection>
<windgust>7.506</windgust>
<maxuv></maxuv>
<rainamount>0</rainamount>
<snowamount>0.00</snowamount>
<precipamount>0</precipamount>
<tstormprob>13</tstormprob>
</nighttime>
</day>
<day number="8">
<url>http://www.accuweather.com/forecast-det ... day=8</url>
<obsdate>7/4/2009</obsdate>
<daycode>Saturday</daycode>
<sunrise>05:59</sunrise>
<sunset>21:14</sunset>
<daytime>
<txtshort>Some sun</txtshort>
<txtlong>Some sun</txtlong>
<weathericon>03</weathericon>
<hightemperature>29</hightemperature>
<lowtemperature>19</lowtemperature>
<realfeelhigh>33</realfeelhigh>
<realfeellow>18</realfeellow>
<windspeed>0.834</windspeed>
<winddirection>N</winddirection>
<windgust>2.502</windgust>
<maxuv>7</maxuv>
<rainamount>0</rainamount>
<snowamount>0.00</snowamount>
<precipamount>0</precipamount>
<tstormprob>14</tstormprob>
</daytime>
<nighttime>
<txtshort>Patchy clouds</txtshort>
<txtlong>Patchy clouds</txtlong>
<weathericon>35</weathericon>
<hightemperature>29</hightemperature>
<lowtemperature>19</lowtemperature>
<realfeelhigh>33</realfeelhigh>
<realfeellow>18</realfeellow>
<windspeed>1.668</windspeed>
<winddirection>SSE</winddirection>
<windgust>5.282</windgust>
<maxuv></maxuv>
<rainamount>0</rainamount>
<snowamount>0.00</snowamount>
<precipamount>0</precipamount>
<tstormprob>0</tstormprob>
</nighttime>
</day>
<day number="9">
<url>http://www.accuweather.com/forecast-det ... day=9</url>
<obsdate>7/5/2009</obsdate>
<daycode>Sunday</daycode>
<sunrise>05:59</sunrise>
<sunset>21:14</sunset>
<daytime>
<txtshort>A shower in the morning</txtshort>
<txtlong>A passing shower in the morning; otherwise, mostly cloudy</txtlong>
<weathericon>06</weathericon>
<hightemperature>29</hightemperature>
<lowtemperature>22</lowtemperature>
<realfeelhigh>29</realfeelhigh>
<realfeellow>21</realfeellow>
<windspeed>3.892</windspeed>
<winddirection>SSW</winddirection>
<windgust>10.564</windgust>
<maxuv>6</maxuv>
<rainamount>0.05</rainamount>
<snowamount>0.00</snowamount>
<precipamount>0.05</precipamount>
<tstormprob>0</tstormprob>
</daytime>
<nighttime>
<txtshort>Rather cloudy and warm</txtshort>
<txtlong>Rather cloudy and warm</txtlong>
<weathericon>38</weathericon>
<hightemperature>29</hightemperature>
<lowtemperature>22</lowtemperature>
<realfeelhigh>29</realfeelhigh>
<realfeellow>21</realfeellow>
<windspeed>5.282</windspeed>
<winddirection>SW</winddirection>
<windgust>11.398</windgust>
<maxuv></maxuv>
<rainamount>0</rainamount>
<snowamount>0.00</snowamount>
<precipamount>0</precipamount>
<tstormprob>0</tstormprob>
</nighttime>
</day>
</forecast>
<copyright>Copyright 2009 AccuWeather.com</copyright>
</adc_database>
- Ximorro
- Profesional del Autoit
- Mensajes: 1500
- Registrado: 10 Jul 2009, 12:35
- Ubicación: Castellón, España
Re: Avanzado - librerias adicionales, dlls y programas exter
Gracias por la info!, voy a echarle un vistazo a ese Scite Hopper...
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Re: Avanzado - librerias adicionales, dlls y programas exter
Ahora falta conocer/buscar páginas en las que se pueda utilizar.
EDITADO: He borrado lo que no corresponde aquí. Antes de ponerlo en otro hilo, le dí a "borrar" en este hilo, pero parece que no se eliminó. Disculpas.
EDITADO: He borrado lo que no corresponde aquí. Antes de ponerlo en otro hilo, le dí a "borrar" en este hilo, pero parece que no se eliminó. Disculpas.
Última edición por jamaro el 02 Mar 2011, 12:12, editado 1 vez en total.
- Ximorro
- Profesional del Autoit
- Mensajes: 1500
- Registrado: 10 Jul 2009, 12:35
- Ubicación: Castellón, España
Re: Avanzado - librerias adicionales, dlls y programas exter
Hombre el mensaje puede estar en este hilo, lo que pasa es que no deberías haberlo puesto dos veces, porque lo he leído por otra entrada.
Si quieres que se acceda desde los dos sitios puedes hacer referencia poniendo en una un enlace al otro comentario...
Si quieres que se acceda desde los dos sitios puedes hacer referencia poniendo en una un enlace al otro comentario...
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
- BasicOs
- Site Admin
- Mensajes: 2091
- Registrado: 21 Nov 2006, 19:24
- Ubicación: El Internet - (Canarias, España)
- Contactar:
Re: Avanzado - librerias adicionales, dlls y programas exter
Hola, aunque no son directamente dll, puede ser usado por el programa accediendo a una base de datos.
1.- Base de datos local por tcp/ip (no remota) de Mysql
Puedes instalar la base de datos con FILEINSTALL() y luego tener los datos accesibles MYSQL, etcc, es un servidor Webcompleto con los servicios TCP/IP que necesites (atención, son más de 60 Megas todo el paquete).
XAMPP - Apache, mySQL, PHP, phpMyAdmin, etc in one package
http://portableapps.com/apps/development/xampp
2.-Y un gestor de base de datos Sqlite
http://portableapps.com/apps/developmen ... r_portable
3.- Gestor de cualquier base:
Oracle, MS Sql Server, ODBC, MySql, PostgreSQL, SQLite, Ole DB, Interbase and Firebird
Support for ODBC connection strings
http://portableapps.com/apps/developmen ... r_portable
(los gestores se pueden automatizar desde el modo interactivo simulando al usuario)
Salu22:)
1.- Base de datos local por tcp/ip (no remota) de Mysql
Puedes instalar la base de datos con FILEINSTALL() y luego tener los datos accesibles MYSQL, etcc, es un servidor Webcompleto con los servicios TCP/IP que necesites (atención, son más de 60 Megas todo el paquete).
XAMPP - Apache, mySQL, PHP, phpMyAdmin, etc in one package
http://portableapps.com/apps/development/xampp
2.-Y un gestor de base de datos Sqlite
http://portableapps.com/apps/developmen ... r_portable
3.- Gestor de cualquier base:
Oracle, MS Sql Server, ODBC, MySql, PostgreSQL, SQLite, Ole DB, Interbase and Firebird
Support for ODBC connection strings
http://portableapps.com/apps/developmen ... r_portable
(los gestores se pueden automatizar desde el modo interactivo simulando al usuario)
Salu22:)
Re: Avanzado - librerias adicionales, dlls y programas exter
Los portables 2 y 3 los vengo utilizando desde hace un tiempo y son muuuuy útiles.
Saludos
Saludos
- BasicOs
- Site Admin
- Mensajes: 2091
- Registrado: 21 Nov 2006, 19:24
- Ubicación: El Internet - (Canarias, España)
- Contactar:
Re: Avanzado - librerias adicionales, dlls y programas exter
- Trabajar con el WinAPI directamente: WinAPIEx UDF
Aquí el enlace original:
http://www.autoitscript.com/forum/topic ... apiex-udf/
Que sirve para hacer cosas que no están en las funciónes de Autoit o si deseamos no usarlas y hacerlo directamente con el Windows.
Ejemplo directamente con WINAPI
Vaciar la papelera con _WinAPI_ShellEmptyRecycleBin
Cambiar el directorio actual _WinAPI_SetCurrentDirectory
Cambiar los atributos de un fichero _WinAPI_SetFileAttributes
Cambiar el tema de windows _WinAPI_SetWindowTheme - _Service_ UDF / Ejecuta un ejecutable como un Servicio !
http://www.autoitscript.com/forum/topic ... e-updated/ - TCPview Visor y desconectador de conexiones TCP que se esten haciendo desde nuestro PC actual !
Puede servir para controlar las conexiones existentes
http://www.autoitscript.com/forum/topic ... ns-viewer/
- Ximorro
- Profesional del Autoit
- Mensajes: 1500
- Registrado: 10 Jul 2009, 12:35
- Ubicación: Castellón, España
Re: Avanzado - librerias adicionales, dlls y programas exter
Ahora que comentas la extensión de Winapi.au3, también hay una para gdiplus.au3:
- GDIP.AU3: Extensión a GDIPLUS.AU3
http://www.autoitscript.com/forum/topic ... msearch__1
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Re: Avanzado - librerias adicionales, dlls y programas exter
Hola
Os dejo algo que acabo de encontrar:
Process + Thread + DLL Functions UDFs.
No se si alguien ya lo conocía por aquí. Entiendo que son unas UDF's para procesos, hilos y demás. He estado mirando los ejemplos pero no entiendo el programa de ejemplo de threads, no se como ver que cree varios hilos.
De todas formas, la UDF de threads usa las apis thread de Windows, que como ya se ha comentado por aquí daban problemas con AutoIt, así, que no se como lo hará para que funcione...
No lo he probado en un programa mío, pues no es poca cosa lo que tiene esto, y muchas cosas no las entiendo bien. (si alguien se anima a traducir un poco/explicarnos que es todo esto) será bienvenido, porque pinta interesante. Al menos todo lo relativo a los procesos, que seguro funciona bien. Lo de los threads, si funcionara sería la leche, pero tal como lo veo no creo que funcione.
Esta es la web de donde lo he bajado:
http://sites.google.com/site/ascend4nts ... sfunctions
ahí está el código fuente, y los ejecutables.
y esto lo vi en el foro inglés:
http://www.autoitscript.com/forum/topic ... msearch__1
A ver que os parece.
Salu2!
Os dejo algo que acabo de encontrar:
Process + Thread + DLL Functions UDFs.
No se si alguien ya lo conocía por aquí. Entiendo que son unas UDF's para procesos, hilos y demás. He estado mirando los ejemplos pero no entiendo el programa de ejemplo de threads, no se como ver que cree varios hilos.
De todas formas, la UDF de threads usa las apis thread de Windows, que como ya se ha comentado por aquí daban problemas con AutoIt, así, que no se como lo hará para que funcione...
No lo he probado en un programa mío, pues no es poca cosa lo que tiene esto, y muchas cosas no las entiendo bien. (si alguien se anima a traducir un poco/explicarnos que es todo esto) será bienvenido, porque pinta interesante. Al menos todo lo relativo a los procesos, que seguro funciona bien. Lo de los threads, si funcionara sería la leche, pero tal como lo veo no creo que funcione.
Esta es la web de donde lo he bajado:
http://sites.google.com/site/ascend4nts ... sfunctions
ahí está el código fuente, y los ejecutables.
y esto lo vi en el foro inglés:
http://www.autoitscript.com/forum/topic ... msearch__1
A ver que os parece.
Salu2!
- BasicOs
- Site Admin
- Mensajes: 2091
- Registrado: 21 Nov 2006, 19:24
- Ubicación: El Internet - (Canarias, España)
- Contactar:
Re: Avanzado - librerias adicionales, dlls y programas exter
Recopilación de funciones para FTP y programa externo WINSCP:
Programa externo WINSCP que podemos usarlo con Autoit:
ADMIte MODO script o comando, batch, que tiene una función muy interesante que es sincronize -> ambos, contra el local, hacia el remoto y keepuptodate que actualiza continuamente cambios en el local hacia el remoto
En español: http://winscp.net/eng/docs/lang:es
También admite objetos .NET que se pueden incorporar: http://winscp.net/eng/docs/library
Como se crea un batch con WINSCP: http://winscp.net/eng/docs/scripting#example
Y http://winscp.net/eng/docs/scripting#commands
Te incluye una versión portable que son solo 2 FICHEROS ejecutables mas un ini que se pueden incluir dentro del ejecutable con FILEINSTALL().
o además Winscp Se puede instalar silencioso con start /wait WinSCP\winscp376setup.exe /Silent
TAMBIEN HAY estas funciones en Autoit con librerías nativas:
En la ayuda de Autoit vienen ya incorporadas las funciones _FTP_FilePut
Ejemplos de uso de FTPEX.au3:
Ayuda con FTPEx.au3
FTPEX.au3 en español
Otro
PD:Recordar el problema de tener el usuario y código del ftp dentro del códe se puede decodificar, mejor es obfuscarlo/encriptarlo en un archivo de texto externo, o bien una cuenta ftp por usuario y que se grabe la primera vez que se usa. También los programas de FTP piden usuario y pass la primera vez (o cada vez).
Salu22:)
Programa externo WINSCP que podemos usarlo con Autoit:
ADMIte MODO script o comando, batch, que tiene una función muy interesante que es sincronize -> ambos, contra el local, hacia el remoto y keepuptodate que actualiza continuamente cambios en el local hacia el remoto
En español: http://winscp.net/eng/docs/lang:es
También admite objetos .NET que se pueden incorporar: http://winscp.net/eng/docs/library
Como se crea un batch con WINSCP: http://winscp.net/eng/docs/scripting#example
Código: Seleccionar todo
Run('WinSCP.exe /console /command "option batch on" "open ftp://ftp.ftp -passive" "get said file.exe"') Entre parentesis cada linea de comando o bien en fichero .txt externo.
Te incluye una versión portable que son solo 2 FICHEROS ejecutables mas un ini que se pueden incluir dentro del ejecutable con FILEINSTALL().
o además Winscp Se puede instalar silencioso con start /wait WinSCP\winscp376setup.exe /Silent
TAMBIEN HAY estas funciones en Autoit con librerías nativas:
En la ayuda de Autoit vienen ya incorporadas las funciones _FTP_FilePut
Código: Seleccionar todo
#include <FTPEx.au3>
$server = 'ftp.csx.cam.ac.uk'
$username = ''
$pass = ''
$Open = _FTP_Open('MyFTP Control')
$Conn = _FTP_Connect($Open, $server, $username, $pass)
; ...
$Ftpc = _FTP_Close($Open)
Ayuda con FTPEx.au3
FTPEX.au3 en español
Otro
PD:Recordar el problema de tener el usuario y código del ftp dentro del códe se puede decodificar, mejor es obfuscarlo/encriptarlo en un archivo de texto externo, o bien una cuenta ftp por usuario y que se grabe la primera vez que se usa. También los programas de FTP piden usuario y pass la primera vez (o cada vez).
Salu22:)
- BasicOs
- Site Admin
- Mensajes: 2091
- Registrado: 21 Nov 2006, 19:24
- Ubicación: El Internet - (Canarias, España)
- Contactar:
Re: Avanzado - librerias adicionales, dlls y programas exter
Ahora que MS ha tomado la decisión de quitar el messenger va a desaparecer (Abril 2013). Y las cuentas de este pasan a funcionar al Skype es el momento de tener una librería que permita hacer programas autorespondedores, o personalizados o adapatar Skype a nuestro gusto. Aquí están las librerias del SKYPE via Skype4COM por la Skype API como objetos.
Debe de estar instalado Skype +3.0 previamente.
*metodos
*propiedades
*eventos
*colecciones
*cache
Pack (UDF + EjemploGUI + SciTE addon)
Skype AU3.zip 81.08K
Examples : a la carpeta example
Responde a las llamadas entrantes y las junta, si ya estas hablando simultaneamente. (Contestado automático) Auto Answer.au3
Topico original: http://www.autoitscript.com/forum/topic ... -07122012/
Salu22:)
Debe de estar instalado Skype +3.0 previamente.
*metodos
*propiedades
*eventos
*colecciones
*cache
Pack (UDF + EjemploGUI + SciTE addon)
Skype AU3.zip 81.08K
Examples : a la carpeta example
Responde a las llamadas entrantes y las junta, si ya estas hablando simultaneamente. (Contestado automático) Auto Answer.au3
Código: Seleccionar todo
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.4.0
Author: FireFox
Script Function:
Answer call automatically and join calls if you're already in a call
#ce ----------------------------------------------------------------------------
#include "..\Skype.au3"
Local $oMainCall = ""
Local $aCall = _Skype_CallGetActive()
If IsArray($aCall) Then $oMainCall = $aCall[0] ;if a call is running then set it as main call
_Skype_SetSilentMode(True) ;Disable all skype windows
_Skype_OnEventCallStatus("_CallIncomming", $cClsRinging) ;if someone is calling you
_Skype_OnEventCallStatus("_CallFinished", $cClsFinished) ;if a call has finished
While 1
Sleep(60000)
WEnd
Func _CallIncomming($oCall)
Local $TCallType = _Skype_CallGetType($oCall)
If ($TCallType = $cCltIncomingP2P) Or ($TCallType = $cCltIncomingPSTN) Then ;if it's a valid incomming call
If IsObj($oMainCall) Then ;if a call is running then join the incomming call to the main call
_Skype_CallJoin($oMainCall, $oCall)
Else ;else answer
_Skype_CallAnswer($oCall)
EndIf
$oMainCall = $oCall ;set the current call as the main call
EndIf
EndFunc
Func _CallFinished($oCall)
Local $aCall = _Skype_CallGetActive()
If IsArray($aCall) Then ;if a call is running then set it as main call
$oMainCall = $aCall[0]
Else ;else no call running
$oMainCall = ""
EndIf
EndFunc
Salu22:)
- BasicOs
- Site Admin
- Mensajes: 2091
- Registrado: 21 Nov 2006, 19:24
- Ubicación: El Internet - (Canarias, España)
- Contactar:
Re: Avanzado - librerias adicionales, dlls y programas exter
Librería Bass.dll :
En una pequeña DLL, bajo 100KB de tamaño.
más de 300 funciones adaptadas a muchos usos y a Autoit, unos ejemplos:
y en enlace alternativo.
Salu22:)
Soporte de winamp, sonique, bassbox, y Windows Media Player visualization plugins. Muestreo, streaming, música MOD, y las funciones de grabación.Esta biblioteca es un contenedor para los poderosos bass.dll y complementos (que aumentan la funcionalidad de bass.dll). Bass.dll es ideal para su uso en sus aplicaciones y scripts si quieres una forma fácil de reproducir una amplia gama de formatos de música y archivos de sonido, manteniendo la dependencia de sólo bass.dll y es add-ons (que a su vez maximiza la compatibilidad y minimiza los requisitos adicionales para su software para funcionar), al tiempo que conserva un tamaño de archivo pequeño.
En una pequeña DLL, bajo 100KB de tamaño.
más de 300 funciones adaptadas a muchos usos y a Autoit, unos ejemplos:
Enlace ampliado aquí_BASS_StreamCreate
_BASS_StreamCreateFile
_BASS_StreamCreateFileUser
_BASS_StreamCreateURL
_BASS_StreamFree
_BASS_StreamGetFilePosition
_BASS_StreamPutData
_BASS_StreamPutFileData
_BASS_MusicFree
_BASS_MusicLoad
_BASS_RecordFree
_BASS_RecordGetDevice
_BASS_RecordGetDeviceInfo
_BASS_RecordGetInfo
_BASS_RecordGetInput
_BASS_RecordGetInputName
_BASS_RecordInit
_BASS_RecordSetDevice
_BASS_RecordSetInput
_BASS_RecordStart
Y 300 funciones más
y en enlace alternativo.
Salu22:)