Quote:
Originally Posted by Syc0n
Multi Threading ist mit AutoIt nicht möglich!
|
Ich finde wenn man wirklich keine Ahnung hat sollte man Leise sein .
Natürlich gibt es für AutoIT Multithreading (ist zwar kein Standart aber mit Dynamic Link Libraries (DLLs) lässt sich alles beheben)
Die von Xereon gepostete UDF ist kein "echtes" Multithreading , erfüllt ihren Zweck aber auch , doch wenn man umbedingt Multithreading haben will , sollte man sich die Kernel32.dll anschauen , dort gibt es folgende Funktion :
Code:
Function CreateRemoteThread
Creates a thread that runs in the virtual address space of another process.
Use the CreateRemoteThreadEx function to create a thread that runs in the virtual address space of another processor and optionally specify extended attributes.
Syntax
C++
HANDLE WINAPI CreateRemoteThread(
__in HANDLE hProcess,
__in LPSECURITY_ATTRIBUTES lpThreadAttributes,
__in SIZE_T dwStackSize,
__in LPTHREAD_START_ROUTINE lpStartAddress,
__in LPVOID lpParameter,
__in DWORD dwCreationFlags,
__out LPDWORD lpThreadId
);
Quelle : http://msdn.microsoft.com/en-us/library/ms682437(VS.85).aspx
So jetzt wird bestimmt die nächste Frage sein : "Warum benutzt dass denn keiner bzw warum gibt es dazu noch keine UDF ? "
Diese Frage lässt sich aber sehr leicht beantworten :
In der Funktion werden gewisse Sachen gefragt bzw benötigt , die sich mir AutoIT nur sehr schwer realisieren/abfragen lassen .
Beispielweise das :
Code:
lpStartAddress [in]
A pointer to the application-defined function of type LPTHREAD_START_ROUTINE to be executed by the thread and represents the starting address of the thread in the remote process. The function must exist in the remote process. For more information, see ThreadProc .
Es ist nicht gerade leicht einen Pointer mit AutoIT zu machen (finde ich)
Zudem kommt , dass wenn jetzt jemand eine UDF daraus machen würde ,dass die meisten einfach viel zu dumm wären das zu verstehen und die , die
es verstehen , sind dann höchstwarscheinlich sowieso schon am lernen von C++/C#/C/Visual Basic ...
Weil (wie ich finde) AutoIT eigentlich nur eine "Übergangssprache" ist , braucht man eigentlich auch kein Multithreading , da das den Einstieg nur unnötig erschweren würde ...