Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 03:54

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[AutoIt]True Multithreading

Discussion on [AutoIt]True Multithreading within the AutoIt forum part of the Coders Den category.

Reply
 
Old   #1
 
FacePalmMan's Avatar
 
elite*gold: 0
Join Date: Jan 2013
Posts: 426
Received Thanks: 129
[AutoIt]True Multithreading

Wie der titel schon sagt möchte ich euch zeigen wie man in autoit multithreaded!
und zwar habe ich vor einiger zeit eine udf gefunden ,welche es mir erlaubt in autoit mehrere threads zu nutzen.
viele denken bestimmt ,dass es kein richtiges multithreading ist und das script durch funktionen wie msgbox und winwait(-active,-close,-notactive) trotzdem pausiert wird ,was aber nicht stimmt.
Hier mal ein kleines beispiel:
Code:
$Handle1 = DllCallbackRegister("ThreadTest1", "int", "ptr")
$Handle2 = DllCallbackRegister("ThreadTest2", "int", "ptr")
$Struct1 = DllStructCreate("Char[200];int")
DllStructSetData($Struct1, 1, 10)
CreateThread($Handle1, $Struct1)
$Struct2 = DllStructCreate("Char[200];int")
DllStructSetData($Struct2, 1, 10)
CreateThread($Handle2, $Struct2)
MsgBox(0x40, "Thread 1", "Default Thread")

Func CreateThread($Handle, $struct)
	$return = DllCall("kernel32.dll", "hwnd", "CreateThread", "ptr", 0, "dword", 0, "long", DllCallbackGetPtr($Handle), "ptr", DllStructGetPtr($struct), "long", 0, "int*", 0)
	Return $return[0]
EndFunc

Func ThreadTest1($x)
	MsgBox(0x40, "Thread 2", "Added Thread #1")
EndFunc ;==>_ThreadStart
Func ThreadTest2($y)
	MsgBox(0x40, "Thread 3", "Added Thread #2")
EndFunc ;==>_ThreadStart
Wie das funktioniert:
erst benutzt man die DllCallbackRegister funktion um die handle der aufzurufenden funktion rauszubekommen.
danach erstellt man mit DllStructCreate eine Struktur ,in welche man (nicht notwendiger weise) in das element 1 den wert 10 reinschreibt.
wenn man diese sachen gemacht hat ,kann man mit CreateThread die im DllCallbackRegister eingegebene funktion aufrufen lassen.
FacePalmMan is offline  
Old 07/28/2013, 15:46   #2

 
elite*gold: 64
Join Date: May 2011
Posts: 1,229
Received Thanks: 854
Und wo sind die Credits?
Weil das Script dir auch nicht gehört.
Das ist ein c&p script.
BladeTiger12 is offline  
Old 07/28/2013, 15:53   #3
 
Fl00d3R's Avatar
 
elite*gold: 12
Join Date: Jun 2012
Posts: 2,049
Received Thanks: 138
Außerdem ist das nicht Multithreading sondern Multiprocessing.
Schau im Taskmanager wenn du ein "CreateThread" an die Kernel32.dll schickst.
Außerdem nur mit 32bit und ohne upx verwenbar.
wenn du jetzt einen Hilfreichen Post hinterlassen willst, erkläre lieber wie die "Threads" untereinander Daten austauschen können, oder Variablen Global auf allen Threads verfügbar gemacht werden können.
Sonst bringt das ganze ja Null.

LG Fl00d3R
Fl00d3R is offline  
Thanks
2 Users
Old 07/28/2013, 17:07   #4
 
FacePalmMan's Avatar
 
elite*gold: 0
Join Date: Jan 2013
Posts: 426
Received Thanks: 129
Quote:
Originally Posted by BladeTiger12 View Post
Und wo sind die Credits?
Weil das Script dir auch nicht gehört.
Das ist ein c&p script.
Quote:
Originally Posted by FacePalmMan View Post
und zwar habe ich vor einiger zeit eine udf gefunden ,welche es mir erlaubt in autoit mehrere threads zu nutzen.
Quote:
Originally Posted by Fl00d3R View Post
Außerdem ist das nicht Multithreading sondern Multiprocessing.
Schau im Taskmanager wenn du ein "CreateThread" an die Kernel32.dll schickst.
Außerdem nur mit 32bit und ohne upx verwenbar.
wenn du jetzt einen Hilfreichen Post hinterlassen willst, erkläre lieber wie die "Threads" untereinander Daten austauschen können, oder Variablen Global auf allen Threads verfügbar gemacht werden können.
Sonst bringt das ganze ja Null.

