Что нового

Окна, Диалоги Скрыть окно не имеющее кнопок управления

BlagoYar

Русь Великая, Очнись! Поднимись с колен Родная!
Сообщения
81
Репутация
-1
Есть полезная утилита Wox, но при загрузке Windows она запускается и остаётся висеть, как-будто AlwaysOnTop и пока не тыкнёшь в неё оно не исчезнет. Как только это сделаешь или перезапустишь, её опция "Скрыть при потере фокуса" не работает.
Имеет класс "HwndWrapper[Wox.exe;;cbd4673d-020b-460e-9543-da27cd95ef05]", но AutoIt не видит.
Делаю так
Код:
WinWait("Wox", "[CLASS:HwndWrapper[Wox.exe;;cbd4673d-020b-460e-9543-da27cd95ef05]")
WinClose("Wox", "[CLASS:HwndWrapper[Wox.exe;;cbd4673d-020b-460e-9543-da27cd95ef05]]")

Или пытаюсь через
Код:
ControlSend
что-то сделать, не видит, ждёт.
Не имеет собственных кнопок управления окном (закрыть, свернуть и т.д.).
Вроде как и имеет опцию запускаться в фоне, но это при запуске винды это не работает.

Можно что-то придумать?
 

Alecsis

Осваивающий
Сообщения
114
Репутация
43
Привет!
Можно что-то придумать?
Если совсем по-простому, без дуракозащиты итп наворотов, то как-то так
Код:
#cs
>>>> Window <<<<
Title:    Wox
Class:    HwndWrapper[Wox.exe;;421aceab-ad3e-4197-945e-3e6dc19edbe6]
…
Примечания:
– по всем наблюдаемым признакам класс окна при каждом запуске Wox.exe разный:
  префикс «HwndWrapper[Wox.exe;;» и финальная «]» одни и те же,
  а вот GUID-подобная цепочка вида «421aceab-ad3e-4197-945e-3e6dc19edbe6» меняется
– класс окна задан рег/выражением!
#ce
;
Local Const $csWox = '[Title:Wox; RegExpClass:(?i)^HwndWrapper\x5BWox\x2Eexe;;[^\x5B]*\x5D$]' ; Ok!
Local $hWox
$hWox = WinWait($csWox)
ConsoleWrite('Handle = 0x' & Hex($hWox, 8) & @CRLF)
WinMove($hWox, '', 300, 600)  ; для отладки: 1) видим результат и 2) не нужно каждый раз перезапускать Wox
;~ WinActivate($hWox)  ; попытка активировать окно Wox
;~ Send('Notepad')     ; и что-то туда послать. Лотерея, т.к. Send() порой скользкий вариант
;~ WinClose($hWox)
Exit

Wox.png
 
Автор
BlagoYar

BlagoYar

Русь Великая, Очнись! Поднимись с колен Родная!
Сообщения
81
Репутация
-1
Если совсем по-простому, без дуракозащиты итп наворотов, то как-то так
Именно так. Паранойей не страдаю :smile:

Не совсем понимаю скрипт и почему перемещение с посылкой, но чёт не работает. Точнее работает посылка текста и перемещение, но не скрытие. Всё равно при загрузке винды появляется и пока не тыкнёшь будет висеть.
 

Alecsis

Осваивающий
Сообщения
114
Репутация
43
и почему перемещение с посылкой
просто убедиться, что окно Wox'а реагирует хоть на что-то

Вот ещё один вариант. По крайней мере у меня (под Win10 x64) работает…
Код:
Local Const $csWox = '[Title:Wox; RegExpClass:(?i)^HwndWrapper\x5BWox\x2Eexe;;[^\x5B]*\x5D$]' ; Ok!
Local $hWox
;
ConsoleWrite('Waiting for Wox window ... ' & @CRLF)
$hWox = WinWait($csWox)
ConsoleWrite('Ok, Wox handle = 0x' & Hex($hWox, 8) & @CRLF)
;
ConsoleWrite('Closing Wox window ... ' & @CRLF)
;
WinClose($hWox)       ; послать запрос на закрытие окна
WinWaitClose($hWox)   ; подождать, пока Wox м.б. что-то там делает при завершении

