Jump to content

This site uses cookies. By continuing to browse the site you are agreeing to our use of cookies. Find out more here. X
X


Photo

Safely Eject a USB Drive


  • Please log in to reply
62 replies to this topic

#61 TheSaint

TheSaint

    *** Knight Templar ***

  • MVPs
  • 5,515 posts

Posted 29 August 2012 - 12:23 PM

That's interesting, because I have one or two drives that regularly give trouble. Sometimes it appears to maybe be a memory issue, after sustained and heavy use (video stuff, etc).

Make sure brain is in gear before opening mouth! Ignoring those who try to divert conversation with irrelevancies. If I put effort into communication, I expect you to read properly & fully, or just not comment. If I'm intent on insulting you or being rude, I will be obvious, not ambiguous about it. I'm only big and bad, to those who have an over-active imagination. I may have the Artistic Liesense to disagree with you. TheSaint's Toolbox








#62 guinness

guinness

    all-consuming swarm in inconspicuous disguise

  • Developers
  • 17,238 posts

Posted 02 June 2014 - 09:09 PM

If someone thinks the example isn't working, then it is. The issue is down to the Forum removing backslashes (again). Simply replace the following with ....

    ; "X:" -> for GetDriveType     Local $szRootPath = $drive & ":\"     ; "X:" -> for QueryDosDevice     Local $szDevicePath = $drive & ":"     ; ".X:" -> to open the volume     Local $szVolumeAccessPath = "\\.\" & $drive & ":"

Example List: _AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrGeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()LockFile()Mapping CtrlIDsParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...
Updated: 30/07/2014


#63 guinness

guinness

    all-consuming swarm in inconspicuous disguise

  • Developers
  • 17,238 posts

Posted 03 June 2014 - 01:10 AM

Sorry wraithdu, but I couldn't help but update the code though to use the new features of AutoIt. Great work by the way!
 