LG Fl00d3R
bei mir kann ich alles auf allen threads benutzen. ob ich eine variable als local oder als global deklariere macht da keinen unterschied.
"Außerdem ist das nicht Multithreading sondern Multiprocessing." wenn ich keine extra-"threads" offen habe ,zeigt mir mein taskmanager 2 threads für Autoit.exe an. wenn ich aber threads öffne zeigt es mir mehr threads an.
FacePalmMan is offline  
Old 07/28/2013, 20:11   #5
 
Shadow992's Avatar
 
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,878
Quote:
Originally Posted by Fl00d3R View Post
Außerdem ist das nicht Multithreading sondern Multiprocessing.
Schau im Taskmanager wenn du ein "CreateThread" an die Kernel32.dll schickst.
Außerdem nur mit 32bit und ohne upx verwenbar.
wenn du jetzt einen Hilfreichen Post hinterlassen willst, erkläre lieber wie die "Threads" untereinander Daten austauschen können, oder Variablen Global auf allen Threads verfügbar gemacht werden können.
Sonst bringt das ganze ja Null.

LG Fl00d3R
Ich bin mir nicht sicher ob man nicht auch Variablrn normal benutzen kann, selbst wenn man es nicht kann, wären NamedPipes eine Lösung.

Und so wie das für mich aussieht ist das MultiThreading und nicht MultiProcessing.
Für MultiProcessing müsste man CreateProcess benutzen.
Shadow992 is offline  
Thanks
1 User
Old 07/28/2013, 23:07   #6
 
lolkop's Avatar
 
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
das ganze wurde hier schon sehr oft diskutiert... ein beinahe identischer code wurde zb vor ca 4 jahren schoneinmal gepostet...

leider ist das ganze sehr instabil und schwer überwachbar, was am ende für mehr probleme als nutzen sorgt...

wirklichen nutzen kann man meines erachtens hierraus keinen ziehen.
lolkop is offline  
Thanks
1 User
Old 07/28/2013, 23:43   #7
 
Shadow992's Avatar
 
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,878
Quote:
Originally Posted by lolkop View Post
das ganze wurde hier schon sehr oft diskutiert... ein beinahe identischer code wurde zb vor ca 4 jahren schoneinmal gepostet...

leider ist das ganze sehr instabil und schwer überwachbar, was am ende für mehr probleme als nutzen sorgt...

wirklichen nutzen kann man meines erachtens hierraus keinen ziehen.
Jop AutoIt wurde leider nie Thread-safe gemacht, daher ist Multithreading wohl ohne größere Änderungen am AutoIt-Interpret nicht möglich.
Shadow992 is offline  
Thanks
1 User
Old 07/29/2013, 21:43   #8
 
FacePalmMan's Avatar
 
elite*gold: 0
Join Date: Jan 2013
Posts: 426
Received Thanks: 129
stimmt. autoit wurde nicht für multithreading gemacht. ich hab da eine etwas bekloppte idee. und zwar:
was wenn wir autoit multithreadingfähig machen? gucken wie andere sprachen das mit dem multithreading machen , gucken was autoit fehlt um multithreaden zu können und anschließend diese einzelnen sachen zum script hinzufügen.
FacePalmMan is offline  
Old 07/29/2013, 23:43   #9
 
Shadow992's Avatar
 
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,878
Quote:
Originally Posted by FacePalmMan View Post
stimmt. autoit wurde nicht für multithreading gemacht. ich hab da eine etwas bekloppte idee. und zwar:
was wenn wir autoit multithreadingfähig machen? gucken wie andere sprachen das mit dem multithreading machen , gucken was autoit fehlt um multithreaden zu können und anschließend diese einzelnen sachen zum script hinzufügen.
Da hast du genau 2 Möglichkeiten das zu machen.
1. Irgendwie an den Source kommen, da AutoIt nicht mehr Open-Source ist.
2. Heftige Reverse Engineer-Analyse

Beides sehr schwer bzw. umständlich, wird also so schnell nichts.
Die einfachste Methode ist immer noch NamedPipes mit mehreren Proezssen zu nutzen.
Shadow992 is offline  
Thanks
1 User
Reply


Similar Threads Similar Threads
************** true buddy true BOT for aion
10/09/2009 - Aion Hacks, Bots, Cheats & Exploits - 14 Replies
My friend has Aionbuddy Aion Bot • Index page its the korean bot EVERYONE is talking about but No ONE has but he does its 15 usd a month its expensive yes but watch the short video he made I use this thing and WOWOWOW. Aionbuddy Aion Bot • Index page and you can msn him and email him to buy it =)



All times are GMT +1. The time now is 03:55.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.