themax90 Posted September 3, 2005 Posted September 3, 2005 I remember seeing a script that could send files on a connection and it was called _APISENDFILE or something like that. Does anyone remember where to find it? Thanks AutoIt Smith
layer Posted September 3, 2005 Posted September 3, 2005 (edited) From Larry: expandcollapse popup; _APIFileOpen( <FileName> ) ; ; Returns a "REAL" file handle for reading and writing. ; The return value comes directly from "CreateFile" api. Func _APIFileOpen( $szFile ) Local $GENERIC_READ = 0x80000000, $GENERIC_WRITE = 0x40000000 Local $OPEN_ALWAYS = 4, $FILE_ATTRIBUTE_NORMAL = 0x00000080 Local $AFO_h $AFO_h = DllCall( "kernel32.dll", "hwnd", "CreateFile",_ "str", $szFile,_ "long", BitOR($GENERIC_READ,$GENERIC_WRITE),_ "long", 0,_ "ptr", 0,_ "long", $OPEN_ALWAYS,_ "long", $FILE_ATTRIBUTE_NORMAL,_ "long", 0 ) Return $AFO_h[0] EndFunc ; _APIFileClose( <FileHandle> ) ; ; The return value comes directly from "CloseHandle" api. Func _APIFileClose( $hFile ) Local $AFC_r $AFC_r = DllCall( "kernel32.dll", "int", "CloseHandle",_ "hwnd", $hFile ) Return $AFC_r[0] EndFunc ; _APIFileSetPos( <FileHandle>, <Position in the file to read/write to/from> ) ; ; The return value comes directly from "SetFilePointer" api. Func _APIFileSetPos( $hFile, $nPos ) Local $FILE_BEGIN = 0 Local $AFSP_r $AFSP_r = DllCall( "kernel32.dll", "long", "SetFilePointer",_ "hwnd",$hFile,_ "long",$nPos,_ "long_ptr",0,_ "long",$FILE_BEGIN ) Return $AFSP_r[0] EndFunc ; _APIFileRead( <FileHandle>, <Number of Bytes to read>, <Option 0=String, 1=Binary(hex)> ) ; ; Returns the data read. (Binary is comma delimited Hex values) ; Sets @error to the return from ReadFile api. Func _APIFileRead( $hFile, $nBytes, $Option=0 ) Local $AFR_r, $AFR_n Local $AFR_str, $AFR_ret = "" If $Option = 0 Then $AFR_str = DllStructCreate("char[" & $nBytes & "]") Else $AFR_str = DllStructCreate("byte[" & $nBytes & "]") EndIf $AFR_r = DllCall( "kernel32.dll", "int", "ReadFile",_ "hwnd", $hFile,_ "ptr",DllStructGetPtr($AFR_str),_ "long",$nBytes,_ "long_ptr",0,_ "ptr",0 ) If $Option = 0 Then $AFR_ret = StringLeft(DllStructGetData($AFR_str,1),$AFR_r[4]) Else For $AFR_n = 1 to $AFR_r[4] $AFR_ret = $AFR_ret & Hex(DllStructGetData($AFR_str,1,$AFR_n),2) & "," Next $AFR_ret = StringTrimRight($AFR_ret,1) EndIf SetError($AFR_r[0]) DllStructDelete($AFR_str) Return $AFR_ret EndFunc ; _APIFileWrite( <FileHandle>, <Data to Write>, <Option 0=String, 1=Binary(hex)> ) ; ; Returns # of Bytes written. ; Sets @error to the return from WriteFile api. ; For binary <Data to Write> must be comma delimited hex values Func _APIFileWrite( $hFile, $szData, $Option=0 ) Local $AFW_r, $AFW_n, $AFW_i Local $AFW_ptr If $Option = 0 Then $AFW_n = StringLen($szData) $AFW_ptr = DllStructCreate("char[" & $AFW_n & "]") DllStructSetData($AFW_ptr,1,String($szData)) Else $szData = StringSplit($szData,",") $AFW_n = $szData[0] $AFW_ptr = DllStructCreate("byte[" & $AFW_n & "]") For $AFW_i = 1 to $AFW_n DllStructSetData($AFW_ptr,1,Dec($szData[$AFW_i]),$AFW_i) Next EndIf $AFW_r = DllCall( "kernel32.dll", "int", "WriteFile",_ "hwnd", $hFile,_ "ptr",DllStructGetPtr($AFW_ptr),_ "long",$AFW_n,_ "long_ptr",0,_ "ptr",0 ) SetError($AFW_r[0]) DllStructDelete($AFW_ptr) Return $AFW_r[4] EndFunc Sorry I couldn't find the original topic with it... which had exampled I think. Oh well Edited September 3, 2005 by layer FootbaG
themax90 Posted September 3, 2005 Author Posted September 3, 2005 yah I remember there was a topic that sent a file through api, but kinda slow, I'll keep looking
themax90 Posted September 3, 2005 Author Posted September 3, 2005 http://www.autoitscript.com/forum/index.php?showtopic=13411FOUND ITThanks layer, all I needed was to know the function to get it!ThanksAutoIt Smith
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now