Leaderboard
Popular Content
Showing content with the highest reputation on 05/30/2016 in all areas
-
So if you haven't noticed Zedna's Resources UDF has been a very popular UDF over the last 7 years and was last updated in 2011, but now is the time to bring the UDF up to date with the current AutoIt language syntax (v3.3.14.2). So with the blessing of Zedna may I present to you ResourcesEx. It's built using the UDF standards I have tried to enforce around here, with improved documentation and an overall UDF structure. I please ask that you try and break the UDF, criticise, educate, whatever, just play around with the functions and example. I do ask that you just don't say "you've missed the point" and leave at that. Provide an alternative or constructive reason as to why I have "missed the point". Thanks. IMPORTANT: You must be using SciTE4AutoIt3, as this comes included with AutoItWrapper Changes between Zedna's UDF and guinness' UDF. _ResourceGet() => _Resource_Get() _ResourceGetAsString() => _Resource_GetAsString() with an additional param of whether to return ANSI. _ResourceGetAsStringW() => _Resource_GetAsString() _ResourceGetAsBytes() => _Resource_GetAsBytes() _ResourceGetAsImage() => _Resource_GetAsImage() _ResourceGetAsBitmap() => _Resource_GetAsBitmap() _ResourceSaveToFile() => _Resource_SaveToFile() _ResourceSetImageToCtrl() => _Resource_SetToCtrlID() _SetBitmapToCtrl() => _Resource_SetBitmapToCtrlID() As to JFX's question of what makes this different... Known problems/limitations: (Taken for Zedna's Resources UDF) _ResourceGet() returns resource size (in bytes) in @extended macro but not for resource type RT_BITMAP [FIXED] _ResourceSetImageToCtrl() works with "static/button" type of controls (picture,label,icon,button,checkbox,radiobutton,groupbox) [NO_ISSUE] _ResourcePlaySound() plays only WAV files (not MP3 files) [FIXED] _ResourceGetAsBytes() doesn't work for RT_BITMAP type because _ResourceGet() returns hBitmap instead of memory pointer in this case there could be used _ResourceGetAsImage() as workaround _ResourceGet() has potential memory leak releasing of resources UnlockResource, FreeResource (opposite of LoadResource, LockResource) is not done because it must be done after using of resources at the end and not inside UDF [FIXED] _GDIPlus_Startup() is called once at start of whole include --> no _GDIPlus_Shutdown() is called [FIXED] Download the ZIP and play around with the Example/UDF. ResourcesEx.zip Jos: 15-9-2022 Updated version replaced $__WINVER with _WinAPI_GetVersion() Jos: 27-4-2023 updated script as they required extra #include: ResourcesEx.zip Changelog: 2015/09/26 Changed: Comments throughout the UDF, removing trailing dot Fixed: Various cosmetic changes 2015/01/12 Fixed: Example directive using double equals sign Fixed: Delete functions not being cast as a bool value. (Thanks Synix) Fixed: @error and @extended not be passed back in nested functions e.g. _Resource_GetAsRaw() 2014/07/19 Added: _Resource_SetBitmapToCtrlID() formely known as _Resource_SetImageToCtrlID() Added: Note about using #AutoIt3Wrapper_Res_Icon_Add to the example. (Thanks Zedna) Added: Passing a blank string to _Resource_SetToCtrlID() through the $sResNameOrID parameter, will delete the image and previous handle Changed: _Resource_SetImageToCtrlID() now accepts a hBitmap not a HBITMAP object Fixed: _Resource_GetAsBitmap() now works the same way as _ResourceGetAsBitmap() did, by converting a jpg, png etc... to HBITMAP Fixed: Memory management of some functions 2014/07/18 Fixed: Destroying a cursor Fixed: Regression from loading the current of external module. (Thanks UEZ) 2014/07/17 Added: Additonal checks to destroy cursors and icons Added: Checking if the dll or exe filepath has a valid extension Added: Example of using an icon and image on a button control Fixed: Icons and cursors (finally) being re-sized to a control Fixed: Using GUIGetStyle() on a non-AutoIt handle would cause issue with controls Fixed: Variable naming of $sDLL to $sDllOrExePath for improved clarity Removed: Workaround for setting icons to AutoIt controls 2014/07/17 Added: Commented workaround in the example for re-sizing an icon control Added: ResourcesEx_PE.au3 created by PreExpand for all you constant variable haters out there!!! Fixed: Changelog comments and source code comments Fixed: Re-sizing icons when the control was different to the icon's size. (Thanks czardas for the MSDN link and Jon.) Fixed: Re-sizing cursors and icons in general 2014/07/15 Added: Comments about using SOUND for wav files and RT_RCDATA for mp3 files. (Thanks Melba23) Added: Option to relevant functions to re-size the image based on the control's dimensions. (Requested by kinch: http://www.autoitscript.com/forum/topic/51103-resources-udf/?p=1147525) Added: Using _Resource_LoadFont() example. (Thanks UEZ) Changed: Certain example resources to now use those found in %AUTOITDIR%\Examples\Helpfile\Extras Changed: Constants and enums readability. (Thank mLipok) Changed: Internal functions for destroying resources Changed: Removed changes made from the previous version for loading resources multiple times. The design needs to be re-thought Changed: Setting styles of controls using native AutoIt functions Fixed: Destroying control resource images would fail to show if reinstated again Fixed: Documentation comments Fixed: Missing certain users who helped with creating this UDF Fixed: Outdated SciTE files 2014/07/14: Added: _Resource_GetAsCursor(), for the loading of animated cursors and standard cursors which can then be used with _WinAPI_SetCursor() Added: _Resource_GetAsIcon(), for loading icon resource types Added: _Resource_LoadFont(), which retrieves a font resource and adds to the current memory of the associated module Added: _Resource_SetCursorToCtrlID() and _Resource_SetIconToCtrlID() Added: Additional resource types to destroy on exit, including $RT_FONT, $RT_ICON and $RT_MENU Added: Playing Mp3s to _Resource_LoadSound(). (Thanks to UEZ and Melba23 with changes made by me.) Changed: _Resource_GetAsBitmap() returns a HTBITMAP handle without converting from hBitmap to HBITMAP Changed: _Resource_PlaySound() to _Resource_LoadSound() Changed: _Resource_SetBitmapToCtrlID() to _Resource_SetImageToCtrlID() Changed: _SendMessage() to GUICtrlSendMsg() Changed: Example files Changed: Setting $iError in the internal get function Changed: Signature of _Resource_Destroy() Changed: Updated example to reflect major changes to the ResourcesEx UDF Changed: Various UDF tweaks that I didn't document because I simply couldn't keep track of all the playing around I did in the last week Fixed: _Resource_GetAsImage() not returning an error when a bitmap couldn't be found in the resource table Fixed: Retrieving length of a string Fixed: Using the current module instead of zero in _Resource_LoadSound() Fixed: Various comment changes. (Thanks mLipok) Fixed: Loading resources multiple times. This is fixed thanks to using the internal storage array 2014/07/07: Added: _Resource_Destroy() and _Resource_DestroyAll() to destroy a particular resource name or all resources Added: Checking if the resource name of id value is empty Added: Descriptions, though could do with a little tweaking Changed: _Resource_Get() to _Resource_GetAsRaw() Changed: Internal workings of __Resource_Storage() Changed: Re-size the storage array when destroyed or on shutdown Fixed: _Resource_GetAsString() with default encoding of ANSI Fixed: Calltips API referencing Resources.au3 and not ResourcesEx.au3 Removed: _Resource_Shudown() due to the addition of _Resource_Destroy() and _Resource_DestroyAll() 2014/07/06: Added: _Resource_Shudown() to free up those resources which aren't loaded using _WinAPI_LockResource(). UnlockResource is obsolete Added: Support for using $RT_STRING Changed: _Resource_GetAsString() now works correctly for most encodings. (Thanks Jos) Changed: _Resource_GetAsString() will now load as a string if the resource type requested is $RT_STRING 2014/07/04: Added: #Regions. (Thanks mLipok) Added: #Tidy_Parameters=/sort_funcs /reel (Thanks mLipok) Added: All optional params now accept the default keyword Added: Link to this thread. (Thanks mLipok) Added: Main header. (Thanks mLipok) Changed: $f.... >> $b..... (Thanks mLipok) 2014/07/03: Initial release1 point
-
@IPlayInHD, Please read our forum rules on game automation before continuing in our forums. Jos1 point
-
atkinspr, Welcome to the AutoIt forums. The Interrupting a running function tutorial in the Wiki will explain several ways to do this. M231 point
-
I know what you mean, but can you be more specific for others I mean : where to look ?1 point
-
The 256 x 256 is a restriction imposed by the RC.exe from Microsoft. I couldn't get around it. I tried using trancexx's ResourcesViewerAndCompiler but it was extremely slow to batch-create a 250+ icon .dll; although it did get around the 256 x 256 restriction 'cause she's just a genius. Either give yourself admin rights or change the line in GenDll() from: FileCopy($TmpDir & "\" & $SName & ".dll", "C:\" & $SName & "-" & $rnd & ".dll", 1) to FileCopy($TmpDir & "\" & $SName & ".dll", @MyDocumentsDir & "\" & $SName & "-" & $rnd & ".dll", 1) Or something. Ultimately, there is a better way to do this, but I've given up as this fits my needs. I only need 48 x 48 icons across the board.1 point
-
If I change SciTE's encoding for the file to UTF-8 or UTF-8 with BOM and save the file, then reopen it, it works fine. Your zip file shows up like this when I open it in Scite, its encoding shows up as "Code Page Property" _UWAGA("Nie mo¿na uruchamiaæ programu wielokrotnie w tym samym czasie") If I convert it to UTF-8 that line shows up as this. _UWAGA("Nie moa uruchamia桰rogramu wielokrotnie w tym samym czasie") If I encode the script as UTF-8 and copy the text you have in the OP into the script it shows up normally when I run it. _UWAGA("Nie można uruchamiać programu wielokrotnie w tym samym czasie") Make sure you have SciTE's encoding set correctly before trying to use anything other than "low ASCII" characters (0-127)1 point
-
Compressors and packers offer almost zero benefit to preventing the decompiling of a script. They're just packers and most of the decompilers can blow right past them. Also, most of the packers, like UPX, are what cause most of the false AV reports.1 point
-
Did you try to use this: #Obfuscator_Ignore_Funcs=AddHookApi #Obfuscator_Ignore_Funcs=ImageDirectoryEntryToData #Obfuscator_Ignore_Funcs=Intercept_MessageBoxW #Obfuscator_Ignore_Funcs=VirtualProtect1 point
-
Here, let me then: #include <WinApi.au3> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; AddHookApi("user32.dll", "MessageBoxW", "Intercept_MessageBoxW", "int", "hwnd;wstr;wstr;uint") Func Intercept_MessageBoxW($hWnd, $sText, $sTitle, $iType) Local $aCall = DllCall("user32.dll", "int", "MessageBoxW", _ "hwnd", $hWnd, _ "wstr", $sText, _ "wstr", StringReplace($sTitle, "AutoIt", @ScriptName), _ "uint", $iType) If @error Or Not $aCall[0] Then Return 0 Return $aCall[0] EndFunc ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Let's try it ; Usual message box MsgBox(0, 'Test', 'Some text') ; Cause error that would say some AutoIt shit happened, but now it wouldn't say "AutoIt" DllStructCreate("byte[123456789097]") ; The End ; The magic is down below Func AddHookApi($sModuleName, $vFunctionName, $vNewFunction, $sRet = "", $sParams = "") Local Static $pImportDirectory, $hInstance Local Const $IMAGE_DIRECTORY_ENTRY_IMPORT = 1 If Not $pImportDirectory Then $hInstance = _WinAPI_GetModuleHandle(0) $pImportDirectory = ImageDirectoryEntryToData($hInstance, $IMAGE_DIRECTORY_ENTRY_IMPORT) If @error Then Return SetError(1, 0, 0) EndIf Local $iIsInt = IsInt($vFunctionName) Local $iRestore = Not IsString($vNewFunction) Local $tIMAGE_IMPORT_MODULE_DIRECTORY Local $pDirectoryOffset = $pImportDirectory Local $tModuleName Local $iInitialOffset, $iInitialOffset2 Local $iOffset2 Local $tBufferOffset2, $iBufferOffset2 Local $tBuffer, $tFunctionOffset, $pOld, $fMatch, $pModuleName, $pFuncName Local Const $PAGE_READWRITE = 0x04 While 1 $tIMAGE_IMPORT_MODULE_DIRECTORY = DllStructCreate("dword RVAOriginalFirstThunk;" & _ "dword TimeDateStamp;" & _ "dword ForwarderChain;" & _ "dword RVAModuleName;" & _ "dword RVAFirstThunk", _ $pDirectoryOffset) If Not DllStructGetData($tIMAGE_IMPORT_MODULE_DIRECTORY, "RVAFirstThunk") Then ExitLoop $pModuleName = $hInstance + DllStructGetData($tIMAGE_IMPORT_MODULE_DIRECTORY, "RVAModuleName") $tModuleName = DllStructCreate("char Name[" & _WinAPI_StringLenA($pModuleName) & "]", $pModuleName) If DllStructGetData($tModuleName, "Name") = $sModuleName Then ; function from this module $iInitialOffset = $hInstance + DllStructGetData($tIMAGE_IMPORT_MODULE_DIRECTORY, "RVAFirstThunk") $iInitialOffset2 = $hInstance + DllStructGetData($tIMAGE_IMPORT_MODULE_DIRECTORY, "RVAOriginalFirstThunk") If $iInitialOffset2 = $hInstance Then $iInitialOffset2 = $iInitialOffset $iOffset2 = 0 While 1 $tBufferOffset2 = DllStructCreate("dword_ptr", $iInitialOffset2 + $iOffset2) $iBufferOffset2 = DllStructGetData($tBufferOffset2, 1) If Not $iBufferOffset2 Then ExitLoop If $iIsInt Then If BitAND($iBufferOffset2, 0xFFFFFF) = $vFunctionName Then $fMatch = True; wanted function Else $pFuncName = $hInstance + $iBufferOffset2 + 2 ; 2 is size od "word", see line below... $tBuffer = DllStructCreate("word Ordinal; char Name[" & _WinAPI_StringLenA($pFuncName) & "]", $hInstance + $iBufferOffset2) If DllStructGetData($tBuffer, "Name") == $vFunctionName Then $fMatch = True; wanted function EndIf If $fMatch Then $tFunctionOffset = DllStructCreate("ptr", $iInitialOffset + $iOffset2) VirtualProtect(DllStructGetPtr($tFunctionOffset), DllStructGetSize($tFunctionOffset), $PAGE_READWRITE) If @error Then Return SetError(3, 0, 0) $pOld = DllStructGetData($tFunctionOffset, 1) If $iRestore Then DllStructSetData($tFunctionOffset, 1, $vNewFunction) Else DllStructSetData($tFunctionOffset, 1, DllCallbackGetPtr(DllCallbackRegister($vNewFunction, $sRet, $sParams))) EndIf Return $pOld EndIf $iOffset2 += DllStructGetSize($tBufferOffset2) WEnd ExitLoop EndIf $pDirectoryOffset += 20 ; size of $tIMAGE_IMPORT_MODULE_DIRECTORY WEnd Return SetError(4, 0, 0) EndFunc Func VirtualProtect($pAddress, $iSize, $iProtection) Local $aCall = DllCall("kernel32.dll", "bool", "VirtualProtect", "ptr", $pAddress, "dword_ptr", $iSize, "dword", $iProtection, "dword*", 0) If @error Or Not $aCall[0] Then Return SetError(1, 0, 0) Return 1 EndFunc Func ImageDirectoryEntryToData($hInstance, $iDirectoryEntry) ; Get pointer to data Local $pPointer = $hInstance ; Start processing passed binary data. 'Reading' PE format follows. Local $tIMAGE_DOS_HEADER = DllStructCreate("char Magic[2];" & _ "word BytesOnLastPage;" & _ "word Pages;" & _ "word Relocations;" & _ "word SizeofHeader;" & _ "word MinimumExtra;" & _ "word MaximumExtra;" & _ "word SS;" & _ "word SP;" & _ "word Checksum;" & _ "word IP;" & _ "word CS;" & _ "word Relocation;" & _ "word Overlay;" & _ "char Reserved[8];" & _ "word OEMIdentifier;" & _ "word OEMInformation;" & _ "char Reserved2[20];" & _ "dword AddressOfNewExeHeader", _ $pPointer) Local $sMagic = DllStructGetData($tIMAGE_DOS_HEADER, "Magic") ; Check if it's valid format If Not ($sMagic == "MZ") Then Return SetError(1, 0, 0) ; MS-DOS header missing. Btw 'MZ' are the initials of Mark Zbikowski in case you didn't know. ; Move pointer $pPointer += DllStructGetData($tIMAGE_DOS_HEADER, "AddressOfNewExeHeader") ; move to PE file header ; In place of IMAGE_NT_SIGNATURE structure Local $tIMAGE_NT_SIGNATURE = DllStructCreate("dword Signature", $pPointer) ; Check signature If DllStructGetData($tIMAGE_NT_SIGNATURE, "Signature") <> 17744 Then ; IMAGE_NT_SIGNATURE Return SetError(2, 0, 0) ; wrong signature. For PE image should be "PE\0\0" or 17744 dword. EndIf ; Move pointer $pPointer += 4 ; size of $tIMAGE_NT_SIGNATURE structure ; In place of IMAGE_FILE_HEADER structure ; Move pointer $pPointer += 20 ; size of $tIMAGE_FILE_HEADER structure ; Determine the type Local $tMagic = DllStructCreate("word Magic;", $pPointer) Local $iMagic = DllStructGetData($tMagic, 1) Local $tIMAGE_OPTIONAL_HEADER If $iMagic = 267 Then ; x86 version ; Move pointer $pPointer += 96 ; size of $tIMAGE_OPTIONAL_HEADER ElseIf $iMagic = 523 Then ; x64 version ; Move pointer $pPointer += 112 ; size of $tIMAGE_OPTIONAL_HEADER Else Return SetError(3, 0, 0) ; unsupported module type EndIf ; Validate input by checking available number of structures that are in the module Local Const $IMAGE_NUMBEROF_DIRECTORY_ENTRIES = 16 ; predefined value that PE modules always use (AutoIt certainly) If $iDirectoryEntry > $IMAGE_NUMBEROF_DIRECTORY_ENTRIES - 1 Then Return SetError(4, 0, 0) ; invalid input ; Calculate the offset to wanted entry (every entry is 8 bytes) $pPointer += 8 * $iDirectoryEntry ; At place of correst directory entry Local $tIMAGE_DIRECTORY_ENTRY = DllStructCreate("dword VirtualAddress; dword Size", $pPointer) ; Collect data Local $pAddress = DllStructGetData($tIMAGE_DIRECTORY_ENTRY, "VirtualAddress") If $pAddress = 0 Then Return SetError(5, 0, 0) ; invalid input ; $pAddress is RVA, add it to base address Return $hInstance + $pAddress EndFuncedit: because this is better than before.1 point
-
To handle COM errors you can add a COM error handler to your scripts. See ObjEvent in the help file. After 3.3.8.1 a COM error no longer crashes the script but sets @error. So you should check for @error <> 0 anyway. Use the switch as I suggested and you won't see the MsgBox pop up. If you want to display a user defined message I can point you to code I once got from trancexx to handle this issue.1 point
-
A simple snippet to support printing files or texts from our programs in AutoIt! ; #FUNCTION# ==================================================================================================================== ; Name ..........: _PrintFileOrText ; Description ...: Simple support printing files or texts! ; Syntax ........: _PrintFileOrText($vValue[, $fWaiting = True]) ; Parameters ....: $vValue - File name or texto! ; $fWaiting - [optional] If True, wait to impression. Default is True. ; Return values .: None ; Author ........: JScript ; Modified ......: ; Remarks .......: ; Related .......: ; Link ..........: ; Example .......: No ; =============================================================================================================================== Func _PrintFileOrText($vValue, $fWaiting = True) Local $sFileName, $iRandom = 0 If FileExists($vValue) Then $sFileName = $vValue Else $iRandom = 1 $sFileName = @TempDir & "" & Random(111111, 999999, 1) & ".tmp" ; Generates a random file name... ; Writes the contents to be printed... $hFileOpen = FileOpen($sFileName, 2) FileWrite($hFileOpen, $vValue) FileClose($hFileOpen) EndIf Switch $fWaiting Case True RunWait(@SystemDir & "notepad.exe /p " & FileGetShortName($sFileName), "", @SW_HIDE) Case False Run(@SystemDir & "notepad.exe /p " & FileGetShortName($sFileName), "", @SW_HIDE) EndSwitch If $iRandom Then FileDelete($sFileName) Return 1 EndFunc ;==>_Print1 point
-
#cs Name: _FormatByteSize Description: Convert a size in bytes to a human-readable representation. Author: dany Parameters: $iBytes - Int: bytes to convert. Return values: String: Human readable representation of $iBytes. #ce Func _FormatByteSize($iBytes) Local $i = 0, $aUnit[6] = ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB'] While $iBytes > 1024 $iBytes = $iBytes / 1024 $i += 1 If 5 = $i Then ExitLoop WEnd Return StringLeft($iBytes, StringInStr($iBytes, '.') + 3) & ' ' & $aUnit[$i] EndFunc1 point
-
#cs Name: _RestartEx Description: Restart your program with a small delay and command line options. Modified version of _Restart: http://www.autoitscript.com/forum/topic/19370-autoit-wrappers/page__view__findpost__p__199608 Author: UP_NORTH Modified: dany Parameters: $iDelay - Delay in milliseconds before restart, useful for _Singleton scripts. Default 50 ms. See http://www.robvanderwoude.com/wait.php#PING $vCmdLine - Optionally add the original command line options used to invoke the script (disabled by default). If $vIncCmdLine is a String then this is used as the command line option string. Return values: None, exits the script/program. #ce Func _RestartEx($iDelay = 50, $vCmdLine = False) Local $sCmdOpts, $sCmd = @ComSpec & ' /c PING 1.1.1.1 -n 1 -w ' & $iDelay & ' & START /I ' If IsString($vCmdLine) Then $sCmdOpts = $vCmdLine ElseIf $vCmdLine And $CmdLine[0] > 0 Then $sCmdOpts = StringMid($CmdLineRaw, StringInStr($CmdLineRaw, $CmdLine[1])) EndIf If @Compiled = 1 Then Run($sCmd & FileGetShortName(@ScriptFullPath) & ' ' & $sCmdOpts, '', @SW_HIDE) Else Run($sCmd & FileGetShortName(@AutoItExe) & ' ' & FileGetShortName(@ScriptFullPath) & ' ' & $sCmdOpts, '', @SW_HIDE) EndIf Exit EndFunc1 point
-
#include <StringConstants.au3> Local $sTinyURL = _GetTinyURLFromURL('http://www.google.com/') ; Retrieve the TinyURL of google.com. ConsoleWrite('TinyURL: ' & $sTinyURL & @CRLF) ; Display the TinyURL. ConsoleWrite('LongURL: ' & _GetURLFromTinyURL($sTinyURL) & @CRLF) ; Retrieve the 'LongURL' of the TinyURL. This should be the same URL from before. ; Version: 1.00. AutoIt: V3.3.10.2 ; Rerieve the TinyURL of a 'LongURL.' Please read the 'terms of usage' on TinyURL's site http://tinyurl.com/#terms. Func _GetTinyURLFromURL($sURL) Return StringStripWS(BinaryToString(InetRead('http://tinyurl.com/api-create.php?url=' & $sURL)), $STR_STRIPALL) EndFunc ;==>_GetTinyURLFromURL ; Version: 1.00. AutoIt: V3.3.10.2 ; Rerieve the 'LongURL' from a TinyURL. Please read the 'terms of usage' on TinyURL's site http://tinyurl.com/#terms. Func _GetURLFromTinyURL($sURL) Local $sRead = BinaryToString(InetRead('http://preview.tinyurl.com/' & StringRegExpReplace($sURL, '^\V*\/', ''))) Return StringStripWS(StringRegExp($sRead & @CRLF & _ 'id="redirecturl" href=" "', '(?:id="redirecturl"\s*href="(.*?)")', $STR_REGEXPARRAYGLOBALMATCH)[0], $STR_STRIPALL) EndFunc ;==>_GetURLFromTinyURL1 point
-
BASS Function Library (Sound and Music Functions)
Xandy reacted to eukalyptus for a topic
bassasio.au3 for using ASIO-drivers with bass. nothing documented at the moment... 3 examples included: example_livefx.au3 - like the example comes with bassasio.dll (AsioIn => + FX => AsioOut) example_playfile.au3 - ASIO-version of BrettF´s example1.au3 example_record.au3 - record to wavfile from AsioIn http://rapidshare.com/files/162578015/bassasio.rar enjoy Eukalyptus1 point