Что нового

В каких случаях лучше использовать UDF (#Include)

vovsla

Осваивающий
Сообщения
553
Репутация
26
я может чё не понимаю, но о каком огороде идёт речь? когда я использую #Include <process.au3>, образно говоря я просто добавляю в свой скрипт код файла process.au3, всё равно что я бы скопировал из файла process.au3 функцию
Func _RunDOS($sCommand)
Local $nResult = RunWait(@ComSpec & " /C " & $sCommand, "", @SW_HIDE)
Return SetError(@error, @extended, $nResult)
EndFunc ;==>_RunDOS

естественно в мой скрипт вставляется не только эта функция, а всё содержимое файла, но как это влияет на его работу?
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
622
Vovsla
ну дык вставляй, в чем проблема? :smile:
только что это даст? лучше скрипт начнет запускаться? :rofl:
и еще, обрамляй код тэгами ;)
 
Автор
V

vovsla

Осваивающий
Сообщения
553
Репутация
26
я просто хочу понять, в чём причина неохотного включения дополнительных библиотек? просто хочу разобраться чисто для себя, может там что-то начинает работать через опу, а я и знать не буду...
 
Автор
V

vovsla

Осваивающий
Сообщения
553
Репутация
26
ответ 16 - А зачем, тут же ещё нужно подключать библиотеку... тем более встроенными средствами надёжнее.

ответ 18 - это можно заменить одной строкой и без привлечения дополнительной либы

ответ 21 - чтобы не городить огород
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
622
Vovsla сказал(а):
в чём причина неохотного включения дополнительных библиотек
ну я за себя уже сказал :smile: не хочу городить огород. лично я использую дополнительные либы если только без них никак, либо польза от их использования превосходит убыток от времени потраченную на реализацию аналогичной своей конструкции.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,716
Ничего плохого в #Include <...> нет. Просто зачем использовать дополнительные средства, когда можно обойтись AutoIt функциями. Родные функций как правило работают быстрее и надежнее (зависит от того, кто писал) пользовательских. Другое дело, если в AutoIt нет необходимой функции. Тогда подключаем соответствующую библиотеку и радуемся жизни. Например, получить размеры окна с названием "AutoIt" можно так:

Код:
#Include <WinAPI.au3>

$hWnd = _WinAPI_FindWindow('CabinetWClass', 'AutoIt')
$tRect = _WinAPI_GetWindowRect($hWnd)
$Width = DllStructGetData($tRect, 3) - DllStructGetData($tRect, 1)
$Height = DllStructGetData($tRect, 4) - DllStructGetData($tRect, 2)


Но зачем, когда для этого есть специальная функция:

Код:
$Pos = WinGetPos('[TITLE:AutoIt;CLASS:CabinetWClass]')
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
622
Yashied сказал(а):
Но зачем, когда для этого есть специальная функция:
особенно неуместно, как мне кажется использование
Код:
_RunDos()

когда скрипты AutoIt можно запускать не только в cmd - окне, а просто указав имя файла интерпретатору. ;D
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,716
Согласен, но иногда (когда нужно "по быстрому") я использую ShellExecute() - родную функцию.

:smile:
 
Верх