Описание функции | |
WinGetHandle |
Получает дескриптор указанного окна.
WinGetHandle('title'[,'text'])
Параметры
title | Заголовок/дескриптор/класс окна. См. заголовки и текст окон. |
text |
[необязательный] Текст окна. |
Возвращаемое значение
Успех: | Возвращает дескриптор окна. |
Ошибка: | Возвращает "" (пустую строку) и устанавливает @error равным 1, если нет окон, соответствующих критерию. |
Примечания
Помните, можно использовать дескриптор окна вместо параметров title и text. После получения дескриптора окна, можно к нему обращаться, даже если его заголовок меняется.См. также
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)