Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   Создание потока посредством Win API (http://forum.oszone.net/showthread.php?t=146024)

Oldst 23-07-2009 19:29 1175876

Создание потока посредством Win API
 
Всем привет! Пытаюсь использовать ф-цию "CreateThread" из Win API. Проблема в том что скрипт мой вылетает. Подскажите пожалуйста где у меня ошибка.
Вот мой код:
Код:

$do=DllOpen('kernel32.dll')
$thread_reg=DLLCallbackRegister ("_thread1", "ptr", "") 
Func _thread1()         
While 1                 
Beep(1000,500)                 
Sleep(500)         
WEnd         
EndFunc 
$dk=DllCall($do, 'int', 'CreateThread', 'int', 0, 'int', 0,'ptr', DllCallbackGetPtr($thread_reg), 'int',0, 'int', 0, 'int',0) 
GUICreate('',100,50) 
$lb=GUICtrlCreateLabel (@SEC,20,20,50,10) 
GUISetState() 
For $i=1 To 10         
GUICtrlSetData ($lb,@SEC)         
Sleep(1000) 
Next

Описание ф-ции "CreateThread" здесь

Yashied 23-07-2009 22:23 1176012

AutoIt не будет работать в разных патоках. Можешь не пытаться, стабильной работы не добьешься.

Oldst 23-07-2009 22:28 1176019

Т. е. Autoit в принципе не может корректно работать с этой функцией? Хотя поток все-таки создается,
сам проверял...

amel27 24-07-2009 02:19 1176137

Цитата:

Цитата Oldst
Autoit в принципе не может корректно работать с этой функцией? »

одного CreateThread() маловато будет, и DLLCallbackRegister() тут не помощник - он не сможет вернуть указатель на реальную UDF, т.к. AutoIT не является полноценным компилятором и, скорее всего, это какой-то враппер... ищите примеры на оффсайте:

Execute in a different thread. Multithreading again?

Yashied 24-07-2009 02:21 1176139

Поток создать ты конечно можешь, это WinAPI, и не зависит от AutoIt. Но вот доступ к глобальным переменным организовать не получится. Ну, в принципе можно попытаться посидеть с ассемблером, но оно того не стоит. Проще создать отдельный процесс. Хотя ... ты можешь попробывать запустить какую-нибудь WinAPI-функцию (например MessageBox()) в отдельном потоке. Теоритически, это должно работать, хотя польза от этого ~0.


Время: 04:37.

Время: 04:37.
© OSzone.net 2001-2025