eine Multitask-udf

  • Hi,
    Ich habe vor eine Multitask UDF zuschreiben mit der es möglich ist mehrere Tasks auf einmal(dann hallt über unterschiedliche Scripte ;)) auszuführen.

    Zum verstehen des Tasks Systems:
    Du hasst in einem Script eine Schleife welche sagen wir mal veränderungen am Gui(klicke auf bottoms etc.) wahrnimmt und möchtest noch zusätzlich eine die feststellt, ob jemand auf dem Tcpserver des Scriptes connected hat. Nun könnte man es beides in eine Schleife packen aber da gibt es das Problem dass es bei seeeeehr langen scripts dann dauert bis der Gui reagiert.

    Mein Plan:
    In einem 2. Script kann man eine Endlosschleife aufstellen die versucht aus dem Gui des ersten Scriptes die Daten zu entlocken während dieser sich um den Server kümmert.

    Meine Lösung:
    bis jetzt nur 6 Funktionen:

    Spoiler anzeigen
    [autoit]


    #include-once
    #include <array.au3>
    #include <file.au3>
    Tcpstartup()
    Global $count=0,$Connect[99],$Accept[99],$Split[99]
    Tcpstartup()
    Func _MultitaskStartServer($CP=1,$Max_Tasks=99,$Multi_Server_Port=10234)
    Global $listen=TCPListen("127.0.0.1",$Multi_Server_Port)
    $Multitasks="notaktive"

    [/autoit] [autoit][/autoit] [autoit]

    If $CP=1 Then
    GUICreate("Multitask Control Pannel",250,200)
    Global $Input=GUICtrlCreateInput("",1,170,200,29)
    $Start_Func=GUICtrlCreateButton("StartFunc",200,170,50,29)
    Guisetstate()
    EndIf
    _MultitaskServerBasicStartup()
    While 1
    $msg=GUIGetMsg()
    Switch $msg
    case -3
    _MultitaskConnectionsShutdown()
    Exit
    case $Start_Func
    _MultitaskServerFunctionList(GUICtrlRead($Input),$listen)
    $Multitasks="aktive"
    EndSwitch
    If $Multitasks="aktive" then
    For $counter=0 to $count -1
    $recv=Tcprecv($Connect[$counter],999)
    If $recv <>"" then MsgBox(0,"",$recv)
    Next
    EndIf
    WEnd
    EndFunc
    Func _MultitaskServerFunctionList($data,$listen)
    $Split=StringSplit($data," ")
    If $split[0]=1 then _ArrayAdd($Split,"")
    $count=$count+1
    Random(10000,15000,1)
    If $Split[1] = "_RunMultitask" Then
    _RunMultitask()
    GUICtrlSetData($Input,"")
    EndIf
    If $Split[1]="_MultitaskConnectionsShutdown" Then
    _MultitaskConnectionsShutdown()
    GUICtrlSetData($Input,"")
    EndIf
    If $Split[1]="_MultitaskConnectionsRestart" Then
    _MultitaskConnectionsRestart()
    GUICtrlSetData($Input,"")
    EndIf
    If $Split[1]="_MultitaskDeleteAlldatabases" Then
    _MultitaskDeleteAlldatabases()
    GUICtrlSetData($Input,"")
    EndIf
    If $Split[1]="_MultitaskRewriteServerfiles" Then
    _MultitaskRewriteServerfiles($Split[2],$Split[3])
    GUICtrlSetData($Input,"")
    EndIf
    EndFunc
    Func _MultitaskServerBasicStartup($Path="MultitaskServer.ini")
    $diary=_FileListToArray(@ScriptDir,"*",2)
    If IsArray($diary) Then
    For $Counter=1 to Ubound($diary)-1
    $Port=IniRead($Path,"Ports",$diary[$Counter],"")
    If $Port<>"" Then
    Run($diary[$Counter]&"\"&$Port&".exe")
    $count=$count+1
    Do
    $Connect[$count]=TCPConnect("127.0.0.1",$Port)
    Until $Connect[$count]<>-1
    Do
    $Accept[$count]=Tcpaccept($listen)
    Until $Accept[$count]<>-1
    EndIf
    Next
    EndIf
    EndFunc
    Func _MultitaskConnectionsRestart()
    _MultitaskConnectionsShutdown()
    Global $count=0
    ;TCPStartup()
    Sleep(2000)
    _MultitaskServerBasicStartup()
    EndFunc
    Func _MultitaskConnectionsShutdown()
    For $Counter=1 to $count+2
    Tcpsend($Connect[$Counter],"Exit")
    Sleep(100)
    Next
    ;TCPShutdown()
    EndFunc
    Func _RunMultitask()
    If $Split[2]="" Then
    $diary=_FileListToArray(@ScriptDir,"*",2)
    $Split[2]="NR"&Ubound($diary)
    EndIf
    Global $to=$Split[2]
    $Port=Random(10000,15000,1)
    $path=$to&"/"&$Port
    DirCreate($to)
    FileWriteLine($Path&".au3","#include<Multitask.au3>")
    FileWriteLine($Path&".au3","#include<Array.au3>")
    FileWriteLine($Path&".au3",'Tcpstartup()')
    Filewriteline($Path&".au3",'$Port='&$Port)
    FileWriteLine($Path&".au3",'$listen=Tcplisten("127.0.0.1",$Port)')
    FileWriteLine($Path&".au3",'While 1')
    Filewriteline($Path&".au3",'$accept=Tcpaccept($listen)')
    FileWriteLine($Path&".au3",'If $accept<>-1 then Exitloop')
    FileWriteLine($Path&".au3",'Wend')
    Filewriteline($Path&".au3",'While 1')
    Filewriteline($Path&".au3",'$connect=Tcpconnect("127.0.0.1",10234)')
    FileWriteLine($Path&".au3",'If $connect<>-1 then ExitLoop')
    FileWriteLine($Path&".au3",'Wend')
    Filewriteline($Path&".au3",'While 1')
    Filewriteline($Path&".au3",'$recv=TCPRecv($accept,2048)')
    Filewriteline($Path&".au3",'If $recv="Exit" then Exit')
    Filewriteline($Path&".au3",'If $recv<>"" then')
    Filewriteline($Path&".au3",'$split=StringSplit($recv,"|")')
    Filewriteline($Path&".au3",'_ArrayDisplay($split)')
    Filewriteline($Path&".au3",'For $Linecounter=0 To Ubound($split)-1')
    Filewriteline($Path&".au3",'Execute($split[$Linecounter])')
    Filewriteline($Path&".au3",'Next')
    Filewriteline($Path&".au3",'Endif')
    Filewriteline($Path&".au3",'Wend')
    RunWait('"D:\Program Files\AutoIt3\Aut2Exe\Aut2exe.exe" "/in" '&$Path&".au3")
    Run($to&"/"&$Port&".exe")
    IniWrite("MultitaskServer.ini","Ports",$to,$Port)
    Do
    $Connect[$count]=TCPConnect("127.0.0.1",$Port)
    Until $Connect[$count]<>-1
    Do
    $Accept[$count]=Tcpaccept($listen)
    Until $Accept[$count]<>-1
    EndFunc
    Func _MultitaskDeleteAlldatabases()
    _MultitaskConnectionsShutdown()
    $diary=_FileListToArray(@ScriptDir,"*",2)
    If IsArray($diary) Then
    For $Counter=1 to $diary[0]
    DirRemove(@ScriptDir & "\" &$diary[$Counter],1)
    Next
    FileDelete("MultitaskServer.ini")
    EndIf
    EndFunc
    Func _MultitaskRewriteServerfiles($Name,$Port)
    $Gui_Rewrite=GUICreate("Rewrite Config Files",800,600)
    $Edit_Rewrite=GUICtrlCreateEdit(FileRead($name&"\"&$Port&".au3"),1,1,799,550)
    $Bottom_Rewrite=GUICtrlCreateButton("Save",1,550,300,49)
    Guisetstate()
    While 1
    $msg=Guigetmsg($Gui_Rewrite)
    Switch $msg
    Case -3
    Exit
    case $Bottom_Rewrite
    FileDelete($name&"\"&$Port&".au3")
    FileDelete($name&"\"&$Port&".exe")
    FileWrite($name&"\"&$Port&".au3",Guictrlread($Edit_Rewrite))
    RunWait('"D:\Program Files\AutoIt3\Aut2Exe\Aut2exe.exe" "/in" '&$name&"\"&$Port&".au3")
    EndSwitch
    WEnd
    EndFunc
    Func _MultitaskStartServer($CP=1,$Max_Tasks=99,$Multi_Server_Port=10234)
    $listen=TCPListen("127.0.0.1",$Multi_Server_Port)
    $Multitasks="notaktive"

    [/autoit] [autoit][/autoit] [autoit]

    If $CP=1 Then
    GUICreate("Multitask Control Pannel",250,200)
    $Input=GUICtrlCreateInput("",1,170,200,29)
    $Start_Func=GUICtrlCreateButton("StartFunc",200,170,50,29)
    Guisetstate()
    EndIf
    While 1
    $msg=GUIGetMsg()
    Switch $msg
    case -3
    Exit
    case $Start_Func
    _MultitaskServerFunctionList(GUICtrlRead($Input),$listen)
    $Multitasks="aktive"
    EndSwitch
    If $Multitasks="aktive" then
    For $counter=0 to $count -1
    $recv=Tcprecv($Connect[$counter],999)
    If $recv <>"" then MsgBox(0,"",$recv)
    Next
    EndIf
    WEnd
    EndFunc
    Func _MultitaskServerFunctionList($data,$listen)
    $Split=StringSplit($data," ")
    $count=$count+1
    Random(10000,15000,1)
    If $Split[1] = "_RunMultitask" Then
    $to=$Split[2]
    $Port=Random(10000,15000,1)
    FileWriteLine($to&".au3","#include<Multitask.au3>")
    FileWriteLine($to&".au3","#include<Array.au3>")
    FileWriteLine($to&".au3",'Tcpstartup()')
    Filewriteline($to&".au3",'$Port='&$Port)
    FileWriteLine($to&".au3",'$listen=Tcplisten("127.0.0.1",$Port)')
    FileWriteLine($to&".au3",'While 1')
    Filewriteline($to&".au3",'$accept=Tcpaccept($listen)')
    FileWriteLine($to&".au3",'If $accept<>-1 then Exitloop')
    FileWriteLine($to&".au3",'Wend')
    Filewriteline($to&".au3",'While 1')
    Filewriteline($to&".au3",'$connect=Tcpconnect("127.0.0.1",10234)')
    FileWriteLine($to&".au3",'If $connect<>-1 then ExitLoop')
    FileWriteLine($to&".au3",'Wend')
    Filewriteline($to&".au3",'While 1')
    Filewriteline($to&".au3",'$recv=TCPRecv($accept,2048)')
    Filewriteline($to&".au3",'If $recv<>"" then')
    Filewriteline($to&".au3",'$split=StringSplit($recv,"|")')
    Filewriteline($to&".au3",'_ArrayDisplay($split)')
    Filewriteline($to&".au3",'For $Linecounter=0 To Ubound($split)-1')
    Filewriteline($to&".au3",'Execute($split[$Linecounter])')
    Filewriteline($to&".au3",'Next')
    Filewriteline($to&".au3",'Endif')
    Filewriteline($to&".au3",'Wend')
    RunWait('"D:\Program Files\AutoIt3\Aut2Exe\Aut2exe.exe" "/in" '&$to&".au3")
    Run($to&".exe")
    Do
    $Connect[$count]=TCPConnect("127.0.0.1",$Port)
    Until $Connect[$count]<>-1
    Do
    $Accept[$count]=Tcpaccept($listen)
    Until $Accept[$count]<>-1
    EndIf
    EndFunc
    Func _Multitask_Create($Number=1,$mode=1)
    Local $listen,$recv,$array[99]
    TCPStartup()
    $listen=TCPListen("127.0.0.1",0000&$Number)
    While 1
    $Tcpaccept=TCPAccept($listen)
    If $Tcpaccept<>-1 then ExitLoop
    WEnd
    While 1
    $recv=TCPRecv($Tcpaccept,99999)
    If $recv<>"" Then
    $array=StringSplit($recv,"|")
    If $mode=1 Then
    For $counter in $array
    Execute($counter)
    Next
    EndIf
    If $mode=2 Then
    While 1
    For $counter in $array
    $Tcpaccept=TCPAccept($listen)
    If Tcprecv($Tcpaccept,99999)="Multitask_Stop_per_Funtion" then Exit
    Execute($counter)
    Next
    WEnd
    EndIf
    EndIf
    WEnd
    EndFunc
    Func _ExecuteFromFile($Path,$mode=1)
    Local $array[999]
    For $Linecounter=0 To _FileCountLines($Path)
    $array[$Linecounter]=FileReadline($path,$Linecounter)
    Next
    If $mode=1 Then
    For $Linecounter=0 To _FileCountLines($Path)
    Execute($array[$Linecounter])
    Next
    EndIf
    if $mode=2 Then
    While 1
    For $Linecounter=0 To _FileCountLines($Path)
    Execute($array[$Linecounter])
    Next
    Wend
    EndIf
    EndFunc
    Func _Multitask_Send($msg,$Number=1)
    Tcpstartup()
    Local $connect=TCPConnect("127.0.0.1",0000&$Number)
    Sleep(2000)
    TCPSend($Connect,$msg)
    EndFunc
    Func _Multitask_Stop($Number=1)
    $connect=TCPConnect("127.0.0.1",0000&$Number)
    TCPSend($connect,"Multitask_Stop_per_Funtion")
    EndFunc
    Func _Multitask_CreateSingleTask($Function,$mode=2,$used4_Multiclient=0,$to="")
    If $to="" then $to=Random(1,10000,1)
    Local $Split=StringSplit($Function,"|")
    If $used4_Multiclient=1 then FileWriteLine($to&".au3","#include<Multitask.au3>")
    If $mode=1 then FileWriteLine($to&".au3","While 1")
    For $Linecounter=1 To UBound($Split) -1
    FileWriteLine($to&".au3",$Split[$Linecounter])
    $Split[$Linecounter]=FileReadline($to,$Linecounter)
    Next
    If $mode=1 then FileWriteLine($to&".au3","Wend")
    RunWait('"D:\Program Files\AutoIt3\Aut2Exe\Aut2exe.exe" "/in" '&$to&".au3")
    FileDelete($to&".au3")
    Run($to&".exe")
    Return $to
    EndFunc
    Func _Multitask_DeleteSingleTask($to)
    ProcessClose($to&".exe")
    FileDelete($to&".exe")
    EndFunc
    Func _Multitask_SendReply($x,$y,$reply,$Server)
    If $x=$y then TCPSend($server,$reply)
    EndFunc

    [/autoit]


    Funktion 1:
    _Multitask_Create($Number,$mode)
    $Number entspricht dem Multitask index oder dann auch dem Port den der Script für den Datenaustausch belegt.
    $mode gibt an ob die vom Start-Script gesendete Funktion nur einmal($mode=1) oder auch mehrfach($mode=2) ausgeführt werden soll.
    -->Führt eine oder Mehrere Funktionen die durch _Multitask_Send gesendet werden einmal oder fortlaufend aus.
    Funktion 2:
    Func _ExecuteFromFile($Path,$mode)
    $Path=Datei Path des "Source Codes"
    $mode=Gibt an wie oft der "Source Code" ausgeführt werden soll ob 1mal($mode=1) oder fortlaufen ($mode=2)
    -->Führt Sämmliche Funktionen die in einem Dokument abgelegt sind nacheinander aus.
    Bsp für ein Textdokument:

    Spoiler anzeigen
    [autoit]


    $davor=3-1
    $jetzt=$davor+1
    Msgbox(0,$davor,$jetzt)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Code um es in Autoit fortlaufend auszuführen:
    _ExecutefromFile("test.txt",2)

    [/autoit] [autoit][/autoit] [autoit]

    Was Passiert?
    Eine Msgbox mit dem Titel 2 und dem Text 3 erscheint immerwieder auf dem Bildschirm.

    [/autoit] [autoit][/autoit] [autoit][/autoit]

    Funktion 3:
    _Multitask_Send($msg,$Number)
    $msg=Funktionen die ausgeführt werden sollen, z.B. 'Msgbox(0,"","")|Msgbox(0,"","Hallo")'
    Info: Trennzeichen ist--> | und vor und nach den Funktionen muss ein --> ' stehen
    $Number=Die Multitask Nummer an die die Befehle gesendet werden sollen.
    -->Sendet eine Funktionsreihe welche dann von _Multitask_Create in einem anderen script ausgeführt werden.

    Funktion 4:
    _Multitask_Stop($Number)
    $Number=Multitask Nummer.
    -->bricht die Schleife in _Multitask_Create ab falls $mode auf 2 gesetzt wurde.

    Funktion 5:
    _Multitask_CreateSingleTask($Function,$mode,$to)
    $Function=Die Funktionskette die ausgeführt werden soll. Aufbau: z.b. 'Tooltip("Das ist ein Tooltip",50,50)|Sleep(5000)'
    $mode= wenn mode 1 wird die Funktionskette fortlaufend fortausgeführt. standart ist eine einmalige Ausführung.
    $to=Zwischenpfad, in dem dei Source und danach der zu ausführende .exe task liegt. Standart Pfad ist eine zufälige Zahl von 1 und 10000 mit daramgehängten.exe/.au3 .
    -->Schreibt einen Source Code in eine .au3 Datei, Compilet ihn und startet ihn.
    Info: Zeile 73: RunWait('"D:\Program Files\AutoIt3\Aut2Exe\Aut2exe.exe" "/in" '&$to&".au3")
    Hier muss euer eigener Pfad zur Aut2exe.exe sein! die Aut2exe.exe Compiliert normalerweise eure Scripte.
    Rückgabewert ist der Ort+Dateiname in der dann die .exe gespeicht werden. Das wird gebraucht für:


    Funktion 6
    _Multitask_DeleteSingleTask($to)
    $to=Pfad von _CreateSingleTask zurückgegeben.
    Macht nichtsweiter als die erstellte Singletask.exe wieder zu löschen.


    Function 7 aufwärts:
    Ich schreibe morgen die Beschreibung!
    Die Funktionen haben sich nun viel mehr meinen eigenen Bedürfnisen angepasst.
    Startet ein Script mit:
    #include<Multitask.au3>
    _MultitaskStartServer()

    Die Funktionen für den Control Pannel findet ihr in der _MultitaskServerFunctionList()
    Der Pannel übernimmt jede Arbeit von alleine.
    Neuen Server starten z.b.: _RunMultitask Servername


    So :)
    Es wird bei mir denke noch sehr viel kommen bis jetzt ca. 3 Stunden Arbeit.
    Bis jetzt kann man nur eine Funktionskette von einem anderem Script ausführen lassen. Manchmal kann es denke jetzt schon praktisch sein. Die _Executefromfile Funktion finde ich persönlich sehr nützlich :)

    wünscht mir Glück dass es was ordentliches wird :>
    Ist als 14jähriger meine erste UDF also bitte nicht wundern falls viele Rechtschreibfehler/zulange formulierungen auftreten :>

    Changelog:
    >7.November:Projektstart
    >8.November: _MultitaskCreateSingleTask und _MultitaskDeleteSingleTask hinzugefhügt
    >11. November: Großes Update Part 1/2 , ist nochnicht fertig aber ich wollte es schonmal online stellen.

    Todo:
    >Kommunikation zwischen den Schritten
    >Aufräumen des Scriptes

    Info: Script ist noch sehr unordentlich. Die FunktiosnParameter werden vorest durch Globale Variablen vergeben die sich (noch) teils überschneiten. Ich verbringen atm die meiste Zeit die mir zur verfügung steht mit dem Script. Morgen komen updates+Korrekturen.

    Mfg Bastian(Bloodykill) aka Sevenby7

    2 Mal editiert, zuletzt von Bloodykill (11. November 2010 um 22:42) aus folgendem Grund: Update

  • Hey, schön dass du das Coden willst, aber ich muss dir sagen dass es diese Funktion (für dich leider) bereits gibt ...

    [autoit]


    AdlibRegister()

    [/autoit]

    Und das mal in der Hilfe eingeben...

    Achja, was weitaus intressanter wäre: Eine MessageBox Multitasking, wobei das im endeffekt auch nur auf ner GUI beruht, aber für neulinge perfekte Ausgabe istt :P

    Es gibt sehr viele Leute, die glauben. Aber aus Aberglauben.
    - Blaise Pascal

  • Ineluki du verarschst mich grade
    Das was er macht/en will ist das gleiche wie adlibregister() !

    Ich kann 10 verschiedene prozesse zugleich per adlibregister machen -.-', oder bzw unendlich vile, wenn die geschwindigkeit dann auch noch stimmen soll *pfeif* xd

    Es gibt sehr viele Leute, die glauben. Aber aus Aberglauben.
    - Blaise Pascal

  • Hey, schön dass du das Coden willst, aber ich muss dir sagen dass es diese Funktion (für dich leider) bereits gibt ...

    [autoit]


    AdlibRegister()

    [/autoit]

    Und das mal in der Hilfe eingeben...

    Achja, was weitaus intressanter wäre: Eine MessageBox Multitasking, wobei das im endeffekt auch nur auf ner GUI beruht, aber für neulinge perfekte Ausgabe istt :P

    Testscript:

    [autoit]


    AdlibRegister("_1")
    AdlibRegister("_2")

    [/autoit][autoit][/autoit][autoit]

    Func _1()
    While 1
    MsgBox(0,"","Test1")
    WEnd
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    Func _2()
    While 1
    MsgBox(0,"","Test2")
    WEnd
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    While 1
    Sleep(500)
    WEnd

    [/autoit]

    Es wird nur die Msgbox Test1 aufgerufen und steckt dadurch in der Schleife fest ;)

    man könnte es wie du meinst z.b. für die Kontrolle des Guis so aufbauen:

    [autoit]


    $Gui=Guicreate("...",200,200)
    Guisetstate()
    AdlibRegister(Gui_Kontrolle)
    Func Gui_Kontrolle()
    If Guigetmsg=-3 then Exit
    Endfunc
    While1
    Sleep(500)
    Wend

    [/autoit]

    Arbeite mal weiter...

  • Irre ich mich oder liegst du da falsch? @Mattthias
    AdLibs sind doch eigentlich nur Zwischenabfragen die ausgeführt werden egal wo
    das eigentlich Script gerade steht. Das Script selbst (Schleife oder ähnliches) bleibt in diesem
    Moment aber stehen? Was er oben ist, genau diesen Punkt zu umgehen.

    • Offizieller Beitrag

    @Bloodykill
    Vieleicht könnte das für dich nützlich sein https://autoit.de/index.php?page=Thread&amp;threadID=20203
    Deine Threads (Scripte) müssen ja miteinander kommunizieren.

  • Falsch
    Adlib's sind ebenso Schleifen wie While, Do, For usw.
    Bloodykill das einzige was du nicht multitasken kannst sind MSGBoxen, aber damit ist dann auch schluss, übrigens würde dein letztes Script folgender maßen funktionieren (man muss adlib schon einsetzen können)

    [autoit]


    ;Sleep zu Multitasking
    $Gui = GUICreate("...", 200, 200, -1, -1)
    GUISetState(@SW_SHOW)
    AdlibRegister("Gui_Kontrolle", 1)
    While 1
    Sleep(500)
    WEnd
    Func Gui_Kontrolle()
    If GUIGetMsg() = -3 Then Exit
    EndFunc ;==>Gui_Kontrolle

    [/autoit]

    Und jetzt mal ohne Flax, sag mir pls wo das nicht geht ?!?

    Es gibt sehr viele Leute, die glauben. Aber aus Aberglauben.
    - Blaise Pascal

  • AdlibRegister erstellt keinen 2. Prozess. Es wird nur das aktuelle Skript angehalten und die Funktion aufgerufen. Der TE will eine Funktion schreiben, womit man einen Thread erstellen kann. (Vergleichbar mit der C++ Funktion CreateThread)

  • AdlibRegister erstellt keinen 2. Prozess. Es wird nur das aktuelle Skript angehalten und die Funktion aufgerufen. Der TE will eine Funktion schreiben, womit man einen Thread erstellen kann. (Vergleichbar mit der C++ Funktion CreateThread)

    Erfasst,
    Praktisch wäre es wenn du als Beispiel jetzt einfach mit Tcprecieve 100 Ports überprüfen musst.
    A: Du Überprüfst alle Ports nacheinander -->dauert
    B: Du hasst 100 Tasks von denen immer einer für einen Port zuständig ist-->schnell

    Adlib ist sicher auch gut. Hab mich ehrlichgesagt nochnich viel mit ihr beschäftigt und imemr versucht alternativen zu suchen *gg* naja ich gib mir Mühe es mit einfachsten Mitteln zu lösen :D

    Raupi
    Dafür waren die TCPServer als vorzeitige alternative später wollte ich mal schauen wies mit WindowsPipes ist ;) danke dir

  • Ahhh danke, jetzt habe ich es endlich kapiert :P
    Gut gut, viel Spaß, wobei das alles mit ner DLL & Injection einfacher wär ...

    Es gibt sehr viele Leute, die glauben. Aber aus Aberglauben.
    - Blaise Pascal

  • Greenhorn hat recht, da AutoIt-Funktionen per se nicht threadsicher sind. Prog@ndy hatte da mal schöne Beispiele, um das zu demonstrieren^^

    Ich hatte im Umfeld des ASM-tuts auch "echte" Multithreading-Programme vorgesehen. EINE Funktion, die beliebig oft während ihrer Laufzeit aufgerufen werden kann. Funktioniert einwandfrei. Allerdings spielt das dann wirklich schon auf einem anderen Stern...
    Threadsicherheit ist das Problem in AutoIt!

    Zitat

    Die Beispiele hier haben auch nichts mit Multitasking oder -Threading zu tun.

    Das kommt noch dazu :D
    http://msdn.microsoft.com/en-us/library/ms682453(VS.85).aspx

    ciao
    Andy


    "Schlechtes Benehmen halten die Leute doch nur deswegen für eine Art Vorrecht, weil keiner ihnen aufs Maul haut." Klaus Kinski
    "Hint: Write comments after each line. So you can (better) see what your program does and what it not does. And we can see what you're thinking what your program does and we can point to the missunderstandings." A-Jay

    Wie man Fragen richtig stellt... Tutorial: Wie man Script-Fehler findet und beseitigt...X-Y-Problem

    Einmal editiert, zuletzt von Andy (14. November 2010 um 17:10)

  • naja dann arbeite ich es hallt eben speziell für meine Zwecke aus um schnell Server zu starten... Wochenende viel Stress gehabt :\

    ich mach mal Thread zu und reuploade dann meine "SevenQuickServ.au3" :D