Описание функции


Eval

Возвращает значение переменной с указанным именем.

Eval('string')

Параметры

string Имя переменной

Возвращаемое значение

Успех:Возвращает значение переменной.
Ошибка:Возвращает "" (пустую строку) и устанавливает значение @error не равным 0.

Примечания

Если есть необходимость в использовании Assign() для создания или присвоения значения переменной, то, в таких ситуациях, Eval() используется для чтения значения переменной, а IsDeclared() используется для проверки её существования.

Функцию можно подключить через команду exect

См. также

Assign, IsDeclared, Execute

Примеры:
 Как создать кнопку?


exect=$var_s1='привет'||$var_s2=Eval('var'&'_'&'s1')||_ViewValues('$var_s2') ;; пример присвоения переменной $var_s2 содержимого переменной $var_s1 по её имени

exect=$var_b=Binary('0x00204060')||$var_i=IsBinary(Eval('var_b'))||_ViewValues($var_i) ;; возвращает 1 , т.к. переменная $var_b является бинарным типом данных

exect=$var_b=Binary('0x00204060')||$var_i=BinaryLen(Eval('var_b'))||_ViewValues('Размер~~в~~байтах:~~'&$var_i) ;; возвращает число байтов

exect=$var_b1=Binary('0x10203040')||$var_b2=BinaryMid(Eval('var_b1'),2,2)||_ViewValues(Eval('var_b2')) ;; возвращает 2-ой и 3-ий байты

exect=$var_b=StringToBinary('Привет!',1)||_ViewValues('$var_b')||$var_s=BinaryToString(Eval('var_b'),1)||_ViewValues('$var_s') ;; пример преобразования строки в бинарный тип ANSI и обратно

exect=$var_b=StringToBinary('Привет!',2)||_ViewValues('$var_b')||$var_s=BinaryToString(Eval('var_b'),2)||_ViewValues('$var_s') ;; пример преобразования строки в бинарный тип UTF-16 LE и обратно

exect=$var_b=StringToBinary('Привет!',3)||_ViewValues('$var_b')||$var_s=BinaryToString(Eval('var_b'),3)||_ViewValues('$var_s') ;; пример преобразования строки в бинарный тип UTF-16 BE и обратно

exect=$var_b=StringToBinary('Привет!',4)||_ViewValues('$var_b')||$var_s=BinaryToString(Eval('var_b'),4)||_ViewValues('$var_s') ;; пример преобразования строки в бинарный тип UTF-8 и обратно

exect=$var_i=10||$var_i=String($var_i)||_ViewValues(VarGetType(Eval('var_i'))) ;; пример преобразования переменной $var_i в строковый тип

exect=$var_aa=StringSplit('aa|bb|aa|cc|dd|aa|bb|ee|aa','|',2)||$var_i=IsArray(Eval('var_aa'))||_ViewValues($var_i)||$var_aa='Привет'||$var_i=IsArray(Eval('var_aa'))||_ViewValues($var_i) ;; пример проверки является переменная массивом или нет

exect=$var_n=3.14159||$var_i=IsNumber(Eval('var_n'))||_ViewValues($var_i)||$var_n='Привет'||$var_i=IsNumber(Eval('var_n'))||_ViewValues($var_i) ;; пример проверки является ли переменная числовым типом данных

exect=$var_aa=StringSplit('1|2|3|4','|',2)||$var_i=IsString(Eval('var_aa'))||_ViewValues($var_i)||$var_aa='Привет'||$var_i=IsString(Eval('var_aa'))||_ViewValues($var_i) ;; пример проверки является переменная строковым типом данных

exect=$var_x=StringSplit('1|2|3|4','|',2)||_ViewValues(VarGetType(Eval('var_x')),'Тип~~данных~~переменной~~$var_x') ;; определение типа данных

exect=$var_x=12345||_ViewValues(VarGetType(Eval('var_x')),'Тип~~данных~~переменной~~$var_x') ;; определение типа данных

exect=$var_x=12345.001||_ViewValues(VarGetType(Eval('var_x')),'Тип~~данных~~переменной~~$var_x') ;; определение типа данных

exect=$var_x='Привет!'||_ViewValues(VarGetType(Eval('var_x')),'Тип~~данных~~переменной~~$var_x') ;; определение типа данных

exect=$var_h=WinGetHandle('[CLASS:#32770;REGEXPTITLE:.*\((Копирование|Переименование/перемещение)\)]')||WinWaitClose(Eval('var_h')) infbx=InfoBox2 ;; получить дескриптор окна "Копирования" или "Переименование/перемещение" Total Commander в фоновом режиме или "очереди" + дождаться закрытия окна и выдать сообщение

