1

Тема: AHK: Gui и панель задач Windows 10

Вчера установил довольно большое обновление windows 10 v1607, после чего панель задач стала активна поверх полноэкранных приложений если активна GUI. Тут пример кода, до обновления нормально работало, сейчас даже в видеопроигрывателе имеется панель задач. В чем проблема?

	Gui, -Caption +AlwaysOnTop +Lastfound +E0x08000000
	Gui, Color, Black
	WinSet, TransColor, Black
	Gui, Font, s15
	Gui, Add, Text, cYellow, Часы
	Gui, Show, y0 x1500 NA

2

Re: AHK: Gui и панель задач Windows 10

Что значит работало нормально? В XP поверх полноэкранного приложения этот GUI не видно.
Кстати +AlwaysOnTop и +E0x08000000 противоречивые стили.

WS_EX_NOACTIVATE +E0x08000000
Окно, созданное с этим стилем, не выходит на переднего план, когда пользователь щелкает по нему. Система не выводит это окно на передний план, когда пользователь сворачивает или закрывает окно.

Чтобы активировать окно, используйте SetActiveWindow или функцию SetForegroundWindow.

Окна не отображаются на панели задач по умолчанию. Чтобы заставить окно появиться на панели задач, используйте стиль WS_EX_APPWINDOW.

3

Re: AHK: Gui и панель задач Windows 10

ypppu пишет:

Что значит работало нормально?

Это значит, что текст отображался поверх всех окон на прозрачном фоне, панель задач не активировалась. Сейчас текст отображается на прозрачном фоне, но так же активируется и панель задач. Само окно в панели задач не отображается.
Не совсем понял как это использовать.

WS_EX_NOACTIVATE +E0x08000000

4

Re: AHK: Gui и панель задач Windows 10

Sgy-x2 пишет:

отображался поверх всех окон на прозрачном фоне

И поверх полноэкранных приложений?

5

Re: AHK: Gui и панель задач Windows 10

ypppu пишет:

И поверх полноэкранных приложений?

Да.

6

Re: AHK: Gui и панель задач Windows 10

У меня код из 1го сообщения не работает поверх полноэкранных приложений. Так же, как и Диспетчер задач.

7

Re: AHK: Gui и панель задач Windows 10

ypppu
Хорошо. Подскажите как правильно?

8

Re: AHK: Gui и панель задач Windows 10

Не знаю как. Проверял в трёх приложениях что с +E0x08000000, что без него. Всё время одинаково.
В одном приложении начинаются мелькания, в другом сразу выходит из полноэкранного режима, а в третьем (медиаплеер стандартный) всё работает хорошо, но недолго: выскакивает ошибка "неисправность видеокарты".

9

Re: AHK: Gui и панель задач Windows 10

У меня так при запущенном полноэкранном окне срабатывает:

f1::
WinGet, WinHND, ID, A
Gui, +0x40000000 -0x80000000  +Owner%WinHND% -Caption +AlwaysOnTop +Lastfound
Gui, Color, Black
WinSet, TransColor, Black
Gui, Font, s15
Gui, Add, Text, cYellow, Часы
Gui, Show, y0 x1500 NA
return

10

Re: AHK: Gui и панель задач Windows 10

Malcev
У меня тоже работает нормально, спасибо.

11

Re: AHK: Gui и панель задач Windows 10

Malcev
Подскажите пожалуйста, как сделать для нескольких окон? Так как у меня сейчас первое окно закрывает все остальные.

12

Re: AHK: Gui и панель задач Windows 10

Вот так у меня для всех окон работает:

loop
{
   sleep 50
   WinGetTitle, WinTitle, % "ahk_id " DllCall("WindowFromPoint", Int,1520, Int,20)   ; 1520 и 20 координаты гуи
   if (WinTitle = A_ScriptName)
      Continue
   if (WinTitle = "FolderView") and (A_Index != 1)    ; чтобы не пропадала надпись при нажатии на show desktop
   {
      Gui, Show, y0 x1500 NA
      Continue
   }
   WinGet, WinHND, ID, A
   Gui, +Owner%WinHND% -Caption +AlwaysOnTop +Lastfound
   if (A_Index != 1)
      Continue
   Gui, Color, Black
   WinSet, TransColor, Black
   Gui, Font, s15
   Gui, Add, Text, cYellow, Часы
   Gui, Show, y0 x1500 NA
}

13

Re: AHK: Gui и панель задач Windows 10

Malcev
Подскажите пожалуйста. У меня Gui открывалась и закрывалось на одну кнопку.
Пробовал так, не работает.

watch1 = 0
watch2 = 1500
watchs = 10
wcol = Yelow

f1::
control1=0
If z {
Gui, 7:Destroy
control1=1
} Else {
	loop
	{
		sleep 50
		WinGetTitle, WinTitle, % "ahk_id " DllCall("WindowFromPoint", Int,%watch1%, Int,%watch2%)   ; 1520 и 20 координаты гуи
		if (WinTitle = A_ScriptName)
		  Continue
		if (WinTitle = "FolderView") and (A_Index != 1)    ; чтобы не пропадала надпись при нажатии на show desktop
		{
		  Gui, 7:Show, y%watch1% x%watch2% NA
		  Continue
		}
	WinGet, WinHND, ID, As
	Gui, 7:+Owner%WinHND% -Caption +AlwaysOnTop +Lastfound
	if (A_Index != 1)
	Continue
	Gui, 7:Color, Black
	WinSet, Transcolor, Black
	Gui, 7:Font, s%watchs%
	Gui, 7:Add, Text, c%wcol% w%watchs%0 center vwatch
	Gui, 7:Show, y%watch1% x%watch2% NA
	If control1=1
	Break
	}
}
z := !z
TimeUpdate:
   GuiControl, 7:, watch, %A_Hour%:%A_Min%:%A_Sec%
   SetTimer, TimeUpdate, % "-" (999 - A_MSec) + 100
