Ok, ich Poste mal den Code, ich habe das Problem zwar gelöst, aber ich habe ein anderes. Ich erkläre mein Programm mal kurz.
Ich gebe in ein Fenster einen Pfad ein, z.B. "C:\", dann Programm findet auf dem Cleint PC (in dem Fallmein Desktop Pc) heraus, welche Dateien und Ordner darauf Existieren, und sendet dass wieder an den Server weiter.
Das Problem: Bei Ordnern wird immer ein Ordner vor dem Namen angezeigt und bei Dateien eine Datei. Wenn ich jedoch ein zweites mal einen Praf angebe, und das Program dann wieder den Thread, der die Dateien anzeigt erstellt, dann werden die Bilder nichtmehr Angezeigt. Wiso?
Server:
Code: Alles auswählen
Global mmThread
Global Win.s
Global mmKill
Global ListThread
E = 0
F = 0
Win.s = GetEnvironmentVariable("windir")
Global mmThread
Procedure ListIcon()
If OpenWindow(10, 0, 0, 500, 550, "ListIconGadgets", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(10))
UseJPEGImageDecoder()
ListIconGadget(11, 1, 1, 599, 550, "Name", 300)
AddGadgetColumn(11, 1, "Größe in Byte", 200)
LoadImage(4, "C:\1.JPEG", 0)
LoadImage(5, "C:\Datei.jpg", 0)
ReadFile(8, Win.s+"\Inhalt.txt")
ColumnPos = 0
For x = 1 To 500
a$ = ReadString(8, 0)
b$ = ReadString(8, 0)
c$ = ReadString(8, 0)
If a$ = "Datei"
AddGadgetItem(11, -1, b$ , ImageID(5))
SetGadgetItemText(11, ColumnPos, c$, 1)
EndIf
If a$ = "Ordner"
AddGadgetItem(11, -1, b$ , ImageID(4))
SetGadgetItemText(11, ColumnPos, c$, 1)
EndIf
ColumnPos+1
Next
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
EndProcedure
Procedure Ort()
If OpenWindow(8, 300, 400, 300, 300, "Durchsuchen", #PB_Window_MinimizeGadget | #PB_Window_SystemMenu)
If CreateGadgetList(WindowID(8))
StringGadget(9, 1, 1, 100, 25, "" , 0)
ButtonGadget(5, 100, 30, 40, 40, "OK", 0)
EndIf
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_Gadget
Select EventGadget()
Case 5
Text$ = GetGadgetText(9)
CreateFile(4, "C:\drf.txt")
WriteStringN(4, ""+Text$+"", 0)
CloseWindow(8)
CloseFile(4)
G = 4
EndSelect
EndIf
Until EventID = #PB_Event_CloseWindow Or G = 4
EndIf
EndProcedure
Procedure Fenster_1()
ClientID = EventClient()
If OpenWindow(0, 50, 100, 300, 500, "Server zum Herunterfaheren" , #PB_Window_SystemMenu , 0)
If CreateGadgetList(WindowID(0))
ButtonGadget(1, 10, 290, 250, 30, "Durchsuchen")
EndIf
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_Gadget
Select EventGadget()
Case 1
Ort()
SendNetworkFile(ClientID, "C:\drf.txt")
Delay(1000)
DeleteFile("C:\drf.txt")
SendNetworkString(ClientID, "RausRaus")
Repeat
If F = 70
CloseWindow(0)
F = 0
EndIf
Until m = 55
EndSelect
EndIf
Until EventID = #PB_Event_CloseWindow
EndIf
Delay(99999999)
EndProcedure
If InitNetwork() = 0
MessageRequester("Error", "Can't initialize the network !", 0)
End
EndIf
Port = 6705
Buffer = AllocateMemory(1000)
If CreateNetworkServer(0, Port)
Repeat
Delay(200)
SEvent = NetworkServerEvent()
If SEvent
ClientID = EventClient()
Select SEvent
Case 1
mmThread = CreateThread(@Fenster_1(), 453)
Delay(100)
Case 2
Datenpuffer.s = Space(4)
ReceiveNetworkData(ClientID, @Datenpuffer, 4)
If Datenpuffer = "drin"
CopyFile(Win.s+"\fm.png", Win.s+"\Inhalt.txt")
If IsThread(ListThread)
KillThread(ListThread)
KillThread(mmThread)
Delay(1000)
EndIf
ListThread = CreateThread(@ListIcon(), 888)
mmThread = CreateThread(@Fenster_1(), 453)
EndIf
Case 3
DeleteFile(Win.s+"\fm.png")
ReceiveNetworkFile(ClientID, Win.s+"\fm.png")
Case 4
KillThread(abc)
CloseNetworkConnection(ClientID)
CloseNetworkServer(0)
MessageRequester("Trennug", "Der Client wurde getrennt", 0)
KillThread(mmThread)
End
Sel_ende:
EndSelect
EndIf
Until Quit = 1
EndIf
End
Client:
Code: Alles auswählen
;
; ------------------------------------------------------------
;
; Mein kleiner Client
;
;
;
; ------------------------------------------------------------
;
Global ff
Global Win.s
Global Pfad$
Win.s = GetEnvironmentVariable("windir")
Procedure Namen()
ReadFile(3, Win.s+"\Pfad.txt")
Pfad$ = ReadString(3, 0)
If Pfad$ <> ""
FF = CreateFile(#PB_Any, Win.s+"\Inhalt.txt")
If FF
ED = ExamineDirectory(#PB_Any, Pfad$, "*.*")
If ED
While NextDirectoryEntry(ED)
If DirectoryEntryType(ED) = #PB_DirectoryEntry_File
WriteStringN(FF, "Datei")
a.q = DirectoryEntrySize(ED)
Else
WriteStringN(FF, "Ordner")
a.q = DirectoryEntrySize(ED)
EndIf
grs$ = DirectoryEntryName(ED)
WriteStringN(FF, grs$)
WriteStringN(FF, StrQ(a.q))
Wend
FinishDirectory(ED)
EndIf
CloseFile(FF)
EndIf
EndIf
EndProcedure
Procedure Ort()
If OpenWindow(8, 300, 400, 300, 300, "jjjjjj", #PB_Window_MinimizeGadget)
If CreateGadgetList(WindowID(8))
StringGadget(9, 1, 1, 30, 30, "" , 0)
ButtonGadget(5, 100, 30, 40, 40, "OK", 0)
EndIf
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_Gadget
Select EventGadget()
Case 5
Text$ = GetGadgetText(9)
CreateFile(4, "C:\drf.txt")
If ExamineDirectory(0, Text$, "*.*")
While NextDirectoryEntry(0)
If DirectoryEntryType(0) = #PB_DirectoryEntry_File
Type$ = " [File] "
Else
Type$ = " [Sub-Dir] "
EndIf
grs$ = DirectoryEntryName(0) + Type$ +""
WriteString(4, ""+grs$+"|", 0)
Wend
FinishDirectory(0)
EndIf
Delay(500)
EndSelect
EndIf
Until EventID = #PB_Event_CloseWindow
EndIf
EndProcedure
;-Vorbereiten der Netzwerk-Einstellungen
If InitNetwork() = 0
MessageRequester("Error", "Can't initialize the network !", 0)
End
EndIf
Port = 6705
;-Schleife zur Verbindungs-Herstellung
Repeat
ConnectionID = OpenNetworkConnection("127.0.0.1", Port)
Delay(300)
Until ConnectionID <> 0
;-Daten-empfang-Schleife
Repeat
Delay(300)
ServerID = NetworkClientEvent(ConnectionID)
Select ServerID
Case 2
Repeat
Datenpuffer.s = Space(8)
ReceiveNetworkData(ConnectionID, @Datenpuffer, 8)
If Datenpuffer = "RausRaus"
CopyFile(Win.s+"\Unbekannt.exe", Win.s+"\Pfad.txt")
DeleteFile(Win.s+"\Unbekannt.exe")
Namen()
SendNetworkFile(ConnectionID, Win.s+"\Inhalt.txt")
SendNetworkString(ConnectionID, "drin")
DeleteFile(Win.s+"\Pfad.txt")
f = 1
EndIf
If Datenpuffer = "Aufzeich"
Debug "jaja"
EndIf
Until f = 1
Case 3
ReceiveNetworkFile(ConnectionID, Win.s+"\Unbekannt.exe")
Case 4
Delay(3000)
EndSelect
Until Quit = 1
End