Option Explicit
Dim k, d, f As Integer
Dim Drive(0 To 100) As String
Dim File(0 To 300) As String
Dim Direc(0 To 150) As String
Dim Datiricevuti As String
Dim IPAdress As String
Dim Remotepath As String
Dim PathFileRecived As String
Dim MouseButton As Integer
Dim Opzioni As Boolean
Dim Savepath As String
Dim Updown As Boolean
Dim Apridopodown As Boolean
Dim Onlydown As Boolean
Dim Downandopen As Boolean
Dim X As Integer
Dim Conteggio As Double
Dim Wsstate As Integer '(0 normal,1 sincronizzazione,2 downloading,3 uploading)
Dim Shell1
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const LB_GETITEMRECT = &H198
Private Const LB_ERR = (-1)
Private Sub Connect_Click()
Timer1.Enabled = False
IPAdress = Uppertext.Text
SaveSetting "EsR", "Connessione", "IPAdress", IPAdress
Timer1.Enabled = True
connetti
End Sub
Private Sub List2_dblClick()
If Opzioni = False Then
If wsk.State = sckConnected Then
wsk.SendData ("download:" & List2.List(List2.ListIndex))
End If
Else
If List2.ListIndex = 0 Then
List2.Enabled = False
Options.Enabled = False
zscrit.Visible = True
zscrit.Text = Savepath
ElseIf List2.ListIndex = 1 Then
Updown = Not Updown
Opzioniliste
ElseIf List2.ListIndex = 2 Then
If Apridopodown = True Then
Apridopodown = False
SaveSetting "EsR", "General", "shellit", 0
Opzioniliste
Else
Apridopodown = True
SaveSetting "EsR", "General", "shellit", -1
Opzioniliste
End If
End If
End If
End Sub
Private Sub List2_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim lItem As Long
If Button = vbRightButton Then
lItem = GetRClickedItem(List2, X, Y)
If lItem <> -1 Then
List2.ListIndex = lItem
PopupMenu mnMenu
End If
End If
End Sub
Private Sub MnDelete_Click()
On Error Resume Next
wsk.SendData "kill:" & List2.List(List2.ListIndex)
DoEvents
End Sub
Private Sub mnDownload_Click()
If wsk.State = sckConnected Then
wsk.SendData ("download:" & List2.List(List2.ListIndex))
End If
Onlydown = True
End Sub
Private Sub mnOpen_Click()
If wsk.State = sckConnected Then
wsk.SendData ("download:" & List2.List(List2.ListIndex))
End If
Downandopen = True
End Sub
Private Sub zscrit_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then
If Dir(zscrit.Text) = "" Or Not Right(zscrit.Text, 1) = "\" Then
zscrit = List2.List(0)
End If
zscrit.Visible = False
Savepath = zscrit.Text
SaveSetting "EsR", "Path", "Savepath", Savepath
Opzioniliste
Options.Enabled = True
List2.Enabled = True
End If
End Sub
Private Sub connetti()
wsk.Close
wsk.RemotePort = 321
wsk.RemoteHost = IPAdress
wsk.Connect
End Sub
Private Sub Form_Load()
Savepath = GetSetting("EsR", "Path", "Savepath", App.Path & "\")
IPAdress = GetSetting("EsR", "Connessione", "IPAdress", "127.0.0.1")
Apridopodown = CBool(GetSetting("EsR", "General", "shellit", 0))
Uppertext = IPAdress
connetti
End Sub
Private Sub paint()
If Not Opzioni = True Then
If Mid(Datiricevuti, 1, 6) = "drive:" Then
Combo1.AddItem Mid(Datiricevuti, 7, Len(Datiricevuti) - 6)
ElseIf Mid(Datiricevuti, 1, 4) = "dir:" Then
List1.AddItem Mid(Datiricevuti, 5, Len(Datiricevuti) - 4)
List3.AddItem Mid(Datiricevuti, 5, Len(Datiricevuti) - 4)
ElseIf Mid(Datiricevuti, 1, 5) = "file:" Then
List2.AddItem Mid(Datiricevuti, 6, Len(Datiricevuti) - 5)
ElseIf Mid(Datiricevuti, 1, 5) = "path:" Then
Remotepath = Mid(Datiricevuti, 6, Len(Datiricevuti) - 5)
ElseIf Mid(Datiricevuti, 1, 5) = "Sincr" Then
List1.Clear
List2.Clear
List3.Clear
Combo1.Clear
End If
End If
End Sub
Private Sub localpaint()
If Not Opzioni = True Then
List4.Clear
List5.Clear
Combo1.Clear
For X = 0 To Dril.ListCount - 1
Combo2.AddItem Dril.List(X)
Next X
List4.AddItem ("..")
For X = 0 To Dirl.ListCount - 1
List4.AddItem Dirl.List(X)
Next X
For X = 0 To Fill.ListCount - 1
List5.AddItem Fill.List(X)
Next X
End If
End Sub
Private Sub Options_Click()
If Opzioni = False Then
Opzioni = True
Options.Enabled = False
Connect.Enabled = False
Combo1.Enabled = False
Uppertext.Enabled = False
List1.Enabled = False
List1.Clear
List2.Clear
Uppertext.Text = "- - OPTIONS - -"
If Updown = False Then
Do Until List1.Width <= 1695
List2.Width = List2.Width + 50
List2.Left = List2.Left - 50
List1.Width = List1.Width - 50
DoEvents
Loop
Else
List2.Clear
List3.Clear
List4.Clear
List5.Clear
Do Until List1.Left >= 120
List5.Left = List5.Left + 50
List4.Left = List4.Left + 50
List3.Left = List3.Left + 50
List2.Left = List2.Left + 50
List1.Left = List1.Left + 50
DoEvents
Loop
Do Until Combo1.Left <= 120
Combo2.Left = Combo2.Left - 50
Combo1.Left = Combo1.Left - 50
Combo1.Width = Combo1.Width + 50
DoEvents
Loop
End If
Opzioniliste
Options.Enabled = True
Else
Options.Enabled = False
List1.Clear
List2.Clear
If Updown = False Then
Do Until List1.Width >= 6135
List2.Width = List2.Width - 50
List2.Left = List2.Left + 50
List1.Width = List1.Width + 50
DoEvents
Loop
Else
Do Until List3.Left <= 120
List5.Left = List5.Left - 50
List4.Left = List4.Left - 50
List3.Left = List3.Left - 50
List2.Left = List2.Left - 50
List1.Left = List1.Left - 50
DoEvents
Loop
Do Until Combo2.Left >= 120
Combo2.Left = Combo2.Left + 50
Combo1.Left = Combo1.Left + 50
Combo1.Width = Combo1.Width - 50
DoEvents
Loop
End If
Uppertext.Text = IPAdress
Connect.Enabled = True
Uppertext.Enabled = True
Combo1.Enabled = True
List1.Enabled = True
Options.Enabled = True
Opzioni = False
connetti
localpaint
End If
End Sub
Private Sub Opzioniliste()
List1.Clear
List2.Clear
List1.AddItem ("Download Path")
List1.AddItem ("Upload Mode")
List1.AddItem ("Shell After Download")
List2.AddItem (Savepath)
If Updown = True Then List2.AddItem ("On") Else List2.AddItem ("Off")
If Apridopodown = True Then List2.AddItem ("Yes") Else List2.AddItem ("No")
End Sub
Private Sub Wsk_ConnectionRequest(ByVal requestID As Long)
If wsk.State <> sckClosed Then wsk.Close
wsk.Accept requestID
End Sub
Private Sub Wsk_DataArrival(ByVal bytesTotal As Long)
wsk.GetData Datiricevuti
Select Case Wsstate
Case 0 '------------------------------------NORMALITA'-----------------------
If Datiricevuti = "Sincr" Then
Wsstate = 1
paint
End If
If Datiricevuti = "down" Then
Wsstate = 2
List1.Enabled = False
List2.Enabled = False
Combo1.Enabled = False
Uppertext.Enabled = False
Options.Enabled = False
Connect.Enabled = False
Uppertext.Text = "Downloading.."
PathFileRecived = Savepath & List2.List(List2.ListIndex)
Open PathFileRecived For Binary As #1
End If
Case 1 '------------------------------------SINCRONIZZAZIONE-----------------------
If Datiricevuti = "End" Then
Wsstate = 0
Exit Sub
End If
paint
Exit Sub
Case 2 '------------------------------------DOWNLOADING-----------------------
If Datiricevuti = "Ter" Then
Wsstate = 0
List1.Enabled = True
List2.Enabled = True
Combo1.Enabled = True
Uppertext.Enabled = True
Options.Enabled = True
Connect.Enabled = True
Uppertext.Text = IPAdress
Close #1
If Onlydown = False And Downandopen = False Then
If Apridopodown = True Then
Shell1 = Val(ShellExecute(Me.hwnd, vbNullString, (Chr(34) & PathFileRecived & Chr(34)), vbNullString, vbNullString, 1))
End If
Else
If Downandopen = True Then
Shell1 = Val(ShellExecute(Me.hwnd, vbNullString, (Chr(34) & PathFileRecived & Chr(34)), vbNullString, vbNullString, 1))
End If
Onlydown = False
Downandopen = False
End If
Else
Put #1, , Datiricevuti
End If
End Select
End Sub
Private Sub List1_dblClick()
On Error GoTo Error
wsk.SendData "dir:" & List1.ListIndex
Error:
End Sub
Private Sub List3_dblClick()
On Error Resume Next
wsk.SendData "dir:" & List3.ListIndex
End Sub
Private Sub Combo1_Click()
On Error Resume Next
wsk.SendData "drive:" & Combo1.ListIndex
End Sub
Private Sub Combo2_Click()
On Error Resume Next
Dril.Drive = Combo2.List(Combo2.ListIndex)
End Sub
Private Sub Dirl_Change()
Fill.Path = Dirl.Path
localpaint
End Sub
Private Sub Dril_Change()
On Error GoTo error_handler
Dirl.Path = Dril.Drive
error_handler:
End Sub
Private Sub List4_dblClick()
On Error GoTo Error
Dirl.Path = List4.List(List4.ListIndex)
Error:
End Sub
Private Sub list5_dblClick()
If wsk.State = sckConnected Then
Dim data4 As String
On Error GoTo Error
List4.Enabled = False
List5.Enabled = False
List3.Enabled = False
Combo1.Enabled = False
Combo2.Enabled = False
Uppertext.Enabled = False
Options.Enabled = False
Connect.Enabled = False
Uppertext.Text = "Uploading.."
Open Fill.Path & "\" & List5.List(List5.ListIndex) For Binary As #1
wsk.SendData "upload:" & List5.List(List5.ListIndex)
DoEvents
data4 = Space(4000)
For Conteggio = 0 To CLng(LOF(1) / 4000)
Get #1, Conteggio * CLng(4000) + 1, data4
wsk.SendData data4
DoEvents
Next Conteggio
wsk.SendData "upend"
DoEvents
Close #1
List4.Enabled = True
List5.Enabled = True
List3.Enabled = True
Combo1.Enabled = True
Combo2.Enabled = True
Uppertext.Enabled = True
Options.Enabled = True
Connect.Enabled = True
Uppertext.Text = IPAdress
End If
Error:
End Sub
Public Function GetRClickedItem(MyList As Control, X As Single, Y As Single) As Long
Dim clickX As Long, clickY As Long
Dim lRet As Long
Dim CurRect As RECT
Dim l As Long
clickX = X \ Screen.TwipsPerPixelX
clickY = Y \ Screen.TwipsPerPixelY
For l = 0 To MyList.ListCount - 1
lRet = SendMessage(MyList.hwnd, LB_GETITEMRECT, l, CurRect)
If (clickX >= CurRect.Left) And (clickX <= CurRect.Right) And (clickY >= CurRect.Top) And (clickY <= CurRect.Bottom) Then
GetRClickedItem = l
Exit Function
End If
Next l
GetRClickedItem = -1
End Function
Private Sub Timer1_Timer()
Select Case wsk.State
Case sckClosing
wsk.Close
wsk.RemotePort = 321
wsk.RemoteHost = IPAdress
wsk.Connect
Case sckError
wsk.Close
wsk.RemotePort = 321
wsk.RemoteHost = IPAdress
wsk.Connect
End Select
End Sub