Return

14

Re: AHK: Gui и панель задач Windows 10

#MaxThreadsPerHotkey 2
f1::
a := !a
loop
{
   if !a
   {
      if (A_Index != 1)
         Gui, Destroy
      return
   }
   sleep 50
   WinGetTitle, WinTitle, % "ahk_id " DllCall("WindowFromPoint", Int,1520, Int,20)   ; 1520 и 20 координаты гуи
   if (WinTitle = A_ScriptName)
      Continue
   if (WinTitle = "FolderView") and (A_Index != 1)    ; чтобы не пропадала надпись при нажатии на show desktop
   {
      Gui, Show, y0 x1500 NA
      Continue
   }
   WinGet, WinHND, ID, A
   Gui, +Owner%WinHND% -Caption +AlwaysOnTop +Lastfound
   if (A_Index != 1)
      Continue
   Gui, Color, Black
   WinSet, TransColor, Black
   Gui, Font, s15
   Gui, Add, Text, cYellow, Часы
   Gui, Show, y0 x1500 NA
}

15

Re: AHK: Gui и панель задач Windows 10

Malcev
Подскажите пожалуйста. Что значит буква "А" в команде "WinGet, WinHND, ID, A" и по каким критериям скрипт определяет главное окно? Бывают случаи, когда Gui скрывается вместе с текстовым редактором, браузером и другими приложениями. Пока не до конца понимаю почему.

Если определяется как главное окно, окно которое в данный момент активно, то может сделать "Desktop" В принципе подставил в место "А" "Desktop" Gui работаю нормально, не скрываются по кнопке свернуть и показать рабочий стол, но отображается в Alt+Tab, не сказать что это критично, но все же.

16 (изменено: Malcev, 2016-08-19 10:38:12)

Re: AHK: Gui и панель задач Windows 10

WinGet, WinHND, ID, A означает получение хендла активного окна.
Но мы его получаем только в случае если наш гуи пропадает - это показывает WindowFromPoint.
У меня на Win7 классическая тема с отключенным аэро гуи пропадает только при нажатии Show desktop.
Вам надо определить при активировании какого приложения у вас пропадает гуи и вписать его название в исключение вместе с  if (WinTitle = "FolderView").

17

Re: AHK: Gui и панель задач Windows 10

Malcev
Вычислил 3 приложения, это google chrome, notepad++ и файловый менеджер, возможно и другие, это так сказать самые ходовые. Что характерно, в зависимости какое активно, то не все могут скрывать, но зато the bat! крестиком 100% скрывает. Думаю вопрос с исключениями будет длинным, т.к. придется добавлять много приложений в исключения.
Может все таки есть возможность сделать основным окном Dekctop?

18 (изменено: Malcev, 2016-08-19 20:34:41)

Re: AHK: Gui и панель задач Windows 10

А код у вас точь-в-точь из 14 поста?

Может все таки есть возможность сделать основным окном Dekctop?

Не понимаю, что вы имеете в виду. Код в цикле проверяет, виден ли гуи и если нет, то привязывает гуи к родителю - "активному окну". У меня bat! не перекрывает. Там вообще его крестик дальше надписи "Часы" стоит.

19

Re: AHK: Gui и панель задач Windows 10

Malcev пишет:

А код у вас точь-в-точь из 14 поста?

Я как эталонный код использую именно тот код отдельно и без изменений.

Malcev пишет:

Не понимаю, что вы имеете в виду.

Я имею ввиду рабочий стол.

20

Re: AHK: Gui и панель задач Windows 10

Вряд ли это поможет.
Так попробуйте:

#MaxThreadsPerHotkey 2
f1::
a := !a
loop
{
   if !a
   {
      if (A_Index != 1)
         Gui, Destroy
      return
   }
   sleep 50
   WinGetTitle, WinTitle, % "ahk_id " DllCall("WindowFromPoint", Int,1520, Int,20)   ; 1520 и 20 координаты гуи
   if (WinTitle = A_ScriptName)
      Continue
   WinGet, WinHND, ID, A
   Gui, +Owner%WinHND% -Caption +AlwaysOnTop +Lastfound
   if (A_Index != 1)
   {
      Gui, Show, y0 x1500 NA
      Continue
   }
   Gui, Color, Black
   WinSet, TransColor, Black
   Gui, Font, s15
   Gui, Add, Text, cYellow, Часы
   Gui, Show, y0 x1500 NA
}

21

Re: AHK: Gui и панель задач Windows 10

Malcev пишет:

Вряд ли это поможет.

Не знаю, обрадую или разочарую, но так работает

22

Re: AHK: Gui и панель задач Windows 10

Я имел в виду, что не поможет делать активным окном десктоп.
В 20 коде в цикле проверяется, видно ли окно гуи и если нет, то идет команда показать окно.

23

Re: AHK: Gui и панель задач Windows 10

Осталась одна небольшая сложность, убрать окно из alt+tab. Не знаете как?

24

Re: AHK: Gui и панель задач Windows 10

Gui, +Owner%WinHND% -Caption +AlwaysOnTop +Lastfound +e0x80

25

Re: AHK: Gui и панель задач Windows 10

Malcev
Примного благодарен вам, теперь все работает отлично.

26

Re: AHK: Gui и панель задач Windows 10

Malcev
Скажите пожалуйста, что это за параметр +e0x80, и можно весь список подобных параметров?

27

Re: AHK: Gui и панель задач Windows 10

WS_EX_TOOLWINDOW
https://msdn.microsoft.com/en-us/librar … s.85).aspx