; проверить, закрылся на самом деле Wox или нет
;
If Not WinExists($csWox) Then
    ConsoleWrite('Ok --- Wox closed' & @CRLF)
  Else
    ConsoleWrite('Error --- failed to close Wox' & @CRLF)
EndIf
Exit

Wox2.png
 
Автор
BlagoYar

BlagoYar

Русь Великая, Очнись! Поднимись с колен Родная!
Сообщения
81
Репутация
-1
просто убедиться, что окно Wox'а реагирует хоть на что-то

Вот ещё один вариант. По крайней мере у меня (под Win10 x64) работает…
Код:
Local Const $csWox = '[Title:Wox; RegExpClass:(?i)^HwndWrapper\x5BWox\x2Eexe;;[^\x5B]*\x5D$]' ; Ok!
Local $hWox
;
ConsoleWrite('Waiting for Wox window ... ' & @CRLF)
$hWox = WinWait($csWox)
ConsoleWrite('Ok, Wox handle = 0x' & Hex($hWox, 8) & @CRLF)
;
ConsoleWrite('Closing Wox window ... ' & @CRLF)
;
WinClose($hWox)       ; послать запрос на закрытие окна
WinWaitClose($hWox)   ; подождать, пока Wox м.б. что-то там делает при завершении

; проверить, закрылся на самом деле Wox или нет
;
If Not WinExists($csWox) Then
    ConsoleWrite('Ok --- Wox closed' & @CRLF)
  Else
    ConsoleWrite('Error --- failed to close Wox' & @CRLF)
EndIf
Exit

Не ну оно ловит его, просто ж мне нужно скрыть и оставить программу работать.

Попробовал так через @SWHide], Вроде работает, Благодарю!
Код:
ShellExecute("C:\Users\BlagoYar\AppData\Local\Wox\app-1.4.1196\Wox.exe", "", "", "", @SW_HIDE)
Local Const $csWox = '[Title:Wox; RegExpClass:(?i)^HwndWrapper\x5BWox\x2Eexe;;[^\x5B]*\x5D$]' ; Ok!
Local $hWox
;
ConsoleWrite('Waiting for Wox window ... ' & @CRLF)
$hWox = WinWait($csWox)
ConsoleWrite('Ok, Wox handle = 0x' & Hex($hWox, 8) & @CRLF)
;
ConsoleWrite('Closing Wox window ... ' & @CRLF)
;
WinSetState($hWox, "" , @SW_HIDE)
;~ WinClose($hWox)       ; послать запрос на закрытие окна
;~ WinWaitClose($hWox)   ; подождать, пока Wox м.б. что-то там делает при завершении

; проверить, закрылся на самом деле Wox или нет
;
If Not WinExists($csWox) Then
    ConsoleWrite('Ok --- Wox closed' & @CRLF)
  Else
    ConsoleWrite('Error --- failed to close Wox' & @CRLF)
EndIf
Exit


Немного не по теме. Как изменить шрифт в au3 файлах Scite?
Общий поменял, а au3 лет так 10 назад настроил и уже не помню где это настраивается. И найти не могу.
Хотя странно комментарии в au3 уже новым шрифтом, а остальное старым.
 
Последнее редактирование:

Alecsis

Осваивающий
Сообщения
114
Репутация
43
мне нужно скрыть и оставить программу работать
Ну да, мой косяк :blush: просто опирался на код из самого первого сообщения.
Как изменить шрифт в au3 файлах Scite?
Меню OptionsOpen User Options File → там находим нечто похожее на font.monospace=font:JetBrains Mono NL Medium,size:15 и «вперёд + с гиканьем» ©
PS Это в версии SciTE имени Yashied'а. Насчёт классического SciTE — хз, но вряд ли сильно отличается
 
Автор
BlagoYar

BlagoYar

Русь Великая, Очнись! Поднимись с колен Родная!
Сообщения
81
Репутация
-1
OptionsOpen User Options File
Нашёл, немного не так
font.monospace - это типа основной и если не менять, то да, будет везде, а я ещё настраивал в этом конфиге отдельно, через
style.au3.***
Пример:
Код:
style.au3.2=fore:#000000,back:#383838,font:JetBrains Mono,size:11,notbold,notitalics,notunderlined


Спасибо ещё раз.
 
Верх