Что нового

[функции]вызвать и продолжить, не дожидаясь возврата

RomchegChe

Новичок
Сообщения
37
Репутация
1
Здравствуйте, Уважаемые!
Есть ли возможность запустить функцию в "фоновом режиме", то есть после запуска продолжить выполнение цикла.
Код:
Do  $msg = GUIGetMsg()
Until $msg = $GUI_EVENT_CLOSE

Не особо пока представляю как это сделать. и не нашел в поиске
 

MnM

Post-Hardcore
Сообщения
679
Репутация
90
Re: [Использование dll] запустить dll и продолжить выполнение скрипта

dll'ку запустить можно? или я ошибаюсь.
Dllcall почитайте в справке
 
Автор
R

RomchegChe

Новичок
Сообщения
37
Репутация
1
Re: [Использование dll] запустить dll и продолжить выполнение скрипта

на время вызова dll, пока она не отработает и не вернет значение, работа основного цикла прекращается. Хочется это обойти

изменил название темы
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Как вариант
Код:
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Global $hDll = 0

$Form1 = GUICreate("Form1", 183, 104, 192, 114)
$Input1 = GUICtrlCreateInput("", 30, 30, 121, 21)
$Button1 = GUICtrlCreateButton("Open Dll", 48, 66, 75, 25)
GUISetState(@SW_SHOW)


While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button1
			AdlibRegister('_LoadDll')
	EndSwitch

WEnd

Func _LoadDll()

	If Not $hDll Then
		$hDll = DllOpen('my.dll')
		If $hDll = -1 Then
			ConsoleWrite($hDll & @CR)
			GUICtrlSetData($Input1, 'ERROR (' & $hDll &')')
			$hDll = 0
			AdlibUnRegister('_LoadDll')
		Else
			ConsoleWrite($hDll & @CR)
			GUICtrlSetData($Input1, 'Open Dll (' & $hDll &')')
			GUICtrlSetData($Button1, 'Close Dll')
			AdlibUnRegister('_LoadDll')
		EndIf
	Else
		DllClose($hDll)
		$hDll = 0
		GUICtrlSetData($Input1, 'Close Dll (' & $hDll &')')
		GUICtrlSetData($Button1, 'Open Dll')
		ConsoleWrite($hDll & @CR)
		AdlibUnRegister('_LoadDll')
	EndIf
EndFunc
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Автор
R

RomchegChe

Новичок
Сообщения
37
Репутация
1
у меня основные расчеты в длл, длл моя, на Си написана, вызов примерно 15 сек занимает, на время вызова хочется что бы интерфейс обновлялся по данным из прошлого вызова.
Пока придумал только переделать длл на екзешник и писать результаты в какой нибудь текстовик, ну или типа того. Длл все таки надежнее
 
Верх