exect=$var_h=WinGetHandle('[CLASS:#32770;REGEXPTITLE:.*\((Копирование|Переименование/перемещение)\)]')||WinWaitClose(Eval('var_h')) shutd=9 ;; получить дескриптор окна "Копирования" или "Переименование/перемещение" Total Commander в фоновом режиме или "очереди" + дождаться закрытия окна и выключить компьютер

exect=$var_i=Hex(PixelGetColor(0,0),6)||_ViewValues(Eval('var_i')) ;; возвращает цвет указанного пикселя левого верхнего угла

exect=$var_i=Hex(PixelGetColor(0,0),6)||_ViewValues(Eval('var_i'))||Opt('PixelCoordMode',0)||$var_i=Hex(PixelGetColor(0,0,'[ACTIVE]'),6)||_ViewValues(Eval('var_i')) ;; возвращает цвет указанного пикселя 1) левого верхнего угла экранные координат 2) относительно координат активного окна

exect=$var_h=WinActivate('Безымянный~~~~Блокнот')||ControlSend(Eval('var_h'),Null,'[CLASS:Edit;INSTANCE:1]','Это~~некоторый~~текст') ;; активирует окно "Блокнота" и вставляет заданный текст (он должен быть запущен)

exect=$var_handle=WinGetHandle('[CLASS:Notepad]')||$var_s=WinActive(Eval('var_handle'))?'активно':'не~~активно'||_ViewValues('$var_s') ;; проверяет активно ли окно "Блокнота"

exect=$var_handle=WinGetHandle('[CLASS:Notepad]')||$var_s=WinExists(Eval('var_handle'))?'существует':'не~~существует'||_ViewValues('$var_s') ;; проверяет существует ли окно "Блокнота"

exect=$var_handle=WinGetHandle('[CLASS:TTOTAL_CMD]')||$var_aclass=StringSplit(WinGetClassList(Eval('var_handle')),@LF)||_ViewValues($var_aclass) ;; возвращает массив всех классов элементов Total Commander

exect=$var_h=WinGetHandle('[CLASS:TTOTAL_CMD]')||$var_a=WinGetPos(Eval('var_h'))||WinMove(Eval('var_h'),Null,10,10,200,300,20)||Sleep(3000)||WinMove(Eval('var_h'),Null,$var_a[0],$var_a[1],$var_a[2],$var_a[3],20) ;; переместить окно Total Commander, через 3 секунды вернуть окно обратно

exect=$var_h=WinGetHandle('[CLASS:TTOTAL_CMD]')||WinSetOnTop(Eval('var_h'),Null,1)||Sleep(3000)||WinSetOnTop(Eval('var_h'),Null,0) ;; включить на 3 секунды состояние окна "поверх всех окон" Total Commander

exect=$var_h=WinGetHandle('[CLASS:TTOTAL_CMD]')||WinSetState(Eval('var_h'),Null,@SW_HIDE)||Sleep(3000)||WinSetState(Eval('var_h'),Null,@SW_SHOW) ;; на 3 секунды скрыть окно Total Commander

exect=$var_h=WinGetHandle('[CLASS:TTOTAL_CMD]')||WinSetTrans(Eval('var_h'),Null,192)||Sleep(3000)||WinSetTrans(Eval('var_h'),Null,255) ;; на 3 секунды сделать окно Total Commander прозрачным на 25%

exect=Run('notepad.exe')||$var_h=WinWaitActive('[CLASS:Notepad]')||ControlSend(Eval('var_h'),Null,'Edit1','привет') ;; запустить "Блокнот", дождаться активизации и ввести слово "привет"

exect=Run('notepad.exe')||$var_h=WinWaitActive('[CLASS:Notepad]')||ControlSend(Eval('var_h'),Null,'Edit1','закройте~~окно')||WinWaitClose(Eval('var_h'))||MsgBox(4096,Null,'окно~~закрыто') ;; запустить "Блокнот", дождаться закрытие окна пользователем

exect=Run('notepad.exe')||$var_h=WinWaitActive('[CLASS:Notepad]')||ControlSend(Eval('var_h'),Null,'Edit1','сверните~~окно')||WinWaitNotActive(Eval('var_h'))||MsgBox(4096,Null,'окно~~не~~активно') ;; запустить "Блокнот", дождаться когда окно не будет активным

exect=$var_handle=WinGetHandle('Безымянный~~~~Блокнот')||WinClose(Eval('var_handle')) ;; определить дескриптор окна по его заголовку и закрыть

exect=Run('notepad.exe')||$var_h=WinWait('[CLASS:Notepad]',Null,5)||IsHWnd(Eval('var_h'))?_ViewValues('Это~~дескриптор~~HWND'):_ViewValues('Это~~НЕ~~дескриптор~~HWND') ;; запустить "Блокнот" и проверить дескриптор окна на валидность