AutoIt         
#include <Array.au3> #include <WinAPI.au3> #include <WinAPIFiles.au3> #include <WinAPISys.au3> Global Const $DIGCF_DEVICEINTERFACE = 0x10 Global Const $DIGCF_PRESENT = 0x2 Global Const $CR_SUCCESS = 0 Global Const $CR_ACCESS_DENIED = 0x33 Global Const $CM_REMOVE_UI_OK = 0 Global Const $CM_REMOVE_UI_NOT_OK = 0x1 Global Const $CM_REMOVE_NO_RESTART = 0x2 Global Const $CM_SETUP_DEVNODE_READY = 0 Global Const $CM_SETUP_DEVNODE_RESET = 0x4 Global Const $DN_REMOVABLE = 0x4000 Global Const $PNP_VetoTypeUnknown = 0 ; Name is unspecified Global Enum $DRIVE_EJECT_DEVICENUMBER, _ ; int         $DRIVE_EJECT_DEVICETYPE, _ ; int         $DRIVE_EJECT_DEVICEDOSNAME, _ ; string         $DRIVE_EJECT_DEVICEPATH, _ ; string         $DRIVE_EJECT_DEVICEID, _ ; string         $DRIVE_EJECT_DEVICEINSTANCE, _ ; int         $DRIVE_EJECT_DEVICEINSTANCEPARENT, _ ; int         $DRIVE_EJECT_DEVICEPARENTID, _ ; string         $DRIVE_EJECT_ISREMOVEABLE, _ ; bool         $DRIVE_EJECT_MAX Global Const $tagSTORAGE_DEVICE_NUMBER = 'dword DeviceType;ulong DeviceNumber;ulong PartitionNumber' Global Enum $DRIVENUMBER_TYPE, $DRIVENUMBER_NUMBER, $DRIVENUMBER_PARTITION Global Const $LETTER_LENGTH = StringLen('A') Global Const $MAX_PATH = 260 ; Structures Global Const $STORAGE_DEVICE_NUMBER = 'ulong DeviceType;ulong DeviceNumber;ulong PartitionNumber' Global Const $SP_DEV_BUF = 'byte[2052]' Global Const $SP_DEVICE_INTERFACE_DETAIL_DATA = 'dword cbSize;wchar DevicePath[1024]' ; Created at SP_DEV_BUF ptr Global Const $SP_DEVICE_INTERFACE_DATA = 'dword cbSize;byte InterfaceClassGuid[16];dword Flags;ulong_ptr Reserved' ; GUID struct = 16 bytes Global Const $SP_DEVINFO_DATA = 'dword cbSize;byte ClassGuid[16];dword DevInst;ulong_ptr Reserved' ; GUIDs Global Const $tagGUID_DEVINTERFACE_DISK = DllStructCreate($tagGUID) DllStructSetData($tagGUID_DEVINTERFACE_DISK, 'Data1', 0x53f56307) DllStructSetData($tagGUID_DEVINTERFACE_DISK, 'Data2', 0xb6bf) DllStructSetData($tagGUID_DEVINTERFACE_DISK, 'Data3', 0x11d0) DllStructSetData($tagGUID_DEVINTERFACE_DISK, 'Data4', Binary('0x94f200a0c91efb8b')) Global Const $tagGUID_DEVINTERFACE_CDROM = DllStructCreate($tagGUID) DllStructSetData($tagGUID_DEVINTERFACE_CDROM, 'Data1', 0x53f56308) DllStructSetData($tagGUID_DEVINTERFACE_CDROM, 'Data2', 0xb6bf) DllStructSetData($tagGUID_DEVINTERFACE_CDROM, 'Data3', 0x11d0) DllStructSetData($tagGUID_DEVINTERFACE_CDROM, 'Data4', Binary('0x94f200a0c91efb8b')) Global Const $tagGUID_DEVINTERFACE_FLOPPY = DllStructCreate($tagGUID) DllStructSetData($tagGUID_DEVINTERFACE_FLOPPY, 'Data1', 0x53f56311) DllStructSetData($tagGUID_DEVINTERFACE_FLOPPY, 'Data2', 0xb6bf) DllStructSetData($tagGUID_DEVINTERFACE_FLOPPY, 'Data3', 0x11d0) DllStructSetData($tagGUID_DEVINTERFACE_FLOPPY, 'Data4', Binary('0x94f200a0c91efb8b')) ; http://www.codeproject.com/Articles/13839/How-to-Prepare-a-USB-Drive-for-Safe-Removal ; http://www.autoitscript.com/forum/topic/83470-safely-eject-a-usb-drive/ Example() Func Example()     Local $hDriveEject = _Drive('E')     ConsoleWrite('Ejected E: = ' & _Drive_Eject($hDriveEject) & @CRLF)     ConsoleWrite('Restarted E: = ' & _Drive_Restart($hDriveEject) & @CRLF)     _ArrayDisplay($hDriveEject)     $hDriveEject = 0 EndFunc   ;==>Example Func _Drive($sDrive)     $sDrive = _GetDrive($sDrive) & ':'     If Not FileExists($sDrive) Then Return Null     Local $aQueryDrive[$DRIVE_EJECT_MAX]     Local $aReturn = _WinAPI_GetDriveNumberEx($sDrive)     $aQueryDrive[$DRIVE_EJECT_DEVICENUMBER] = (@error ? 0 : $aReturn[$DRIVENUMBER_NUMBER]) ; Device number.     $aQueryDrive[$DRIVE_EJECT_DEVICETYPE] = _WinAPI_GetDriveType($sDrive)     $aQueryDrive[$DRIVE_EJECT_DEVICEDOSNAME] = _WinAPI_QueryDosDevice($sDrive)     Local $tGUID = 0     Switch $aQueryDrive[$DRIVE_EJECT_DEVICETYPE]         Case $DRIVE_REMOVABLE             If StringInStr($aQueryDrive[$DRIVE_EJECT_DEVICEDOSNAME], '\Floppy') > 0 Then                 $tGUID = DllStructGetPtr($tagGUID_DEVINTERFACE_FLOPPY)             Else                 $tGUID = DllStructGetPtr($tagGUID_DEVINTERFACE_DISK)             EndIf         Case $DRIVE_FIXED             $tGUID = DllStructGetPtr($tagGUID_DEVINTERFACE_DISK)         Case $DRIVE_CDROM             $tGUID = DllStructGetPtr($tagGUID_DEVINTERFACE_CDROM)         Case Default             Return Null     EndSwitch     Local $hDevInfo = DllCall('setupapi.dll', 'ptr', 'SetupDiGetClassDevsW', _             'ptr', $tGUID, _             'ptr', Null, _             'hwnd', Null, _             'dword', BitOR($DIGCF_PRESENT, $DIGCF_DEVICEINTERFACE))     If @error Or $hDevInfo[0] = $INVALID_HANDLE_VALUE Then Return Null     $hDevInfo = $hDevInfo[0]     Local $tBuffer = DllStructCreate($SP_DEV_BUF)     Local $tpSP_DEVICE_INTERFACE_DETAIL_DATA = DllStructCreate($SP_DEVICE_INTERFACE_DETAIL_DATA, DllStructGetPtr($tBuffer))     Local Const $SP_DEVICE_INTERFACE_DETAIL_DATA_SIZE = (@AutoItX64 ? 8 : 6) ; Fix for 64-bit systems.     Local $tSP_DEVICE_INTERFACE_DETAIL_DATA = DllStructCreate($SP_DEVICE_INTERFACE_DATA)     Local $tDevInfo = DllStructCreate($SP_DEVINFO_DATA)     DllStructSetData($tSP_DEVICE_INTERFACE_DETAIL_DATA, 'cbSize', DllStructGetSize($tSP_DEVICE_INTERFACE_DETAIL_DATA))     Local $iIndex = 0, $iSize = 0     While 1         $aReturn = DllCall('setupapi.dll', 'int', 'SetupDiEnumDeviceInterfaces', _                 'ptr', $hDevInfo, _                 'ptr', 0, _                 'ptr', $tGUID, _                 'dword', $iIndex, _                 'struct*', $tSP_DEVICE_INTERFACE_DETAIL_DATA)         If @error Or Not $aReturn[0] Then             ExitLoop         EndIf         $aReturn = DllCall('setupapi.dll', 'int', 'SetupDiGetDeviceInterfaceDetailW', _                 'ptr', $hDevInfo, _                 'struct*', $tSP_DEVICE_INTERFACE_DETAIL_DATA, _                 'ptr', 0, _                 'dword', 0, _                 'dword*', 0, _                 'ptr', 0)         $iSize = (@error ? 0 : $aReturn[5])         If $iSize > 0 And $iSize <= DllStructGetSize($tBuffer) Then             DllStructSetData($tpSP_DEVICE_INTERFACE_DETAIL_DATA, 'cbSize', $SP_DEVICE_INTERFACE_DETAIL_DATA_SIZE)             _WinAPI_ZeroMemory(DllStructGetPtr($tDevInfo), DllStructGetSize($tDevInfo))             DllStructSetData($tDevInfo, 'cbSize', DllStructGetSize($tDevInfo))             $aReturn = DllCall('setupapi.dll', 'int', 'SetupDiGetDeviceInterfaceDetailW', _                     'ptr', $hDevInfo, _                     'struct*', $tSP_DEVICE_INTERFACE_DETAIL_DATA, _                     'struct*', $tpSP_DEVICE_INTERFACE_DETAIL_DATA, _                     'dword', $iSize, _                     'dword*', 0, _                     'struct*', $tDevInfo)             If Not @error And $aReturn[0] Then                 $aQueryDrive[$DRIVE_EJECT_DEVICEPATH] = DllStructGetData($tpSP_DEVICE_INTERFACE_DETAIL_DATA, 'DevicePath')                 $aReturn = _WinAPI_GetDriveNumberEx($aQueryDrive[$DRIVE_EJECT_DEVICEPATH])                 If Not @error Then                     If $aQueryDrive[$DRIVE_EJECT_DEVICENUMBER] = $aReturn[$DRIVENUMBER_NUMBER] Then                         $aQueryDrive[$DRIVE_EJECT_DEVICEID] = DllStructGetData($tDevInfo, 'DevInst')                         ExitLoop                     EndIf                 EndIf             EndIf         EndIf         $iIndex += 1     WEnd     DllCall('setupapi.dll', 'int', 'SetupDiDestroyDeviceInfoList', _             'ptr', $hDevInfo)     If $aQueryDrive[$DRIVE_EJECT_DEVICEID] > 0 Then         $aReturn = DllCall('setupapi.dll', 'dword', 'CM_Get_Device_IDW', _                 'ptr', $aQueryDrive[$DRIVE_EJECT_DEVICEID], _                 'wstr', '', _                 'ulong', DllStructGetSize($tBuffer), _ ; Was once 1024.                 'ulong', 0)         $aQueryDrive[$DRIVE_EJECT_DEVICEINSTANCE] = (@error Or $aReturn[0] <> $CR_SUCCESS ? Null : $aReturn[2])         $aReturn = DllCall('setupapi.dll', 'dword', 'CM_Get_Parent', _                 'dword*', 0, _                 'dword', $aQueryDrive[$DRIVE_EJECT_DEVICEID], _                 'ulong', 0)         $aQueryDrive[$DRIVE_EJECT_DEVICEINSTANCEPARENT] = (@error Or $aReturn[0] <> $CR_SUCCESS ? Null : $aReturn[1])         If $aQueryDrive[$DRIVE_EJECT_DEVICEINSTANCEPARENT] Then             $aReturn = DllCall('setupapi.dll', 'dword', 'CM_Get_Device_IDW', _                     'ptr', $aQueryDrive[$DRIVE_EJECT_DEVICEINSTANCEPARENT], _                     'wstr', '', _                     'ulong', DllStructGetSize($tBuffer), _ ; Was once 1024.                     'ulong', 0)             $aQueryDrive[$DRIVE_EJECT_DEVICEPARENTID] = (@error Or $aReturn[0] <> $CR_SUCCESS ? Null : $aReturn[2])             $aReturn = DllCall('setupapi.dll', 'dword', 'CM_Get_DevNode_Status', _                     'ulong*', 0, _                     'ulong*', 0, _                     'ptr', $aQueryDrive[$DRIVE_EJECT_DEVICEINSTANCEPARENT], _                     'ulong', 0)             $aQueryDrive[$DRIVE_EJECT_ISREMOVEABLE] = (Not @error And $aReturn[0] = $CR_SUCCESS And BitAND($aReturn[1], $DN_REMOVABLE))         EndIf     EndIf     Return $aQueryDrive EndFunc   ;==>_Drive Func _Drive_Eject(ByRef $aQueryDrive)     Local $fReturn = False     If UBound($aQueryDrive) = $DRIVE_EJECT_MAX And $aQueryDrive[$DRIVE_EJECT_ISREMOVEABLE] Then         Local $aReturn = 0         For $i = 1 To 3             $aReturn = DllCall('setupapi.dll', 'dword', 'CM_Query_And_Remove_SubTreeW', _ ; Only used if SurpriseRemovalOK is true in DEVICE_CAPABILITIES                     'dword', $aQueryDrive[$DRIVE_EJECT_DEVICEINSTANCEPARENT], _                     'dword*', Null, _                     'wstr', Null, _                     'ulong', $MAX_PATH, _                     'ulong', $CM_REMOVE_UI_OK) ; $CM_REMOVE_NO_RESTART             If $aReturn[0] = $CR_ACCESS_DENIED Then                 $aReturn = DllCall('setupapi.dll', 'dword', 'CM_Request_Device_EjectW', _                         'dword', $aQueryDrive[$DRIVE_EJECT_DEVICEINSTANCEPARENT], _                         'dword*', Null, _                         'wstr', Null, _                         'ulong', $MAX_PATH, _                         'ulong', 0)             EndIf             $fReturn = (UBound($aReturn) >= 3 And $aReturn[0] = $CR_SUCCESS And $aReturn[2] = $PNP_VetoTypeUnknown)             If $fReturn Then                 ExitLoop             EndIf             Sleep(500)         Next     EndIf     Return $fReturn EndFunc   ;==>_Drive_Eject Func _Drive_IsUSBHDD(ByRef $aQueryDrive)     ; If the drive is a fixed drive and the path contains 'usbtor', and parent device ID contains 'USB', and IsRemovable.     Return UBound($aQueryDrive) = $DRIVE_EJECT_MAX ? (($aQueryDrive[$DRIVE_EJECT_DEVICETYPE] = $DRIVE_FIXED) And StringInStr($aQueryDrive[$DRIVE_EJECT_DEVICEPATH], 'usbstor') And StringInStr($aQueryDrive[$DRIVE_EJECT_DEVICEPARENTID], 'usb') And $aQueryDrive[$DRIVE_EJECT_ISREMOVEABLE]) : Null EndFunc   ;==>_Drive_IsUSBHDD Func _Drive_Restart(ByRef $aQueryDrive)     Local $fReturn = False     If UBound($aQueryDrive) = $DRIVE_EJECT_MAX Then         Local $aReturn = DllCall('setupapi.dll', 'dword', 'CM_Setup_DevNode', _                 'dword', $aQueryDrive[$DRIVE_EJECT_DEVICEINSTANCEPARENT], _                 'ulong', 0)         If @error Or Not $aReturn[0] Then Return SetError(@error, @extended, $fReturn)         $fReturn = True     EndIf     Return $fReturn EndFunc   ;==>_Drive_Restart Func _GetDrive($sFilePath)     Local $sDrive = StringUpper(StringLeft($sFilePath, $LETTER_LENGTH))     Return _IsDriveLetter($sDrive) ? $sDrive : Null EndFunc   ;==>_GetDrive Func _IsDriveLetter($sDrive)     ; Return StringRegExp($sDrive, '^[A-Za-z]$') = 1     Return StringIsAlpha($sDrive) And StringLen($sDrive) = $LETTER_LENGTH EndFunc   ;==>_IsDriveLetter Func _IsDriveLetterFull($sDrive)     ; Return StringRegExp($sDrive, '^[A-Za-z]:$') = 1     Return _IsDriveLetter(_GetDrive($sDrive)) And StringLen($sDrive) = ($LETTER_LENGTH + $LETTER_LENGTH) And StringRight($sDrive, $LETTER_LENGTH) == ':' EndFunc   ;==>_IsDriveLetterFull Func _WinAPI_GetDriveNumberEx($sFilePath)     If _IsDriveLetter($sFilePath) Or _IsDriveLetterFull($sFilePath) Then         $sFilePath = '\\.\' & _GetDrive($sFilePath) & ':'     EndIf     Local Const $hFile = _WinAPI_CreateFileEx($sFilePath, $OPEN_EXISTING, 0, $FILE_SHARE_READWRITE)     If @error Then Return SetError(@error, @extended, 0)     Local $tSTORAGE_DEVICE_NUMBER = DllStructCreate($tagSTORAGE_DEVICE_NUMBER)     Local $vResult = [$DRIVENUMBER_TYPE, $DRIVENUMBER_NUMBER, $DRIVENUMBER_PARTITION]     _WinAPI_DeviceIoControl($hFile, $IOCTL_STORAGE_GET_DEVICE_NUMBER, Null, 0, DllStructGetPtr($tSTORAGE_DEVICE_NUMBER), DllStructGetSize($tSTORAGE_DEVICE_NUMBER))     If @error Then         $vResult = 0     Else         $vResult[$DRIVENUMBER_TYPE] = DllStructGetData($tSTORAGE_DEVICE_NUMBER, 'DeviceType')         $vResult[$DRIVENUMBER_NUMBER] = DllStructGetData($tSTORAGE_DEVICE_NUMBER, 'DeviceNumber')         $vResult[$DRIVENUMBER_PARTITION] = DllStructGetData($tSTORAGE_DEVICE_NUMBER, 'PartitionNumber')     EndIf     _WinAPI_CloseHandle($hFile)     Return $vResult EndFunc   ;==>_WinAPI_GetDriveNumberEx

Edited by guinness, 03 June 2014 - 09:36 AM.

Example List: _AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrGeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()LockFile()Mapping CtrlIDsParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...
Updated: 30/07/2014





0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users