Avanzado - librerias adicionales, dlls y programas externos

Antes de ir al Soporte consultame aquí, gracias
Responder
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2083
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Avanzado - librerias adicionales, dlls y programas externos

Mensaje por BasicOs »

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. :smt038 :smt038 :smt038 :smt038 :smt040


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 893 veces
AutoitObject y otros
AutoitObject y otros
AutoitObjetct.jpg (14.05 KiB) Visto 38873 veces
Funciones especiales
Funciones especiales
autoit1.jpg (59 KiB) Visto 38873 veces
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2083
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Avanzado

Mensaje por BasicOs »

ExtBin_FTM_v1.2.zip
Archivo grande dentro de carpeta includes
(735.7 KiB) Descargado 691 veces
z_install_includes.zip
dlls y programas externos
(1.72 MiB) Descargado 805 veces
MediaInfo_0_7_41.zip
Archivo grande dentro de carpeta includes
(1.08 MiB) Descargado 703 veces
La carpeta z_installa_includes con los archivos dll y externos.
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
LIstado de dlls y programas externos
dllyexes.jpg (77.18 KiB) Visto 38860 veces
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2083
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Avanzado - librerias adicionales, dlls y programas exter

Mensaje por BasicOs »

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)

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
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:

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
; ==================================================================================================================================================================================================================================================================
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:

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__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/

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
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
Adjuntos
test simple que funciona imagesearch.zip
test simple que funciona imagesearch con una imagen
(40.82 KiB) Descargado 589 veces
ImageSearch.zip
Ejemplo ImageSearch completo
(83.97 KiB) Descargado 589 veces
_wait_for.zip
wait_for
(2.33 KiB) Descargado 560 veces
Avatar de Usuario
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

Mensaje por XPyro »

Interesante, muchas gracias por compartirlo :smt006
Imagen
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2083
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Avanzado - librerias adicionales, dlls y programas exter

Mensaje por BasicOs »

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

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
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
Adjuntos
7Zip_UDF.zip
7Zip_UDF
(8.88 KiB) Descargado 564 veces
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2083
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Avanzado - librerias adicionales, dlls y programas exter

Mensaje por BasicOs »

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
Como funcionan:
Enviando consultas PHP hacia una URL:
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;
Simple PHP interface for the Simplenote API (no pun intended)
* Created by Abraham Vegh
* http://github.com/abrahamvegh/simplenote-php/
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.

Simplenote es gratuito: http://simplenoteapp.com/features/

Salu22:)
Edit ejemplo Perl
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2083
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Avanzado - librerias adicionales, dlls y programas exter

Mensaje por BasicOs »

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

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

 
Fichero test.php
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>
Salu22:)
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2083
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Avanzado - librerias adicionales, dlls y programas exter

Mensaje por BasicOs »

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
<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>
Salu22:)

Código con un ejemplo y con la función:
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
Base de datos en xml para usar en el ejemplo:
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>
Avatar de Usuario
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

Mensaje por Ximorro »

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)
jamaro
Hacker del Foro
Mensajes: 253
Registrado: 03 Nov 2010, 23:04

Re: Avanzado - librerias adicionales, dlls y programas exter

Mensaje por jamaro »

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.
Última edición por jamaro el 02 Mar 2011, 12:12, editado 1 vez en total.
Avatar de Usuario
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

Mensaje por Ximorro »

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...
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2083
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Avanzado - librerias adicionales, dlls y programas exter

Mensaje por BasicOs »

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:)
jamaro
Hacker del Foro
Mensajes: 253
Registrado: 03 Nov 2010, 23:04

Re: Avanzado - librerias adicionales, dlls y programas exter

Mensaje por jamaro »

Los portables 2 y 3 los vengo utilizando desde hace un tiempo y son muuuuy útiles.

Saludos
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2083
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Avanzado - librerias adicionales, dlls y programas exter

Mensaje por BasicOs »

  • 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/
Salu22:)
Avatar de Usuario
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

Mensaje por Ximorro »

Ahora que comentas la extensión de Winapi.au3, también hay una para gdiplus.au3:
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Jonny
Profesional del Autoit
Mensajes: 1042
Registrado: 30 Jun 2008, 20:08

Re: Avanzado - librerias adicionales, dlls y programas exter

Mensaje por Jonny »

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!
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2083
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Avanzado - librerias adicionales, dlls y programas exter

Mensaje por BasicOs »

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

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.
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

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)
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:)
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2083
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Avanzado - librerias adicionales, dlls y programas exter

Mensaje por BasicOs »

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

Imagen

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
Skype AU3.zip
Ejemplo contestador y librerias
(81.74 KiB) Descargado 459 veces
Topico original: http://www.autoitscript.com/forum/topic ... -07122012/
Salu22:)
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2083
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Avanzado - librerias adicionales, dlls y programas exter

Mensaje por BasicOs »

Librería Bass.dll :
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.
Soporte de winamp, sonique, bassbox, y Windows Media Player visualization plugins. Muestreo, streaming, música MOD, y las funciones de grabación.
En una pequeña DLL, bajo 100KB de tamaño.
más de 300 funciones adaptadas a muchos usos y a Autoit, unos ejemplos:
_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
Enlace ampliado aquí
y en enlace alternativo.
Salu22:)
Responder