exect=$var_s=FileSelectFolder('Выберите~~каталог.','::{450D8FBA-AD25-11D0-98A8-0800361B1103}',1)||Eval('var_s')?_ViewValues('$var_s'):_Exit() ;; отображает диалог выбора папки. Если не выбрана, то выход

exect=$var_s=FileSaveDialog('Выберите~~имя.','::{450D8FBA-AD25-11D0-98A8-0800361B1103}','Скрипт(*.aut;*.au3)|Текстовый~~файл(*.ini;*.txt)',2)||Eval('var_s')?_ViewValues('$var_s'):_Exit() ;; отображает диалог сохранения файла. Если не выбран, то выход

exect=$var_s=FileOpenDialog('Выберите~~имя.','::{450D8FBA-AD25-11D0-98A8-0800361B1103}','Скрипт(*.aut;*.au3)|Текстовый~~файл(*.ini;*.txt)',2)||Eval('var_s')?_ViewValues('$var_s'):_Exit() ;; отображает диалог открытия файла. Если не выбран, то выход

start=%%COMMANDER_PATH%%\PK\PK.exe exect=$var_h=WinWaitActive('[CLASS:ThunderRT6FormDC]')||ControlSetText(Eval('var_h'),Null,'ThunderRT6TextBox1','пароль') ;; запуск программы, ожидание открытия окна и ввод текста "пароль" в заданное поле

start=%%COMMANDER_PATH%%\PK\PK.exe exect=$var_h=WinWaitActive('[CLASS:ThunderRT6FormDC]')||ControlSetText(Eval('var_h'),Null,'ThunderRT6TextBox1','пароль')||ControlClick(Eval('var_h'),Null,'ThunderRT6CommandButton3') ;; запуск программы, ожидание открытия окна и ввод текста "пароль" в заданное поле и нажатие на кнопку OK

exect=$var_h=WinActivate('[CLASS:AkelPad4]')||WinWaitActive(Eval('var_h')) ;; активировать окно AkelPad, приостановить работу утилиты, пока окно не активируется

exect=$var_h=WinGetHandle('[CLASS:AkelPad4]')||$var_n=Number(_SendM(Eval('var_h'),1222,153,0))||$var_i=$var_n=1?_SendM(Eval('var_h'),273,4256,0):0 start=%%COMMANDER_PATH%%\AkelFiles\Tools\AkelPadMin\AkelPadMin.exe||%P%N||&&procwait exect=$var_i=$var_n=1?_SendM(Eval('var_h'),273,4256,0):0 ;; открыть файл под курсором в AkelPadMin игнорируя настройку "Одна копия программы" уже запущенного AkelPad

exect=$var_handle=WinGetHandle('[CLASS:TTOTAL_CMD]')||$var_0=Assign('STRUCT_RECT',DllStructCreate(':tagRECT:'),2)+DllCall('user32.dll','bool','GetWindowRect','hwnd',Eval('var_handle'),'struct*',$STRUCT_RECT)||$var_s='Координаты~~углов~~TC:'&@CRLF&'X1:~~'&DllStructGetData($STRUCT_RECT,'Left')&@CRLF&'X2:~~'&DllStructGetData($STRUCT_RECT,'Right')&@CRLF&'Y1:~~'&DllStructGetData($STRUCT_RECT,'Top')&@CRLF&'Y2:~~'&DllStructGetData($STRUCT_RECT,'Bottom')||_ViewValues('$var_s') ;; получение координат окна Total Commander

exect=$var_b=True||$var_i=IsBool(Eval('var_b'))||_ViewValues($var_i) ;; проверяет является ли переменная булевым типом данных

exect=$var_h=WinGetHandle('[CLASS:TTOTAL_CMD]')||$var_i=IsPtr(Eval('var_h'))||_ViewValues($var_i) ;; проверяется валидность Ptr указателя

exect=$var_h=Ptr(-1)||$var_i=IsPtr(Eval('var_h'))||_ViewValues($var_i) ;; преобразует -1 в указатель

exect=$var_handle=WinClose('[CLASS:TTOTAL_CMD]')||WinWaitClose(Eval('var_handle')) infbx=||TC~~Закрыт||3||150||40 ;; закрытие Total Commander с ожиданием закрытия окна

exect=$var_s=FileOpenDialog('Выберите~~файл.','D:\','(*.*)',2)||Eval('var_s')?_ViewValues('$var_s'):_Exit() ;; отображает диалог открытия файла. Если не выбран, то выход

exect=$var_o=ObjCreate('Shell.Application')||Eval('var_o').FileRun ;; запуск диалога "Выполнить" WIN+R


© Аверин Андрей для Total Commander Image  Averin-And@yandex.ru