Viktor1703
AutoIT Гуру
- Сообщения
- 1,535
- Репутация
- 413
Конечно же это ни есть Dll потому что в другом ЯП функции с неё не вызовишь, но очень похожа...
Пример:
Файл типо Dll:
Просто компилируем 'Файл типо Dll' и по желанию сменяете расширение с exe на dll
И пример в готовой сборке.
Пример:
Код:
#Include <GUIConstantsEx.au3>
Global $Lib = @ScriptDir & "\Au3Lib.dll"
$hForm = GUICreate("AutoIt dll", 300, 200)
$hButton = GUICtrlCreateButton("Сменить Title", 20, 20, 80, 20)
GUISetState()
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $hButton
ConsoleWrite("Result = " & AutoItDllCall($Lib, "Au3Lib_SetWinTitle", $hForm, "Сменили Title") & @CRLF)
EndSwitch
WEnd
Func AutoItDllCall($iLib, $iParam1 = 0, $iParam2 = 0, $iParam3 = 0, $iParam4 = 0, $iParam5 = 0, $iParam6 = 0, $iParam7 = 0, $iParam8 = 0, $iParam9 = 0, $iParam10 = 0)
Local $Array[10], $iParam, $iPid, $iRead
For $i = 1 To UBound($Array)
$Array[$i - 1] = Eval("iParam" & $i)
Next
If IsArray($Array) Then
For $i = 0 To UBound($Array) - 1
$iParam &= ' "' & $Array[$i] & '"'
Next
$iPid = Run('"' & @AutoItExe & '" /AutoIt3ExecuteScript "' & $iLib & '"' & $iParam, "", @SW_HIDE, 2)
While 1
$iRead &= StdoutRead($iPid)
If $iRead Then ExitLoop
Sleep(10)
WEnd
If ProcessExists($iPid) Then ProcessClose($iPid)
Return $iRead
EndIf
EndFunc
Файл типо Dll:
Код:
#NoTrayIcon
If $CmdLine[0] Then
If $CmdLine[1] = "Au3Lib_SetWinTitle" Then Au3Lib_SetWinTitle($CmdLine[2], $CmdLine[3])
EndIf
Func Au3Lib_SetWinTitle($hWnd, $sText)
If Not IsHWnd($hWnd) Then $hWnd = HWnd($hWnd)
Local $Ret = DllCall("user32.dll", "bool", "SetWindowTextW", "hwnd", $hWnd, "wstr", $sText)
If @error Then Return SetError(@error, @extended, False)
ConsoleWrite($Ret[0])
EndFunc
Просто компилируем 'Файл типо Dll' и по желанию сменяете расширение с exe на dll
И пример в готовой сборке.