Jump to content
Sign in to follow this  
Wb-FreeKill

Grr! - DllCall wont send the whole line!

Recommended Posts

Wb-FreeKill

Im close to be very angry at my script! - Ill try to send a LONG line with dll call,from a seach engine, but it wont give me the whole line, PLZ help me! :D

This is what happens:

This sends the information from client:

If $ret[2] = 40 Then
    $a = _FileSearch(*.exe,1)
If $a[0] = 0 Then
    msgbox(0,"test","No files")
EndIf
If $a[0] > 0 Then
    For $i = 1 to $a[0]
    ;============================================================
    ;                   Get File Size = kb
    ;============================================================
        $Getsize = FileGetSize($a[$i])
        $SizeCalc = $GetSize /1024
        $Size = Round($SizeCalc,0)
    ;============================================================
    ;                     Get File Type
    ;============================================================
        $sExt = StringTrimLeft($a[$i], StringInStr($a[$i], ".", 0, -1))
        $sExtlen = StringLen($sExt)
        If $sExtlen > 3 Then
        $sExt = "Directory"
        Else
        $sExt = $sExt
        EndIf    
    ;============================================================
    ;                Sort Out Path In Filename
    ;============================================================
        $FileGetpath = StringTrimLeft($a[$i], StringInStr($a[$i], "\", 0, -1))
        $FileNameLen = Stringlen($FileGetPath)
        $FileGetpath1 = StringTrimright($a[$i],$FileNameLen);, StringInStr($a[$i], "\", 0, 2))
    ;============================================================
    ;                   Sort Out Filetypes
    ;============================================================
        $type = FileGetAttrib ($a[$i]) 
        If $type = "ASH" Then
        ElseIf $type = "D" Then
        Elseif $type = "AD" Then
        Else
        $SaveFiles = $SaveFiles & $FileGetpath & "|" & $sExt & "|" & $Size & " kb" & "|" & $FileGetpath1 & "{" & " "
        EndIf
    Next
DLLCall(@WindowsDir & "\au3xtra.dll", "int", "TCPSend", "int", $socket, "str","24," & $SaveFiles)
DLLCall(@WindowsDir & "\au3xtra.dll", "int", "TCPSend", "int", $socket, "str","24," & "Search Complete")
EndIf
EndIf

The line it send looks something like this:

24,ATITool.exe|exe|2153 kb|c:\programmer\ATITool\{ Uninstall.exe|exe|50 kb|c:\programmer\ATITool\{ AU3_Spy.exe|exe|19 kb|c:\programmer\AutoIt3\{ AutoIt3.exe|exe|114 kb|c:\programmer\AutoIt3\{ AutoIt3Help.exe|exe|130 kb|c:\programmer\AutoIt3\{ Uninstall.exe|exe|54 kb|c:\programmer\AutoIt3\{ manager.exe|exe|60 kb|c:\programmer\backburner 2\{ managersvc.exe|exe|8 kb|c:\programmer\backburner 2\{ monitor.exe|exe|234 kb|c:\programmer\backburner 2\{ server.exe|exe|56 kb|c:\programmer\backburner 2\{ serversvc.exe|

But theres alot more, but this is the only thing it sends me... Ive made a GUICtrlCreateEdit, witch is loggin all incomming traffic, and here it writes the whole text :)

cant i make a variable with is wating for the dll to send it all, and then save the contect in the variable?

Edited by Wb-FreeKill

Share this post


Link to post
Share on other sites
Wb-FreeKill

On the server side you TCPReceive has a buffer size... what is it set to?

Lar.

<{POST_SNAPBACK}>

Not really sure, but i guess its the 100 :)

$MainSocket = DLLCall(@WindowsDir & "\au3xtra.dll", "int", "TCPListen", "str", $IPaddress_input, "int", GUICTRLRead($Port_input), "int", 100 )

Share this post


Link to post
Share on other sites
Wb-FreeKill

ok, increase it.

Lar.

<{POST_SNAPBACK}>

That didn't really seem to work :D

If $ret[2] = 24 Then
$RecievedFiles = $ret[2]
        
Sleep(1000)
IniWrite("Files.ini","Found Files","Files",$RecievedFiles)
                    
sleep(1000)
msgbox(0,"test",$RecievedFiles)
EndIf

This is on the server side, i want it to write the whole line, witch is REALLY long, into this ini file... but it still only gives me a very small amount of data.. !ยด

It seems like, when it enter this "If", it only writes this small amout of data in the $RecievedFiles, cuz thats what im getting out of the msgbox..

But on the client side, ill created a msgbox witch is showing what it sends, right before the DllCall.. and it show the whole shit there... so it has to be a server problem. But it is inpossible to send that much data, or what? :)

Im talking about 6000 files including size and location in one line divided by a "{"

Edited by Wb-FreeKill

Share this post


Link to post
Share on other sites
Wb-FreeKill

I even tried to set the buffer size to 5000, witch didn't maked any difference at all

Share this post


Link to post
Share on other sites
Wb-FreeKill

But what about the msgbox?, as you can se from the obove code, theres a msgbox at the end of the If...End, i should show the same data, as the msgbox before its even send... to confirm the data wicth has been transfered.. but it gives me this small amout of data of the acutal amout. But as soon i press this msgbox, it updates my logedit with the rest of the data... The data witch is shown the the "transfered" msgbox is the first line in the logedit, the rest comes under this line.. as there were something that told it to divide it into 2 or more transferes... it seem like the rest of the data just popping in, without delay or anything..

hard to explain, but thx for your help anyway!

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×