@@ -64,6 +64,7 @@ DllOpen("winhttp.dll") ; making sure reference count never reaches 0
64
64
; _WinHttpSetTimeouts
65
65
; _WinHttpSimpleBinaryConcat
66
66
; _WinHttpSimpleFormFill
67
+ ; _WinHttpSimpleFormFill_SetCallback
67
68
; _WinHttpSimpleReadData
68
69
; _WinHttpSimpleReadDataAsync
69
70
; _WinHttpSimpleRequest
@@ -1108,7 +1109,7 @@ EndFunc
1108
1109
; +If you want to upload using alternative way (to avoid certain PHP bug that could exist on server side) then prefix the file string with [["PHP#50338:"]] string.
1109
1110
; +For example: [[..."name:files[]", "PHP#50338:" & $sFile1 & "|" & $sFile2 ...]]
1110
1111
; +Muliple files are always separated with vertical line ASCII character when filling the form.
1111
- ; Related .......: _WinHttpConnect
1112
+ ; Related .......: _WinHttpConnect, _WinHttpSimpleFormFill_SetCallback
1112
1113
; ============================================================================================
1113
1114
Func _WinHttpSimpleFormFill(ByRef $hInternet , $sActionPage = Default , $sFormId = Default , $sFldId1 = Default , $sDta1 = Default , $sFldId2 = Default , $sDta2 = Default , $sFldId3 = Default , $sDta3 = Default , $sFldId4 = Default , $sDta4 = Default , $sFldId5 = Default , $sDta5 = Default , $sFldId6 = Default , $sDta6 = Default , $sFldId7 = Default , $sDta7 = Default , $sFldId8 = Default , $sDta8 = Default , $sFldId9 = Default , $sDta9 = Default , $sFldId10 = Default , $sDta10 = Default , _
1114
1115
$sFldId11 = Default , $sDta11 = Default , $sFldId12 = Default , $sDta12 = Default , $sFldId13 = Default , $sDta13 = Default , $sFldId14 = Default , $sDta14 = Default , $sFldId15 = Default , $sDta15 = Default , $sFldId16 = Default , $sDta16 = Default , $sFldId17 = Default , $sDta17 = Default , $sFldId18 = Default , $sDta18 = Default , $sFldId19 = Default , $sDta19 = Default , $sFldId20 = Default , $sDta20 = Default , _
@@ -1554,6 +1555,31 @@ Func _WinHttpSimpleFormFill(ByRef $hInternet, $sActionPage = Default, $sFormId =
1554
1555
Return SetError (3 , 0 , " " )
1555
1556
EndFunc
1556
1557
1558
+ ; #FUNCTION# ====================================================================================================================
1559
+ ; Name...........: _WinHttpSimpleFormFill_SetCallback
1560
+ ; Description ...: Sets user defined function as callback function for _WinHttpSimpleFormFill
1561
+ ; Syntax.........: _WinHttpSimpleFormFill_SetCallback($vCallback [, $iNumChunks = 100 ])
1562
+ ; Parameters ....: $vCallback - UDF's name
1563
+ ; $iNumChunks - [optional] number of chunks to send during form submitting. Default is 100.
1564
+ ; Return values .: Undefined.
1565
+ ; Author ........: trancexx
1566
+ ; Remarks .......: Unregistering is done by passing [[0]] as first argument.
1567
+ ; Related .......: _WinHttpSimpleFormFill
1568
+ ; ===============================================================================================================================
1569
+ Func _WinHttpSimpleFormFill_SetCallback($vCallback = Default , $iNumChunks = 100 )
1570
+ If $iNumChunks < = 0 Then $iNumChunks = 100
1571
+ Local Static $vFunc = Default , $iParts = $iNumChunks
1572
+ If $vCallback <> Default Then
1573
+ $vFunc = $vCallback
1574
+ $iParts = Ceiling ($iNumChunks )
1575
+ ElseIf $vCallback = 0 Then
1576
+ $vFunc = Default
1577
+ $iParts = 1
1578
+ EndIf
1579
+ Local $aOut [2 ] = [$vFunc , $iParts ]
1580
+ Return $aOut
1581
+ EndFunc
1582
+
1557
1583
; #FUNCTION# ====================================================================================================================
1558
1584
; Name...........: _WinHttpSimpleReadData
1559
1585
; Description ...: Reads data from a request
@@ -2163,7 +2189,18 @@ Func __WinHttpFormSend($hInternet, $sMethod, $sAction, $fMultiPart, $sBoundary,
2163
2189
If $sAdditionalHeaders Then _WinHttpAddRequestHeaders($hRequest , $sAdditionalHeaders , BitOR ($WINHTTP_ADDREQ_FLAG_REPLACE , $WINHTTP_ADDREQ_FLAG_ADD ))
2164
2190
_WinHttpSetOption($hRequest , $WINHTTP_OPTION_DECOMPRESSION , $WINHTTP_DECOMPRESSION_FLAG_ALL )
2165
2191
_WinHttpSetOption($hRequest , $WINHTTP_OPTION_UNSAFE_HEADER_PARSING , 1 )
2166
- _WinHttpSendRequest($hRequest , Default , $sAddData )
2192
+ Local $aClbk = _WinHttpSimpleFormFill_SetCallback()
2193
+ If $aClbk [0 ] <> Default Then
2194
+ Local $iSize = StringLen ($sAddData ), $iChunk = Floor ($iSize / $aClbk [1 ]), $iRest = $iSize - ($aClbk [1 ] - 1 ) * $iChunk , $iCurCh = $iChunk
2195
+ _WinHttpSendRequest($hRequest , Default , Default , $iSize )
2196
+ For $i = 1 To $aClbk [1 ]
2197
+ If $i = $aClbk [1 ] Then $iCurCh = $iRest
2198
+ _WinHttpWriteData($hRequest , StringMid ($sAddData , 1 + $iChunk * ($i - 1 ), $iCurCh ))
2199
+ Call ($aClbk [0 ], Floor ($i * 100 / $aClbk [1 ]))
2200
+ Next
2201
+ Else
2202
+ _WinHttpSendRequest($hRequest , Default , $sAddData )
2203
+ EndIf
2167
2204
_WinHttpReceiveResponse($hRequest )
2168
2205
__WinHttpSetCredentials($hRequest , " " , $sAddData , $sCredName , $sCredPass )
2169
2206
Return $hRequest
0 commit comments