Here's a cool trick I found for multithreading, thought many here may find it useful. $Handle1 = DllCallbackRegister("ThreadTest1", "int", "ptr") $Handle2 = DllCallbackRegister("ThreadTest2", "int", "ptr") 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 $Struct1 = DllStructCreate("Char[200];int") DllStructSetDat