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


WinGetHandle

Получает дескриптор указанного окна.

WinGetHandle('title'[,'text'])

Параметры

title Заголовок/дескриптор/класс окна. См. заголовки и текст окон.
text [необязательный] Текст окна.

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

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

Примечания

Помните, можно использовать дескриптор окна вместо параметров title и text. После получения дескриптора окна, можно к нему обращаться, даже если его заголовок меняется.

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

См. также

WinSetTitle, WinList

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


exect=$var_h=WinGetHandle('[CLASS:#32770;REGEXPTITLE:.*\(Копирование\)]')||_ViewValues('$var_h') ;; получить дескриптор окна "Копирования" Total Commander в фоновом режиме или "очереди"

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

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

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_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=$var_handle=WinGetHandle('Безымянный~~~~Блокнот')||WinClose(Eval('var_handle')) ;; определить дескриптор окна по его заголовку и закрыть

exect=_SendM(WinGetHandle('[CLASS:AkelPad4]'),273,4157,0) ;; выделить всё в AkelPad

exect=$var_h=WinGetHandle('[CLASS:Notepad]') iconw=$var_h||TCIMG.dll,8 ;; установить окна Notepad заданную иконку (передача команде хендла окна)

exect=$var_htc=WinGetHandle('[CLASS:TTOTAL_CMD]')||_ViewValues('$var_htc') ;; получить дескриптор Total Commander

exect=$var_h=_SendM(WinGetHandle('[CLASS:TTOTAL_CMD]'),1074,1,0)||_ViewValues('$var_h') ;; получить дескриптор левой файловой панели (TC9 и выше)

exect=$var_h='0x'&Hex(_SendM(WinGetHandle('[CLASS:TTOTAL_CMD]'),1074,1,0))||_ViewValues('$var_h') ;; получить Hex дескриптор левой файловой панели (TC9 и выше)

exect=$var_h=_SendM(WinGetHandle('[CLASS:TTOTAL_CMD]'),1074,2,0)||_ViewValues('$var_h') ;; получить дескриптор правой файловой панели (TC9 и выше)

exect=$var_h='0x'&Hex(_SendM(WinGetHandle('[CLASS:TTOTAL_CMD]'),1074,2,0))||_ViewValues('$var_h') ;; получить Hex дескриптор правой файловой панели (TC9 и выше)

exect=$var_h=_SendM(WinGetHandle('[CLASS:TTOTAL_CMD]'),1074,3,0)||_ViewValues('$var_h') ;; получить дескриптор активной файловой панели (TC9 и выше)

exect=$var_h='0x'&Hex(_SendM(WinGetHandle('[CLASS:TTOTAL_CMD]'),1074,3,0))||_ViewValues('$var_h') ;; получить Hex дескриптор активной файловой панели (TC9 и выше)

exect=$var_h=_SendM(WinGetHandle('[CLASS:TTOTAL_CMD]'),1074,4,0)||_ViewValues('$var_h') ;; получить дескриптор неактивной файловой панели (TC9 и выше)

exect=$var_h='0x'&Hex(_SendM(WinGetHandle('[CLASS:TTOTAL_CMD]'),1074,4,0))||_ViewValues('$var_h') ;; получить Hex неактивной файловой панели (TC9 и выше)

exect=$var_h=_SendM(WinGetHandle('[CLASS:TTOTAL_CMD]'),1074,5,0)||_ViewValues('$var_h') ;; получить дескриптор заголовка левой файловой панели (TC9 и выше)

exect=$var_h='0x'&Hex(_SendM(WinGetHandle('[CLASS:TTOTAL_CMD]'),1074,5,0))||_ViewValues('$var_h') ;; получить Hex дескриптор заголовка левой файловой панели (TC9 и выше)

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_n=Number(WinGetHandle('[ACTIVE]'))||_ViewValues($var_n) ;; получить хендл активного окна в виде десятичного числа

exect=$var_n=Number(WinGetHandle('[ACTIVE]')) dubls=3 infow=2||TitleWindow1||attach<@$var_n> tcimg=$cm540 ;; после заголовка активного окна создать информационную строку, настройки в секции [TitleWindow1], если включена, то выключить с обновлением заголовка

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

exect=$var_htc=WinGetHandle('[CLASS:TTOTAL_CMD]')||_ViewValues('$var_htc') exect=$var_hss=DllCall('user32.dll','handle','SendMessage','hwnd',$var_htc,'uint',1074,'wparam',7,'lparam',0)[0]||_ViewValues('$var_hss') exect=$var_sss=DllCall('user32.dll','int','GetWindowTextW','hwnd',$var_hss,'wstr','''','int',4096)[2]||_ViewValues('$var_sss') ;; получить текст строки состояния левой файловой панели Total Commander

exect=$var_a=DllCall('shell32.dll','int','PickIconDlg','hwnd',WinGetHandle('[ACTIVE]'),'wstr',@SystemDir&'\User32.dll','int',1000,'int*',0)||_ViewValues($var_a) ;; пример вызова системного диалога выбора значка из заданной библиотеки значков

exect=$var_result=MsgBox(4096+64+1,Null,'Hello',0,WinGetHandle('[CLASS:TTOTAL_CMD]'))||_ViewValues($var_result) ;; пример диалога с блокировкой окна (предотвращает доступ к указанному родительскому окну, пока существует MsgBox)

exect=$var_result=MsgBox(16384+4096+64+1,Null,'Hello',0,WinGetHandle('[CLASS:AkelPad4]'))||_ViewValues($var_result) ;; пример диалога с блокировкой окна (предотвращает доступ к указанному родительскому окну, пока существует MsgBox)

exect=$var_s=FileSelectFolder('Выберите~~каталог.','"%P"',1,Null,WinGetHandle('[CLASS:TTOTAL_CMD]')) ;; диалог выбора папки с блокировкой окна (предотвращает доступ к указанному родительскому окну, пока существует диалог)

exect=$var_s=FileSaveDialog('Выберите~~файл.','"%P"','(*.*)',2,Null,WinGetHandle('[CLASS:TTOTAL_CMD]')) ;; диалог выбора сохранения файла с блокировкой окна (предотвращает доступ к указанному родительскому окну, пока существует диалог)

exect=$var_s=FileOpenDialog('Выберите~~файл.','"%P"','(*.*)',2,Null,WinGetHandle('[CLASS:TTOTAL_CMD]')) ;; диалог открытия файла с блокировкой окна (предотвращает доступ к указанному родительскому окну, пока существует диалог)

exect=$var_hwhd=WinGetHandle('[CLASS:Progman;TITLE:Program~~Manager]')||$var_hcnt=ControlGetHandle(HWnd($var_hwhd),Null,'[CLASS:SysListView32;INSTANCE:1]')||ControlHide(HWnd($var_hwhd),Null,HWnd($var_hcnt))||Sleep(2000)||ControlShow(HWnd($var_hwhd),Null,HWnd($var_hcnt)) ;; скрыть на 2 секунды значки рабочего стола (Windows 7,10)


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